上一篇: K8S系列(二)二进制部署(二)之Master节点
下一篇: K8S系列(二)二进制部署(四)之Flannal
1. Node节点是k8s集群中负责容器运行的节点,也叫Woder Node
2. Node节点通过Kubelet来完成对Docker容器的操作
3. Kube-proxy是Node节点上的一个网络代理组件,负责流量到Pod的访问及负载
请参照博主原来的文章,将node节点的Docker安装好
K8S系列(一)-kubeadm部署
kubectl create clusterrolebinding kubelet-bootstrap \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap
1. cd /opt/kubernetes/ssl ##进入master节点的证书目录
2. kubectl config set-cluster kubernetes \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://192.168.3.10:6443 \ ##master节点apiserver的地址
--kubeconfig=bootstrap.kubeconfig
3. kubectl config set-credentials kubelet-bootstrap \
--token=87a3a9036b87e70fddc84099de8324bd \ ##这个是 token.cvs的那个字符串
--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 [email protected]:/opt/kubernetes/cfg/ &&scp bootstrap.kubeconfig [email protected]:/opt/kubernetes/cfg/将文件拷贝到其他node节点
1. mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} ##每个node节点创建
2. scp /sw/kubernetes/server/bin/{kubelet,kube-proxy} [email protected]:/opt/kubernetes/bin/ &&scp /sw/kubernetes/server/bin/{kubelet,kube-proxy} [email protected]:/opt/kubernetes/bin/ ##拷贝执行文件
3. scp ~/certs/kubeapiserver/{ca*pem,server*pem} [email protected]:/opt/kubernetes/ssl/ && scp ~/certs/kubeapiserver/{ca*pem,server*pem} [email protected]:/opt/kubernetes/ssl/ ##拷贝证书
1. cd /opt/kubernetes/cfg/ ##在node1节点
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
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
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
systemctl status kubelet #来查看是否启动成功
kubectl get node
,是没有任何节点的,因为node节点需要tsl的自签申请证书,然后apiserver通过申请之后,controller-manager才会下发证书,才能加入集群kubectl get csr
,获取提交的证书验证申请,需要注意此时pendding状态就是我们node1节点刚刚提交的,并且需要记住前面那一长串的字符串kubectl certificate approve xxxx
后面输入上面的那串Name下的字符串kubelet get csr
此时我们发现刚刚的申请已经变成Approved,Issuedkubelet-client-2021-08-23-10-48-15.pem
kubelet-client-current.pem
,这样就表示自签证书已经成功kubectl get node
此时重新执行就会发现已经有了node节点的信息首先我们要去master节点生产kube-proxy的证书
1. cd ~/certs/kubeapiserver
2. cat > kube-proxy-csr.json << EOF
{
"CN": "system:kube-proxy",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Beijing",
"L": "Beijing",
"O": "k8s",
"OU": "system"
}
]
}
EOF
3. cfssl gencert -ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-profile=kubernetes \
kube-proxy-csr.json | cfssljson -bare kube-proxy ##生成证书
4. cp kube-proxy*.pem /opt/kubernetes/ssl/ ##拷贝到工作目录
5. scp /opt/kubernetes/ssl/{kube-proxy.pem,kube-proxy-key.pem} [email protected]:/opt/kubernetes/ssl/ && scp /opt/kubernetes/ssl/{kube-proxy.pem,kube-proxy-key.pem} [email protected]:/opt/kubernetes/ssl/ ##拷贝到node节点
6. cd /opt/kubernetes/ssl ##进入master节点的证书目录
7. kubectl config set-cluster kubernetes \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://192.168.3.10:6443 \ ##master节点apiserver的地址
--kubeconfig=kube-proxy.kubeconfig
8. kubectl config set-credentials kube-proxy \
--client-certificate=kube-proxy.pem \
--client-key=kube-proxy-key.pem \
--embed-certs=true \
--kubeconfig=kube-proxy.kubeconfig
9. kubectl config set-context default \
--cluster=kubernetes \
--user=kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
10. kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig ## 设置默认上下文
11. 目录下生成了kube-proxy.kubeconfig文件
12. scp kube-proxy.kubeconfig [email protected]:/opt/kubernetes/cfg/ &&scp kube-proxy.kubeconfig [email protected]:/opt/kubernetes/cfg/将文件拷贝到其他node节点
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
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
systemctl daemon-reload
systemctl start kube-proxy
systemctl enable kube-proxy
systemctl status kube-proxy#来查看是否启动成功
#上面步骤同样在node2节点处理一下即可
1. 按照上面步骤,我们就完成了Node节点的安装部署.
2. 但是还没完,我们还需要部署网络插件Flannal
3. 如有不对的地方欢迎指正,希望能帮到大家