前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows上使用kubectl的最佳实践

Windows上使用kubectl的最佳实践

作者头像
云云众生s
发布2024-03-31 09:00:38
1980
发布2024-03-31 09:00:38
举报
文章被收录于专栏:云云众生s云云众生s

在 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 二进制文件创建一个文件夹:
代码语言:javascript
复制
New-Item -ItemType directory -Path "C:\k"
  1. 将文件夹添加到您的 $PATH:
代码语言:javascript
复制
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\k", "User")

注意:更改在新 PowerShell 会话中生效

  1. 下载 kubectl.exe(版本应与您的集群匹配)并将其放在 C:\k 中
  2. 验证 kubectl 是否正常工作:
代码语言:javascript
复制
kubectl version --client

在公司代理后面使用 kubectl

如果您的公司使用代理服务器,您可能需要配置 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量,以便 kubectl 连接到您的集群。

代理变量 101

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

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

变量

说明

示例

NO_PROXY

应绕过代理的 IP/域(以逗号分隔)

"corp.com,10.0.0.0/8"

HTTP_PROXY

用于 HTTP 流量的代理服务器 URL

"http://proxy.corp.com:80"

HTTPS_PROXY

用于 HTTPS 流量的代理服务器 URL

"http://proxy.corp.com:443"

应在何时设置 NO_PROXY?

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

我应在何时设置 NO_PROXY?

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

推荐设置

要在通过代理发送外部流量的同时直接路由所有内部 IP:

代码语言:javascript
复制
[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. 创建集群上下文:
代码语言:javascript
复制
kubectl config set-cluster mycluster --server=https://k8sapi.corp.com:6443 --certificate-authority=./ca.crt --embed-certs
  1. 为上下文设置凭据:
代码语言:javascript
复制
kubectl config set-credentials mycluster-admin --token="<bearer token here>"
  1. 创建一个将集群和用户联系在一起的上下文:
代码语言:javascript
复制
kubectl config set-context mycluster --cluster=mycluster --user=mycluster-admin
  1. 开始使用新上下文:
代码语言:javascript
复制
kubectl config use-context mycluster

常见的 kubectl 多集群命令

代码语言:javascript
复制
# 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 来修复:

代码语言:javascript
复制
[Environment]::SetEnvironmentVariable("HOME", $env:USERPROFILE, "User")

警告:这将重置您的 kubectl 配置位置并删除现有配置

还原所有代理设置

代码语言:javascript
复制
[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 环境变量结合使用以进行动态配置。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-302,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • 需了解的关键术语
      • 为何采用此方法?
        • 要求
        • 为 PowerShell 设置 kubectl
        • 在公司代理后面使用 kubectl
          • 代理变量 101
            • 推荐设置
            • 向 kubectl 添加集群
            • 常见的 kubectl 多集群命令
            • 升级 kubectl
            • 帮助和故障排除
              • 修复 kubectl 性能缓慢
                • 还原所有代理设置
                  • 提示
                  相关产品与服务
                  多因子身份认证
                  多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档