「KUBERNETES」- 安装 kubectl 命令

  CREATED BY JENKINSBOT

版本选择

根据官网文档,“kubelet 命令的次版本号”与“集群的次版本号”最大仅能差一。比如 kubectl v1.2 能够正常操作版本 Kubernetes v1.1、v1.2、v1.3 的集群,以防止出现某些意料之外的情况。

第一步、安装命令

注意事项,通常在集群部署时我们会完成 kubectl 命令的安装,因此很少独立安装。除非需要应对某些场景,比如远程管理集群。

官方支持通过包管理器安装,但是它是 GOOGLE 源无法访问,我们使用阿里云镜像仓库:

# ----------------------------------------------------------------------------- # Debian/Ubuntu

# 尽管下载 apt-key.gpg 存在困难,但是应该尽量从官方站点下载(请勿随意使用第三方密钥)
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  FEEA9169307EA071 8B57C5C2836F4BEB

cat > /etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt-get update && apt-cache madison kubelet

apt-get install kubectl=1.20.15-00

# ----------------------------------------------------------------------------- # CentOS 7.4

cat > /etc/yum.repos.d/kubernetes-ali.repo <<EOF
[kubernetes-ali]
name=Kubernetes ALi
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

yum install -y kubectl-1.16.2

通用安装方法:

# 下载稳定版本
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

# 下载特定版本
# curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl
curl -LO https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl

# 安装命令
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl

# 检查安装版本
kubectl version --client

关于其他平台,安装也是类似的,参考 Install Tools | Kubernetes 文档

第二步、调整配置

如果要访问集群,需要使用 kubeconfig 配置文件,该文件位于 ~/.kube/config(在集群主机上),是集群初始化时创建的(手动复制):

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

配置文件 ~/.kube/config 的格式如下(通常使用 kubectl config 命令修改,无需手动编辑):

# touch $HOME/.kube/config
apiVersion: v1
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}

################################################################################
# 配置集群
################################################################################
clusters:
- cluster:
    certificate-authority-data: <ca-data>
    server: https://10.10.50.90:6443
  name: kubernetes

################################################################################
# 配置用户
################################################################################
users:
- name: kubernetes-admin
  user:
    client-certificate-data: <client-cert-data>
    client-key-data: <client-key-data>

################################################################################
# 配置上下文(要使用的用户及要访问的集群)
################################################################################
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes

第三步、验证命令

# 验证配置
# 如果配置正确,命令将返回 URL 地址,例如:Kubernetes master is running at https://10.10.50.90:6443
kubectl cluster-info

# 如果服务器返回 URL 地址,但是拒绝连接,则使用下面的命令进行排查,以检查配置文件是否正确:
kubectl cluster-info dump

配置 BASH 补全

# 首先,需要安装 bash-complete 包,因为 kubectl 依赖于它。
apt-get install bash-completion # Debian
yum install bash-completion     # CentOS

# 然后,启用 kubectl 补全
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

# 或者,将脚本放入 /etc/bash_completion.d 中
kubectl completion bash > /etc/bash_completion.d/kubectl
source /etc/bash_completion.d/kubectl

# 第一种方法,这样不用考虑 kubectl 升级的问题,它是动态加载的
# 第二种方法,在 kubectl 升级后,需要重新执行

参考 Tools Included 文档,以获取对于其他操作系统和 Shell 补全的方法。

参考文献

Install and Set Up kubectl