K8S系列(二)二进制部署(三)之Node节点

7 篇文章 1 订阅
6 篇文章 0 订阅

K8S系列(二)二进制部署(三)之Node节点

上一篇: K8S系列(二)二进制部署(二)之Master节点

下一篇: K8S系列(二)二进制部署(四)之Flannal

一、 介绍

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 ##进入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 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} ##每个node节点创建
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/ ##在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

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节点加入

  1. 此时我们在Master节点 kubectl get node ,是没有任何节点的,因为node节点需要tsl的自签申请证书,然后apiserver通过申请之后,controller-manager才会下发证书,才能加入集群
    在这里插入图片描述
  2. kubectl get csr,获取提交的证书验证申请,需要注意此时pendding状态就是我们node1节点刚刚提交的,并且需要记住前面那一长串的字符串
    在这里插入图片描述
  3. kubectl certificate approve xxxx 后面输入上面的那串Name下的字符串
  4. kubelet get csr 此时我们发现刚刚的申请已经变成Approved,Issued
  5. 并且在node节点的ssl目录下会生成 kubelet-client-2021-08-23-10-48-15.pem kubelet-client-current.pem,这样就表示自签证书已经成功
  6. kubectl get node 此时重新执行就会发现已经有了node节点的信息
    在这里插入图片描述
  7. 将上述步骤重复在node2节点进行即可.

三、 部署kube-proxy

3.1 生成bootstrap.kubeconfig并拷贝到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} root@192.168.3.11:/opt/kubernetes/ssl/ && scp /opt/kubernetes/ssl/{kube-proxy.pem,kube-proxy-key.pem} root@192.168.3.12:/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 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#来查看是否启动成功
#上面步骤同样在node2节点处理一下即可

四、 总结

1. 按照上面步骤,我们就完成了Node节点的安装部署.
2. 但是还没完,我们还需要部署网络插件Flannal
3. 如有不对的地方欢迎指正,希望能帮到大家
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值