安装kubectl-kubernetes-1-8-6集群搭建
部署 kubectl 工具,创建 kubeconfig 文件。
kubectl 是 kubernetes 的集群管理工具,任一集群中的节点都可以通过 kubetcl 被管理。
本文是在 master节点
部署,部署成功后会生成 /root/.kube/config 文件,kubectl 就是通过这个获取 kube-apiserver 地址、证书、用户名等信息,所以这个文件需要保管好。
# 1,下载安装包
# cd
# wget https://dl.k8s.io/v1.8.6/kubernetes-client-linux-amd64.tar.gz
# tar -xzvf kubernetes-client-linux-amd64.tar.gz
# sudo cp kubernetes/client/bin/kube* /usr/local/bin/
# chmod a+x /usr/local/bin/kube*
# export PATH=/root/local/bin:$PATH
2
3
4
5
6
7
8
9
10
11
# 2,创建 / root/.kube/config
# 1,设置集群参数,–server 指定 Master 节点 ip
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://192.168.106.3:6443
2
3
4
# 2,设置客户端认证参数
kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/ssl/admin.pem \
--embed-certs=true \
--client-key=/etc/kubernetes/ssl/admin-key.pem
2
3
4
# 3,设置上下文参数
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin
2
3
# 4,设置默认上下文
kubectl config use-context kubernetes
admin.pem 证书 O 字段值为 system:masters,kube-apiserver 预定义的 RoleBinding cluster-admin 将 Group system:masters 与 Role cluster-admin 绑定,该 Role 授予了调用 kube-apiserver 相关 API 的权限。
# 3,创建 bootstrap.kubeconfig
kubelet 访问 kube-apiserver 的时候是通过 bootstrap.kubeconfig 进行用户验证。
# 1,生成 token 变量
# 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
# mv token.csv /etc/kubernetes/
2
3
4
5
6
7
# 2,设置集群参数–server 为 master 节点 ip
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://192.168.106.3:6443 \
--kubeconfig=bootstrap.kubeconfig
2
3
4
5
# 3,设置客户端认证参数
kubectl config set-credentials kubelet-bootstrap \
--token=${BOOTSTRAP_TOKEN} \
--kubeconfig=bootstrap.kubeconfig
2
3
# 4,设置上下文参数
# kubectl config set-context default \
--cluster=kubernetes \
--user=kubelet-bootstrap \
--kubeconfig=bootstrap.kubeconfig
2
3
4
# 5,设置默认上下文
# kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
# mv bootstrap.kubeconfig /etc/kubernetes/
2
3
# 4,创建 kube-proxy.kubeconfig
# 1,设置集群参数 –server 参数为 master ip
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://192.168.106.3:6443 \
--kubeconfig=kube-proxy.kubeconfig
2
3
4
5
6
# 2,设置客户端认证参数
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
2
3
4
5
# 3,设置上下文参数
kubectl config set-context default \
--cluster=kubernetes \
--user=kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
2
3
4
# 4,设置默认上下文
# kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
# mv kube-proxy.kubeconfig /etc/kubernetes/
2
3
设置集群参数和客户端认证参数时 –embed-certs 都为 true,这会将 certificate-authority、client-certificate 和 client-key 指向的证书文件内容写入到生成的 kube-proxy.kubeconfig 文件中;
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 的权限;
# 5,同步配置文件。
生成的 bootstrap.kubeconfig,kube-proxy.kubeconfig 文件拷贝到其它 node 节点的 / etc/kubernetes 目录下。
# scp /etc/kubernetes/kube-proxy.kubeconfig node01:/etc/kubernetes/
# scp /etc/kubernetes/bootstrap.kubeconfig node01:/etc/kubernetes/
# scp /etc/kubernetes/kube-proxy.kubeconfig node02:/etc/kubernetes/
# scp /etc/kubernetes/bootstrap.kubeconfig node02:/etc/kubernetes/
2
3
4
5