scp命令 二进制_kubenetes 集群二进制安装之安装kubectl命令行工具

文章记录下下载和配置 kubernetes 集群命令行工具 kubectl 的步骤,这个命令只需要在master节点安装就可以了。

这个工具在安装包里边就已经有了,我们需要下载对应版本里边的kubectl工具,本文记录的是kubenets 1.12.2版本。

一,下载安装包部署kubectl命令到master

wget https://dl.k8s.io/v1.12.2/kubernetes-server-linux-amd64.tar.gz

tar zxvf kubernetes-server-linux-amd64.tar.gz

cp kubernetes/server/bin/kubectl /usr/bin/

chmod a+x /usr/bin/kubectl

操作完成。

二,创建 kubectl kubeconfig 文件

export KUBE_APISERVER="https://10.1.14.21:6443"

# 设置集群参数

kubectl config set-cluster kubernetes \

--certificate-authority=/etc/kubernetes/ssl/ca.pem \

--embed-certs=true \

--server=${KUBE_APISERVER}

# 设置客户端认证参数

kubectl config set-credentials admin \

--client-certificate=/etc/kubernetes/ssl/admin.pem \

--embed-certs=true \

--client-key=/etc/kubernetes/ssl/admin-key.pem

# 设置上下文参数

kubectl config set-context kubernetes \

--cluster=kubernetes \

--user=admin

# 设置默认上下文

kubectl config use-context kubernetes

(1)admin.pem 证书 OU 字段值为 system:masters,kube-apiserver 预定义的 RoleBinding cluster-admin 将 Group system:masters 与 Role cluster-admin 绑定,该 Role 授予了调用kube-apiserver 相关 API 的权限;

(2)生成的 kubeconfig 被保存到 ~/.kube/config 文件。注意:~/.kube/config文件拥有对该集群的最高权限,请妥善保管。

三,创建 kubeconfig 文件

kubelet、kube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证和授权;kubernetes 1.4 开始支持由 kube-apiserver 为客户端生成 TLS 证书的 TLS Bootstrapping 功能,这样就不需要为每个客户端生成证书了;该功能当前仅支持为 kubelet 生成证书.

以下操作只需要在master节点上执行,生成的*.kubeconfig文件可以直接拷贝到node节点的/etc/kubernetes目录下。

1,创建 TLS Bootstrapping Token

Token可以是任意的包含128 bit的字符串,可以使用安全的随机数发生器生成。

export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')

cat > token.csv < < EOF

${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"

EOF

由于编辑器的原因,这里的箭头有问题,需注意更改。

查看token.csv内容,如正常,则将其拷贝到/etc/kubernetes/目录下

[[email protected] ~]# cat token.csv

21dff4b6cf336cb6c132855d6f6b3931,kubelet-bootstrap,10001,"system:kubelet-bootstrap"

[[email protected] ~]# cp token.csv /etc/kubernetes/

注意:在进行后续操作前请检查 token.csv 文件,确认其中的 ${BOOTSTRAP_TOKEN} 环境变量已经被真实的值替换。

BOOTSTRAP_TOKEN 将被写入到 kube-apiserver 使用的 token.csv 文件和 kubelet 使用的 bootstrap.kubeconfig 文件,如果后续重新生成了 BOOTSTRAP_TOKEN,则需要:

更新 token.csv 文件,分发到所有机器 (master 和 node)的 /etc/kubernetes/ 目录下,分发到node节点上非必需;

重新生成 bootstrap.kubeconfig 文件,分发到所有 node 机器的 /etc/kubernetes/ 目录下;

重启 kube-apiserver 和 kubelet 进程;

重新 approve kubelet 的 csr 请求;

2,创建 kubelet bootstrapping.kubeconfig 文件

cd /etc/kubernetes

export KUBE_APISERVER="https://10.1.14.21:6443"

# 设置集群参数

kubectl config set-cluster kubernetes \

--certificate-authority=/etc/kubernetes/ssl/ca.pem \

--embed-certs=true \

--server=${KUBE_APISERVER} \

--kubeconfig=bootstrap.kubeconfig

# 设置客户端认证参数

kubectl config set-credentials kubelet-bootstrap \

--token=${BOOTSTRAP_TOKEN} \

--kubeconfig=bootstrap.kubeconfig

# 设置上下文参数

kubectl config set-context default \

--cluster=kubernetes \

--user=kubelet-bootstrap \

--kubeconfig=bootstrap.kubeconfig

# 设置默认上下文

kubectl config use-context default --kubeconfig=bootstrap.kubeconfig

说明:

–embed-certs 为 true 时表示将 certificate-authority 证书写入到生成的 bootstrap.kubeconfig 文件中;

设置客户端认证参数时没有指定秘钥和证书,后续由 kube-apiserver 自动生成;

3,创建 kube-proxy kubeconfig 文件

export KUBE_APISERVER="https://10.1.14.21:6443"

# 设置集群参数

kubectl config set-cluster kubernetes \

--certificate-authority=/etc/kubernetes/ssl/ca.pem \

--embed-certs=true \

--server=${KUBE_APISERVER} \

--kubeconfig=kube-proxy.kubeconfig

# 设置客户端认证参数

kubectl config set-credentials kube-proxy \

--client-certificate=/etc/kubernetes/ssl/kube-proxy.pem \

--client-key=/etc/kubernetes/ssl/kube-proxy-key.pem \

--embed-certs=true \

--kubeconfig=kube-proxy.kubeconfig

# 设置上下文参数

kubectl config set-context default \

--cluster=kubernetes \

--user=kube-proxy \

--kubeconfig=kube-proxy.kubeconfig

# 设置默认上下文

kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig

说明:

(1)设置集群参数和客户端认证参数时 –embed-certs 都为 true,这会将 certificate-authority、client-certificate 和 client-key 指向的证书文件内容写入到生成的 kube-proxy.kubeconfig 文件中;

(2)kube-proxy.pem 证书中 CN 为 system:kube-proxy,kube-apiserver 预定义的 RoleBinding cluster-admin 将User system:kube-proxy 与 Role system:node-proxier 绑定,该 Role 授予了调用 kube-apiserver Proxy 相关 API 的权限;

4,查看这几个kubeconfig文件并将其分发到其他node节点的 /etc/kubernetes/ 目录下

[[email protected] kubernetes]# ll /etc/kubernetes/

total 16

-rw-------. 1 root root 2164 Nov 12 08:28 bootstrap.kubeconfig

-rw-------. 1 root root 6266 Nov 12 08:29 kube-proxy.kubeconfig

drwxr-xr-x. 2 root root 172 Nov 12 01:23 ssl

-rw-r--r--. 1 root root 84 Nov 12 08:20 token.csv

分发到node节点:

[[email protected] kubernetes]# for host in node01 node02 ;do scp /etc/kubernetes/*.kubeconfig $host:/etc/kubernetes/ ;done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值