需求:部署两台k8s节点。一台master,一台worker。集群版本为:v1.22.3

参考

一、环境准备

1、修改主机名和hosts文件

  • 分别修改节点主机名 ```shell hostnamectl set-hostname master
  1. ```shell
  2. hostnamectl set-hostname node1
  • 修改hosts映射 ```shell vim /etc/hosts

192.168.5.239 master 192.168.5.135 node1

  1. <a name="TRBgJ"></a>
  2. ## 2、卸载podman
  3. - centos8默认安装了podman容器,它和docker可能有冲突需要卸载掉
  4. ```shell
  5. sudo yum remove podman

3、关闭交换区

  • 临时关闭

    1. sudo swapoff -a
  • 永久关闭
    把/etc/fstab中的swap注释掉

    1. sudo sed -i 's/.*swap.*/#&/' /etc/fstab

    image.png

    4、禁用selinux

  • 临时关闭 ```shell setenforce 0

  1. - 永久关闭
  2. ```shell
  3. sudo sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

image.png

5、关闭防火墙

  1. sudo systemctl stop firewalld.service
  1. sudo systemctl disable firewalld.service

二、安装K8S

1、配置系统基本安装源

  1. sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

2、添加K8S安装源

  1. vim /etc/yum.repos.d/kubernetes.repo
  1. [kubernetes]
  2. name=Kubernetes
  3. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  4. enabled=1
  5. gpgcheck=1
  6. repo_gpgcheck=1
  7. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

注意:由于目前阿里镜像中还没有CentOS8的kubernetes,但是可以使用CentOS7的安装包,所以上面是使用的kubernetes-el7-x86_64,如果有CentOS8的,则为kubernetes-el8-x86_64。

3、Centos安装docker

  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools
  1. sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. sudo yum -y install docker-ce
  • 如果报错

image.png

  1. wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
  • 若还是报错 ```shell yum erase podman buildah
  1. - 为了docker加速pull,可以设置阿里云加速:
  2. ```shell
  3. sudo mkdir -p /etc/docker
  4. sudo vim /etc/docker/daemon.json
  1. <a name="Xs3wJ"></a>
  2. ## 4、ubuntu安装docker
  3. - 干净的卸载掉你系统中的 docker
  4. ```shell
  5. sudo apt-get purge docker-ce docker-ce-cli containerd.io
  6. sudo rm -rf /var/lib/docker
  7. 1.常归删除操作
  8. sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
  9. 2. 删除docker其他没有没有卸载
  10. dpkg -l | grep docker
  11. dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P # 删除无用的相关的配置文件
  12. 3.卸载没有删除的docker相关插件(结合自己电脑的实际情况)
  13. sudo apt-get autoremove docker-ce-*
  14. 4.删除docker的相关配置&目录
  15. sudo rm -rf /etc/systemd/system/docker.service.d
  16. sudo rm -rf /var/lib/docker
  17. 5.确定docker卸载完毕
  18. docker --version
  • 安装apt相应的依赖 ```shell 先更新一下 sudo apt-get update

安装相应的依赖 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common

  1. - 添加 Docker 的官方 GPG 密钥
  2. ```shell
  3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 验证密钥
  1. sudo apt-key fingerprint 0EBFCD88
  • 根据你不同的系统去设置一个稳定的仓库 ```shell

1.x86_64/amd64

sudo add-apt-repository \ “deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable”

  1. - 再更新一次 apt
  2. ```shell
  3. sudo apt-get update
  • 安装最新的 docker

    1. sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 查看是否安装成功

    1. sudo docker -v
  • 添加docker仓库 ```shell 创建 daemon.json 文件 $ touch daemon.json

编辑文件 $ sudo vim /etc/docker/daemon.json

在弹出来的文本框中收入下面这段,保存 { “registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn“] }

  1. <a name="KaGR5"></a>
  2. # 三、安装kubectl、kubelet、kubeadm
  3. <a name="ndWM8"></a>
  4. ## 1、安装kubectl、kubelet、kubeadm,设置kubelet开机启动,启动kubelet。
  5. ```shell
  6. sudo yum install -y kubectl kubelet kubeadm
  7. sudo systemctl enable kubelet
  8. sudo systemctl start kubelet

2、查看k8s版本

  1. kubeadm version
  2. kubectl version --client
  3. kubelet --version

image.png

3、配置docker的cgroup驱动为systemd

  • 查看当前的cgroup驱动

    1. docker info | grep Cgroup
  • 修改驱动

    1. vim /usr/lib/systemd/system/docker.service
    1. --exec-opt native.cgroupdriver=systemd

    image.png

  • 然后重启docker,再查看信息,可以看到已经变为systemd了

    1. systemctl daemon-reload
    2. systemctl restart docker
    3. docker info | grep Cgroup

    4、初始化kubernetes集群

    1. kubeadm init --apiserver-advertise-address=0.0.0.0 \
    2. --apiserver-cert-extra-sans=127.0.0.1 \
    3. --image-repository=registry.aliyuncs.com/google_containers \
    4. --ignore-preflight-errors=all \
    5. --kubernetes-version=v1.21.1 \
    6. --service-cidr=10.10.0.0/16 \
    7. --pod-network-cidr=10.18.0.0/16
  • 出现以下情况表示成功

image.png

  • 根据提示操作

    1. mkdir -p $HOME/.kube
    2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 执行

    1. kubectl get node
    2. kubectl get pod --all-namespaces
  • 此为安装好的集群

image.png

  • 但是此时node节点为NotReady,因为coredns pod没有启动,缺少网络pod。

    5、安装calico网络

    1. kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

    过一会再查看信息,节点已经处于Ready状态了。

    四、把worker节点加入到cluster

    1、得到join命令:要在master节点上执行

    1. kubeadm token create --print-join-command

    得到如下:

    1. kubeadm join 192.168.5.239:6443 --token lmjiua.ddj61spss91lyeav --discovery-token-ca-cert-hash sha256:4e85dabed6fea2b436fffb4f3d08b06eb6030353c212d61e64ca86e6ed433996

    2、worker节点的ip要加入到master节点的防火墙

    1. firewall-cmd --permanent --zone=trusted --add-source=192.168.219.136
    1. firewall-cmd --reload

    3、回到worker节点上执行

    1. kubeadm join 192.168.5.239:6443 --token lmjiua.ddj61spss91lyeav --discovery-token-ca-cert-hash sha256:4e85dabed6fea2b436fffb4f3d08b06eb6030353c212d61e64ca86e6ed433996
  • 如下信息表示成功

image.png

  • 在master节点上查看node

image.png

五、安装kubernetes-dashboard

1、将官方的recommended.yaml文件下载下来

  1. wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

2、添加配置

  1. kind: Service
  2. apiVersion: v1
  3. metadata:
  4. labels:
  5. k8s-app: kubernetes-dashboard
  6. name: kubernetes-dashboard
  7. namespace: kubernetes-dashboard
  8. spec:
  9. type: NodePort #添加这行
  10. ports:
  11. - port: 443
  12. targetPort: 8443
  13. nodePort: 30000 #添加这行
  14. selector:
  15. k8s-app: kubernetes-dashboard
  • 如图

image.png

3、然后创建POD,并查看kubernetes-dashboard

  1. kubectl create -f recommended.yaml
  2. kubectl get svc -n kubernetes-dashboard

4、访问可视化界面

https://192.168.5.239:30000/#/login
image.png

5、登陆方式

  • 使用Token登录

  • 使用Kubeconfig登录