Windows上运用kubectl的最佳实践

在 Windows 上设置和运用 kubectl 的综合攻略,包括处理署理、管理多个集群和晋级 kubectl。

译自Best Practices for Using kubectl on Windows,作者 Jim Angel。

概述

Kubectl 是拜访 Kubernetes 集群的中心。文档传统上专注于 Linux,此帖子提供了在 Windows 10 上运用 kubectl 的最佳实践,包括:

  • 为 PowerShell 设置 kubectl
  • 在公司署理后面运用 kubectl
  • 向 kubectl 增加集群
  • 常见的 kubectl 多集群指令
  • 晋级 kubectl
  • 毛病扫除和提示

随着 Kubernetes 1.14 宣告彻底支持 Windows 节点,现在有更多关于在 Windows 上运转 kubectl 的文档。此帖子将这些内容与实践经验相结合,以提供全面的辅导。您可以根据安排的特定设置进行调整。

需了解的要害术语

术语 阐明
kubectl 用于对 Kubernetes 集群运转指令的 CLI
context 一个友好名称下的拜访参数组(集群、用户、命名空间)
kubeconfig 包括 kubectl 用于身份验证的上下文的装备文件
署理 一个公司拥有的服务器,用于过滤和控制外部互联网拜访

为何采用此办法?

  • 无需手动编辑 kubeconfig 文件
  • 跨环境一致 kubectl 工作流
  • 简化开发人员入职
  • 每个集群和命名空间的自定义上下文

要求

  • Windows 10
  • PowerShell v5.2
  • 互联网拜访权限,用于下载 kubectl.exe

为 PowerShell 设置 kubectl

初始设置只需执行一次:

  1. 为 kubectl 二进制文件创立一个文件夹:
New-Item -ItemType directory -Path "C:k"
  1. 将文件夹增加到您的 $PATH:
[Environment]::SetEnvironmentVariable("Path", $env:Path   ";C:k", "User")

留意:更改在新 PowerShell 会话中收效

  1. 下载 kubectl.exe(版别应与您的集群匹配)并将其放在 C:k 中

  2. 验证 kubectl 是否正常工作:

kubectl version --client

如果您的公司运用署理服务器,您或许需求装备 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量,以便 kubectl 连接到您的集群。

署理变量 101

署理旨在成为一种在大型环境中规范和保护出站流量的办法。正确装备您的 kubectl / PowerShell 基于两个重要参数:

  • 用于 NO_PROXY 的内部 Kubernetes 集群 HTTPS API
  • 用于 HTTP_PROXY 和 HTTPS_PROXY 的公司署理 URL:PORT

Windows上运用kubectl的最佳实践

变量 阐明 示例
NO_PROXY 应绕过署理的 IP/域(以逗号分隔) “corp.com,10.0.0.0/8”
HTTP_PROXY 用于 HTTP 流量的署理服务器 URL proxy.corp.com:80
HTTPS_PROXY 用于 HTTPS 流量的署理服务器 URL proxy.corp.com:443

应在何时设置 NO_PROXY?

  • 如果您的集群是外部(公共)集群

我应在何时设置 NO_PROXY?

  • 如果您的集群是内部(私有)集群

引荐设置

要在经过署理发送外部流量的同时直接路由一切内部 IP:

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://proxy.corp.com:80", "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://proxy.corp.com:443", "User")
[Environment]::SetEnvironmentVariable("NO_PROXY", "localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16", "User")

重新启动 PowerShell 以使更改收效

向 kubectl 增加集群

  1. 从您的管理员那里获取集群 API 服务器 URL 和身份验证详细信息
  2. 创立集群上下文:
kubectl config set-cluster mycluster --server=https://k8sapi.corp.com:6443 --certificate-authority=./ca.crt --embed-certs
  1. 为上下文设置凭证:
kubectl config set-credentials mycluster-admin --token="<bearer token here>"
  1. 创立一个将集群和用户联络在一起的上下文:
kubectl config set-context mycluster --cluster=mycluster --user=mycluster-admin
  1. 开始运用新上下文:
kubectl config use-context mycluster

常见的 kubectl 多集群指令

# Show current context
kubectl config current-context
# Switch contexts
kubectl config use-context mycluster
# List available contexts
kubectl config get-contexts
# Set default namespace for a context
kubectl config set-context --current --namespace=dev
# Rename a context  
kubectl config rename-context old-name new-name
# Delete a context
kubectl config delete-context mycluster

晋级 kubectl

  1. 下载新的 kubectl.exe 二进制文件
  2. 替换 kubectl 目录中现有的文件(例如 C:k)

帮助和毛病扫除

修复 kubectl 功能缓慢

缓慢通常是由 kubectl 运用网络驱动器作为缓存造成的。经过覆盖 $HOME 来修复:

[Environment]::SetEnvironmentVariable("HOME", $env:USERPROFILE, "User")

正告:这将重置您的 kubectl 装备位置并删去现有装备

复原一切署理设置

[Environment]::SetEnvironmentVariable("HTTP_PROXY", $null, "Machine")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "Machine")
[Environment]::SetEnvironmentVariable("NO_PROXY", $null, "Machine")

提示

提示

  • 运用k别号而不是kubectl,办法是将二进制文件重命名为k.exe
  • 运用指令备份 kubeconfig:$env:KUBECONFIG_SAVE=$env:KUBECONFIG
  • 运用指令复原 kubeconfig:$env:KUBECONFIG=$env:KUBECONFIG_SAVE

经过此装备,您将在 Windows 上拥有一个健壮的 kubectl 设置,该设置可与公司署理和多个 Kubernetes 集群无缝协作。要害是利用上下文来安排对集群和命名空间的拜访。将其与 PowerShell 环境变量结合运用以进行动态装备。

本文在如此众生yylives.cc/)首发,欢迎大家拜访。