k8s-containerd方式创建集群

1.  安装dicker-ce源,在所有节点上执行

## 安装必要的系统工具:
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

## 添加软件源信息:
[root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo

## 查询软件包:
[root@master ~]# yum list | grep containerd
containerd.io.x86_64              1.6.8-3.1.el7           @docker-ce-stable

## 安装软件包:
[root@master ~]# yum install containerd.io -y

## 初始化默认配置:
[root@master ~]# containerd config default | tee /etc/containerd/config.toml 

## 修改containerd配置更改cgroup:
[root@master ~]# sed -i "s#SystemdCgroup\ \=\ false#SystemdCgroup\ \=\ true#g" 
/etc/containerd/config.toml 

## 修改镜像源:
[root@master ~]# sed -i "s#k8s.gcr.io#registry.aliyuncs.com/google_containers#g" 
/etc/containerd/config.toml

## 配置crictl:
[root@master ~]# vim /etc/crictl.yaml

runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false

## 重启服务:
[root@master ~]# systemctl daemon-reload

[root@master ~]# systemctl restart containerd

[root@master ~]# systemctl enable containerd

2.  验证containerd是否可用,在所有节点上执行

## 尝试拉取镜像:
[root@master ~]# crictl pull busybox

## 查看镜像:
[root@master ~]# crictl images

## 移除镜像:
[root@master ~]# crictl rmi 2bd

3.  初始化Master节点,不特殊说明只在master节点上执行

        1>.  生成配置文件:

## 生成配置文件:
[root@master ~]# kubeadm config print init-defaults | tee kubeadm.yml

## 修改配置文件,修改以下配置:
advertiseAddress: 192.168.188.113  为控制切面地址,即master地址
criSocket: unix:///var/run/containerd/containerd.sock  为containerd的socket
文件地址
name: master  master节点的主机名
imageRepository: registry.aliyuncs.com/google_containers  阿里云镜像代理地址,
否则拉取镜像会失败
kubernetesVersion: 1.24.2  当前节点的kubernetes版本

        2>.  初始化k8s集群:

## 查看所需镜像列表:
[root@master ~]# kubeadm config images list --config kubeadm.yml
registry.aliyuncs.com/google_containers/kube-apiserver:v1.24.2
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.24.2
registry.aliyuncs.com/google_containers/kube-scheduler:v1.24.2
registry.aliyuncs.com/google_containers/kube-proxy:v1.24.2
registry.aliyuncs.com/google_containers/pause:3.7
registry.aliyuncs.com/google_containers/etcd:3.5.3-0
registry.aliyuncs.com/google_containers/coredns:v1.8.6

## 拉取镜像:
[root@master ~]# kubeadm config images pull --config kubeadm.yml

## 根据配置文件启动kubeadm。初始化k8s:
[root@master ~]# kubeadm init --config=kubeadm.yml --upload-certs --v=6

        3>.  Master节点执行以下命令,这些命令在初始化时都会有提示,直接复制即可。

[root@master ~]# mkdir -p $HOME/.kube

[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

        4>.  Slave节点执行以下命令,使slave节点加入到集群中,这些命令在初始化时都会有提示,直接复制即可。

[root@slave1 ~]# kubeadm join 192.168.188.113:6443 --token abcdef.01234567
89abcdef --discovery-token-ca-cert-hash sha256:a72b0b700c87a24563b3316
7ed708a4ea99d44efb5f42efa49b338e27a4b1d38

        5>.  常用命令:

## 加入命令可以通过一下命令获取:
[root@slave1 ~]# kubeadm token create --print-join-commend

## 初始化失败可以用以下命令重置:
[root@slave1 ~]# kubeadm reset

## 查看日志:
[root@slave1 ~]# journalctl -f -u lubelet

## 查看集群节点:
[root@master ~]# kubectl get nodes

        6>.  安装网络插件:

## 没有安装网络插件之前:
[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES           AGE     VERSION
master   NotReady   control-plane   3m49s   v1.24.2
slave1   NotReady             59s     v1.24.2
slave2   NotReady             21s     v1.24.2

## 安装flannel
[root@master ~]# wget http://down.i4t.com/k8s1.24/kube-flannel.yml

## 修改kube-flannel.yml文件,根据需求修改网卡配置文件:
[root@master ~]# vim kube-flannel.yml

.......
containers:
      - name: kube-flannel
        image: rancher/mirrored-flannelcni-flannel:v0.17.0
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eth0
.......

## 执行kube-flannel.yml
[root@master ~]# kubectl apply -f kube-flannel.yml

## 再次查看节点:
[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES           AGE     VERSION
master   Ready      control-plane   3m49s   v1.24.2
slave1   Ready                59s     v1.24.2
slave2   Ready                21s     v1.24.2

        7>.  CNI插件问题:默认情况下containerd也会有一个cni文件,但是我们已经安装Flannel了,我们需要使用Flannel的cni件,需要将containerd里面的cni 配置文件进行注释,否则2个配置会产生冲突,因为如果这个目录中有多个cni 配置文件,kubelet 将会使用接文件名的字典顺序排列的第一个作为配置文件,所以前而默认选择使用的是containerd-net这个插件。若/etc/cni/net.d目录下没有文件,就不需要进行下列操作。

[root@master ~]# mv /etc/cni/net.d/10-flannel.conflist /etc/cni/net.d/10-
flannel.conflist.bak

[root@master ~]# systemctl daemon-reload 

[root@master ~]# systemctl restart containerd kubelet

你可能感兴趣的:(kubernetes,kubernetes,linux,centos,运维)