K8S-部署 worker 节点

说在前面:下面初始化环境工作都在 work 节点执行

环境初始化

1、修改 hostname

[root@node6 ~]# vim /etc/hostname
将规划好的 node 名称写入 hostname 文件保存即可

2、重启

[root@node6 ~]# reboot

3、关闭防火墙

[root@node6 ~]# systemctl stop firewalld
[root@node6 ~]# systemctl disable firewalld
输出:
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

4、关闭 selinux

[root@node6 ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config
[root@node6 ~]# setenforce 0

5、关闭 swap

注意:由于服务器本来配置就低,这里就不关闭 swap,在后面部署过程中忽略 swap 报错即可

[root@node6 ~]# swapoff -a  #临时
[root@node6 ~]# vim /etc/fstab    #永久
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=438d00fa-518c-4ad6-8738-a44acce033a7 /boot                   xfs     defaults        0 0
## 需要注释这一行,如果没有请忽略
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

6、时间同步

[root@node6 ~]# yum install -y ntpdate
[root@node6 ~]# ntpdate 0.rhel.pool.ntp.org
输出:
10 Aug 13:18:34 ntpdate[8380]: adjust time server 84.16.67.12 offset -0.000334 sec

7、host 绑定

注意:根据实际集群规划进行填写

[root@node6 ~]# vim /etc/hosts
192.168.1.24    master24
192.168.1.21    node21
192.168.1.22    node22
192.168.1.23    node23

安装 docker

1、配置 docker 的 yum 仓库(这里使用阿里云仓库)

[root@node6 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@node6 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、安装 docker

[root@node6 ~]# yum -y install docker-ce-19.03.7-3.el7 docker-ce-cli-19.03.7-3.el7 containerd.io

3、修改 docker cgroup driver 为 systemd

根据文档 CRI installation 中的内容,对于使用 systemd 作为 init system 的 Linux 的发行版,使用 systemd 作为 docker 的 cgroup driver 可以确保服务器节点在资源紧张的情况更加稳定,因此这里修改各个节点上 docker 的 cgroup driver 为 systemd。

[root@node6 ~]# mkdir /etc/docker    #没启动docker之前没有该目录
[root@node6 ~]# vim /etc/docker/daemon.json    #如果不存在则创建

# 把一下内容填写到 daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

4、启动 docker

[root@node6 ~]# systemctl restart docker    #启动docker
[root@node6 ~]# systemctl enable docker    #开机自启动
[root@node6 ~]# docker info |grep Cgroup #查看
输出:
Cgroup Driver: systemd

修改 docker 的默认存储

注意:如果系统空间较小,建议将 docker 的默认存储存到数据盘目录。

1、修改 docker 的默认存储

[root@node6 ~]# systemctl  stop  docker

2、转移数据到 data 路径

[root@node6 ~]# yum install rsync -y
[root@node6 ~]# rsync -avzHP /var/lib/docker /data/

3、修改配置文件

[root@node6 ~]# vim /etc/docker/daemon.json
# 将 "graph":"/data/docker" 填写到 daemon.json 文件,最终内容如下

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "graph":"/data/docker"
}

4、启动 docker

[root@node6 ~]# systemctl  start  docker

安装 kubeadm

1、配置 kubenetes 的 yum 仓库(这里使用阿里云仓库)

[root@node6 ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

[root@node6 ~]# yum makecache

2、安装 kubelet、kubectl、kubeadm

[root@node6 ~]# yum -y install kubelet-1.18.2 kubeadm-1.18.2 kubectl-1.18.2
[root@node6 ~]# rpm -aq kubelet kubectl kubeadm
输出:
kubeadm-1.18.2-0.x86_64
kubectl-1.18.2-0.x86_64
kubelet-1.18.2-0.x86_64

3、将 kubelet 加入开机启动,这里刚安装完成不能直接启动。(因为目前还没有集群还没有建立)

[root@node6 ~]# systemctl enable kubelet
输出:
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

加入 worker 节点

向集群中添加新节点,执行在kubeadm init 输出的kubeadm join命令,再在后面同样添加忽略swap报错参数。

1、配置忽略 swap 报错

[root@node6 ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

2、获取 token,需要在 master 上执行

注意:在 master 上执行

[root@master ~]# kubeadm token create

输出:
k63qvd.d4az6zu90xk8x2iy

3、获取 CA 公钥的哈希值,需要在 master 上执行

注意:在 master 上执行

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt \
| openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

输出:
832ca72d2d0a4ae23e0a122bd4406a76567471e298f27a67f877ee5189cd0c2a

4、将 node 节点加入集群 需要在 work 上执行

注意:将对应的 ip、token、哈希值替换以下指令执行,在 node 上执行

[root@node6 ~]# kubeadm join 192.168.1.41:6443 \
 --token k63qvd.d4az6zu90xk8x2iy \
 --discovery-token-ca-cert-hash sha256:832ca72d2d0a4ae23e0a122bd4406a76567471e298f27a67f877ee5189cd0c2a \
 --ignore-preflight-errors=Swap
输出:
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.15" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

支持从 Inner Harbor 拉取镜像

1、修改 docker 配置文件

[root@ecs-c024 ~]# vim /etc/docker/daemon.json

增加如下配置,地址为Harbor的地址
"insecure-registries": ["192.168.1.181:8080"]
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "graph":"/data/docker",
  "insecure-registries": ["192.168.1.181:8080"]
}

2、重启 docker

systemctl restart docker

3、测试登录 Harbor

docker login 192.168.1.181:8080 -u admin -p Harbor12345
输出:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

支持 NFS 存储

1、安装nfs和rpc

yum -y install nfs-utils rpcbind

2、启动服务和设置开启启动

[root@localhost ~]# systemctl start rpcbind    #先启动rpc服务
[root@localhost ~]# systemctl enable rpcbind   #设置开机启动
[root@localhost ~]# systemctl start nfs-server
[root@localhost ~]# systemctl enable nfs-server

3、测试客户端

注意:将 ${nfs-server} 替换为 nfs 服务器的 ip, 将 ${public} 替换为共享的路径

#安装nfs服务
[root@localhost ~]# mkdir /tmp/testnfs \
&& mount -t nfs ${nfs-server}:/${public} /tmp/testnfs \
&& echo "hello nfs" >> /tmp/testnfs/test.txt \
&& cat /tmp/testnfs/test.txt
输出:
hello nfs

4、查看服务端挂载情况

#安装nfs服务
[root@localhost ~]# showmount -e nfs-server-ip    #先启动rpc服务
输出:
Export list for 192.168.1.181:
/data/k8sdata *
posted @ 2021-10-02 22:14  yaomianwei  阅读(1168)  评论(0编辑  收藏  举报