K8S系列(二)二进制部署(三)之Node节点
上一篇: K8S系列(二)二进制部署(二)之Master节点
一、 介绍
1.1 简介
1. Node节点是k8s集群中负责容器运行的节点,也叫Woder Node
2. Node节点通过Kubelet来完成对Docker容器的操作
3. Kube-proxy是Node节点上的一个网络代理组件,负责流量到Pod的访问及负载
1.2 安装Docker准备工作
请参照博主原来的文章,将node节点的Docker安装好
K8S系列(一)-kubeadm部署
二、 部署kubelet
2.1 创建Bootstrap用户
kubectl create clusterrolebinding kubelet-bootstrap \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap
2.2 生成bootstrap.kubeconfig并拷贝到node节点
1. cd /opt/kubernetes/ssl
2. kubectl config set-cluster kubernetes \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://192.168.3.10:6443 \
--kubeconfig=bootstrap.kubeconfig
3. kubectl config set-credentials kubelet-bootstrap \
--token=87a3a9036b87e70fddc84099de8324bd \
--kubeconfig=bootstrap.kubeconfig
4. kubectl config set-context default \
--cluster=kubernetes \
--user=kubelet-bootstrap \
--kubeconfig=bootstrap.kubeconfig
5. kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
6. 目录下生成了bootstrap.kubeconfig文件
7. scp bootstrap.kubeconfig root@192.168.3.11:/opt/kubernetes/cfg/ &&scp bootstrap.kubeconfig root@192.168.3.12:/opt/kubernetes/cfg/将文件拷贝到其他node节点
2.3 创建工作目录并处理执行文件
1. mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
2. scp /sw/kubernetes/server/bin/{kubelet,kube-proxy} root@192.168.3.11:/opt/kubernetes/bin/ &&scp /sw/kubernetes/server/bin/{kubelet,kube-proxy} root@192.168.3.12:/opt/kubernetes/bin/
3. scp ~/certs/kubeapiserver/{ca*pem,server*pem} root@192.168.3.11:/opt/kubernetes/ssl/ && scp ~/certs/kubeapiserver/{ca*pem,server*pem} root@192.168.3.12:/opt/kubernetes/ssl/
2.4 创建配置文件
1. cd /opt/kubernetes/cfg/
2. cp ../bin/kubelet /usr/bin
3. cat > /opt/kubernetes/cfg/kubelet.config << EOF
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 192.168.3.11 ##节点ip
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS: ["10.0.0.2"]
clusterDomain: cluster.local.
failSwapOn: false
authentication:
anonymous:
enabled: true
EOF
4. cat > /opt/kubernetes/cfg/kubelet.conf << EOF
KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=192.168.3.11 \
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
--config=/opt/kubernetes/cfg/kubelet.config \
--cert-dir=/opt/kubernetes/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"
EOF
2.5 创建服务启动文件
cat > /usr/lib/systemd/system/kubelet.service << EOF
[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/opt/kubernetes/cfg/kubelet.conf
ExecStart=/opt/kubernetes/bin/kubelet $KUBELET_OPTS
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
2.6 启动并设置开机启动
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
systemctl status kubelet
2.7 审批Node节点加入
- 此时我们在Master节点
kubectl get node ,是没有任何节点的,因为node节点需要tsl的自签申请证书,然后apiserver通过申请之后,controller-manager才会下发证书,才能加入集群 kubectl get csr ,获取提交的证书验证申请,需要注意此时pendding状态就是我们node1节点刚刚提交的,并且需要记住前面那一长串的字符串 kubectl certificate approve xxxx 后面输入上面的那串Name下的字符串kubelet get csr 此时我们发现刚刚的申请已经变成Approved,Issued- 并且在node节点的ssl目录下会生成
kubelet-client-2021-08-23-10-48-15.pem kubelet-client-current.pem ,这样就表示自签证书已经成功 kubectl get node 此时重新执行就会发现已经有了node节点的信息 - 将上述步骤重复在node2节点进行即可.
三、 部署kube-proxy
3.1 生成bootstrap.kubeconfig并拷贝到node节点
1. cd /opt/kubernetes/ssl
2. kubectl config set-cluster kubernetes \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://192.168.3.10:6443 \
--kubeconfig=kube-proxy.kubeconfig
3. kubectl config set-credentials kube-proxy \
--token=87a3a9036b87e70fddc84099de8324bd \
--kubeconfig=kube-proxy.kubeconfig
4. kubectl config set-context default \
--cluster=kubernetes \
--user=kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
5. kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
6. 目录下生成了kube-proxy.kubeconfig文件
7. scp kube-proxy.kubeconfig root@192.168.3.11:/opt/kubernetes/cfg/ &&scp kube-proxy.kubeconfig root@192.168.3.12:/opt/kubernetes/cfg/将文件拷贝到其他node节点
3.2 创建配置文件
cat > /opt/kubernetes/cfg/kube-proxy.conf << EOF
KUBE_PROXY_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=192.168.3.11 \
--cluster-cidr=10.0.0.0/24 \
--kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"
EOF
3.3 创建服务启动文件
cat > /usr/lib/systemd/system/kube-proxy.service << EOF
[Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy.conf
ExecStart=/opt/kubernetes/bin/kube-proxy $KUBE_PROXY_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
3.4 启动并设置开机启动
systemctl daemon-reload
systemctl start kube-proxy
systemctl enable kube-proxy
systemctl status kube-proxy
四、 总结
1. 按照上面步骤,我们就完成了Node节点的安装部署.
2. 但是还没完,我们还需要部署网络插件Flannal
3. 如有不对的地方欢迎指正,希望能帮到大家
|