k8s(9):k8s安装(八)部署Node组件(kubelet + kube-proxy)
一、部署 kubelet 组件
1. 从Master节点复制Kubernetes 文件到Node
#配置Node节点 [root@master-1 bin]#cd /soft [root@master-1 bin]# for i in node-1 node-2;do scp kubernetes/server/bin/kubelet kubernetes/server/bin/kube-proxy $i:/usr/local/bin/;done
2. 创建kubelet bootstrap.kubeconfig 文件
#Maste-1节点 [root@master-1 bin]# mkdir /root/config ; cd /root/config [root@master-1 bin]# cat >environment.sh<<EOFL # 创建kubelet bootstrapping kubeconfig BOOTSTRAP_TOKEN=f89a76f197526a0d4bc2bf9c86e871c3 KUBE_APISERVER="https://172.31.7.49: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 #通过 bash environment.sh获取 bootstrap.kubeconfig 配置文件。 EOFL #执行脚本 [root@master-1 bin]# sh environment.sh
3. 创建kube-proxy kubeconfig文件 (master-1)
[root@master-1 bin]# cat >env_proxy.sh<<EOF # 创建kube-proxy kubeconfig文件 BOOTSTRAP_TOKEN=f89a76f197526a0d4bc2bf9c86e871c3 KUBE_APISERVER="https://172.31.7.49: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 EOF #执行脚本 [root@master-1 bin]# sh env_proxy.sh
4. 复制kubeconfig文件与证书到所有Node节点
#将bootstrap kubeconfig kube-proxy.kubeconfig 文件复制到所有Node节点 #远程创建目录 (master-1) [root@master-1 bin]# for i in node-1 node-2;do ssh $i "mkdir -p /etc/kubernetes/{cfg,ssl}";done #复制证书文件ssl (master-1) [root@master-1 config]# for i in node-1 node-2;do scp /etc/kubernetes/ssl/* $i:/etc/kubernetes/ssl/;done #复制kubeconfig文件 (master-1) [root@master-1 bin]# cd /root/config [root@master-1 config]# for i in node-1 node-2;do scp -rp bootstrap.kubeconfig kube-proxy.kubeconfig $i:/etc/kubernetes/cfg/;done
5. 创建kubelet参数配置文件
#不同的Node节点, 需要修改IP地址 (node节点操作) [root@ node-1 bin]#cat >/etc/kubernetes/cfg/kubelet.config<<EOF kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 address: 172.31.7.44 port: 10250 readOnlyPort: 10255 cgroupDriver: cgroupfs clusterDNS: ["10.0.0.2"] clusterDomain: cluster.local. failSwapOn: false authentication: anonymous: enabled: true EOF
6. 创建kubelet配置文件
#不同的Node节点, 需要修改IP地址 #/etc/kubernetes/cfg/kubelet.kubeconfig 文件自动生成 [root@node-1 bin]#cat >/etc/kubernetes/cfg/kubelet<<EOF KUBELET_OPTS="--logtostderr=true \ --v=4 \ --hostname-override=172.31.7.44 \ --kubeconfig=/etc/kubernetes/cfg/kubelet.kubeconfig \ --bootstrap-kubeconfig=/etc/kubernetes/cfg/bootstrap.kubeconfig \ --config=/etc/kubernetes/cfg/kubelet.config \ --cert-dir=/etc/kubernetes/ssl \ --pod-infra-container-image=docker.io/kubernetes/pause:latest" EOF
7. 创建kubelet系统启动文件(node节点)
[root@node-1 bin]#cat >/usr/lib/systemd/system/kubelet.service<<EOF [Unit] Description=Kubernetes Kubelet After=docker.service Requires=docker.service [Service] EnvironmentFile=/etc/kubernetes/cfg/kubelet ExecStart=/usr/local/bin/kubelet \$KUBELET_OPTS Restart=on-failure KillMode=process [Install] WantedBy=multi-user.target EOF
8. 将kubelet-bootstrap用户绑定到系统集群角色
#master-1节点操作 [root@master-1 bin]#kubectl create clusterrolebinding kubelet-bootstrap \ --clusterrole=system:node-bootstrapper \ --user=kubelet-bootstrap
9. 启动kubelet服务(node节点)
[root@node-1 bin]#chkconfig kubelet on [root@node-1 bin]#service kubelet start [root@node-1 bin]#service kubelet status
二、服务端批准与查看CSR请求
1. 查看CSR请求
#Maste-1节点操作 [root@master1 cfg]# kubectl get csr NAME AGE REQUESTOR CONDITION node-csr-4_tHtI9Y1ZOd1V3ZF5URGT7bWuRZWOizZYgeaBiAHOY 9m40s kubelet-bootstrap Pending node-csr-bvq5buFKqAMvdJWOUjjP7hdez3xkQq5DPC4nNIL2vQs 9m37s kubelet-bootstrap Pending
2. 批准请求
[root@master-1 bin]#kubectl certificate approve node-csr-4_tHtI9Y1ZOd1V3ZF5URGT7bWuRZWOizZYgeaBiAHOY [root@master-1 bin]#kubectl certificate approve node-csr-bvq5buFKqAMvdJWOUjjP7hdez3xkQq5DPC4nNIL2vQs
三、节点重名处理
1. 如果出现节点重名, 可以先删除证书, 然后重新申请
#Master节点删除csr [root@master-1 bin]# kubectl delete csr node-csr-U4v31mc3j_xPq5n1rU2KdpyugqfFH_0g1wOC66oiu04 #Node节点删除kubelet.kubeconfig #客户端重启kubelet服务, 再重新申请证书 [root@node-1 bin]#rm -rf /etc/kubernetes/cfg/kubelet.kubeconfig
2. 查看节点状态
#所有的Node节点状态必须为Ready (master) [root@master-1 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION node-1 Ready <none> 8s v1.15.1 node-2 Ready <none> 16s v1.15.1
四、部署kube-proxy 组件
kube-proxy 运行在所有Node节点上, 监听Apiserver 中 Service 和 Endpoint 的变化情况,创建路由规则来进行服务负载均衡。
1. 创建kube-proxy配置文件
#注意修改hostname-override地址, 不同的节点则不同。 [root@node-1 ~]#cat >/etc/kubernetes/cfg/kube-proxy<<EOF KUBE_PROXY_OPTS="--logtostderr=true \ --v=4 \ --metrics-bind-address=0.0.0.0 \ --hostname-override=172.31.7.45 \ --cluster-cidr=10.0.0.0/24 \ --kubeconfig=/etc/kubernetes/cfg/kube-proxy.kubeconfig" EOF
2. 创建kube-proxy systemd unit 文件
[root@node-1 ~]#cat >/usr/lib/systemd/system/kube-proxy.service<<EOF [Unit] Description=Kubernetes Proxy After=network.target [Service] EnvironmentFile=/etc/kubernetes/cfg/kube-proxy ExecStart=/usr/local/bin/kube-proxy \$KUBE_PROXY_OPTS Restart=on-failure [Install] WantedBy=multi-user.target EOF
3. 启动kube-proxy 服务
[root@node-1 ~]#chkconfig kube-proxy on [root@node-1 ~]#service kube-proxy start [root@node-1 ~]#service kube-proxy status
posted on 2021-05-08 20:53 torotoise512 阅读(432) 评论(0) 收藏 举报
浙公网安备 33010602011771号