[Business Function 110] Déploiement de cluster Microservices-springcloud-springboot-Kubernetes-kubeadm déploiement extrêmement rapide-installation Docker

kubeadm déploie rapidement les clusters de la version Kubernetes 1.24

1. Déploiement du cluster version Kubernetes 1.24

1.1 Préparation de l'environnement de déploiement de cluster Kubernetes version 1.24

1.1.1 Description du système d'exploitation hôte

numéro de série Système d'exploitation et version Remarque
1 CentOS7u9

1.1.2 Description de la configuration matérielle de l'hôte

  • Trois hôtes peuvent être déployés à l'aide de VMware virtualisé

1. Préparez l'image iso Centos7
2. Installez une machine modèle de machine virtuelle avec le logiciel VMware, créez un dossier localement pour stocker la machine virtuelle, suivez les étapes et configurez la configuration de la machine virtuelle requise, le fuseau horaire, le segment de réseau,
etc. Une machine virtuelle est composée d'un fichier de configuration + d'un disque dur. Ensuite nos trois prochains déploiements de machine virtuelle seront créés directement en utilisant le disque dur du modèle de machine virtuelle précédent (ceux avec le suffixe vmdk dans le répertoire d'installation spécifié précédemment sont des disques fichier), comme le système a déjà été installé sur le disque dur, il est très rapide d'utiliser le modèle pour installer les trois machines virtuelles restantes qui seront réellement utilisées, réduisant ainsi les étapes d'installation répétées. 4. Créez trois dossiers et stockez-les
. Une machine virtuelle, placez les fichiers de disque vmdk de la machine modèle précédente dans trois dossiers, puis continuez à installer la machine virtuelle trois fois. La seule étape d'option de disque consiste à sélectionner le disque existant de la machine modèle dans le répertoire correspondant. De cette manière, trois machines virtuelles peuvent être installées rapidement.

besoin CPU Mémoire disque dur Rôle Nom du processeur
valeur 4C 8G 100 Go maître k8s-master01
valeur 4C 8G 100 Go travailleur (nœud) k8s-worker01
valeur 4C 8G 100 Go travailleur (nœud) k8s-worker02

1.1.3 Configuration de l'hôte

1.1.3.1 Configuration du nom d'hôte

Puisque trois hôtes sont utilisés cette fois pour terminer le déploiement du cluster Kubernetes, l'un d'eux est le nœud maître, nommé k8s-master01 ; deux d'entre eux sont des nœuds de travail, nommés : k8s-worker01 et k8s-worker02.

master节点
# hostnamectl set-hostname k8s-master01
worker01节点
# hostnamectl set-hostname k8s-worker01
worker02节点
# hostnamectl set-hostname k8s-worker02

1.1.3.2 Configuration de l'adresse IP de l'hôte

  • La passerelle de la machine virtuelle VMware Workstation est la deuxième adresse IP du segment de réseau configuré, telle que 192.168.10.2, segment d'adresse de classe C, masque 24 bits, la deuxième adresse IP
  • 119.29.29.29 Service DNS de Tencent
  • Une fois le réseau configuré et redémarré, cela prendra effet systemctl restart network
k8s-master节点IP地址为:192.168.10.141/24
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.141"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
k8s-worker1节点IP地址为:192.168.10.142/24
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.142"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
k8s-worker2节点IP地址为:192.168.10.143/24
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.143"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"

1.1.3.3 Résolution du nom d'hôte et de l'adresse IP

Tous les hôtes du cluster doivent être configurés.

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.141 k8s-master01
192.168.10.142 k8s-worker01
192.168.10.143 k8s-worker02

1.1.3.4 Configuration du pare-feu

Tous les hôtes nécessitent une opération.

关闭现有防火墙firewalld
# systemctl disable firewalld
# systemctl stop firewalld
# firewall-cmd --state
not running

1.1.3.5 Configuration SELINUX

Tous les hôtes nécessitent une opération. La modification de la configuration SELinux nécessite le redémarrage du système d'exploitation. SELINUX=désactivé

# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.1.3.6 Configuration de la synchronisation horaire

Tous les hôtes nécessitent une opération. Le système d'installation minimale nécessite l'installation du logiciel ntpdate.

# crontab -l
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com

1.1.3.7 Mettre à niveau le noyau du système d'exploitation

Tous les hôtes nécessitent une opération.

导入elrepo gpg key
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装elrepo YUM源仓库
# yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本
# yum --enablerepo="elrepo-kernel" -y install kernel-lt.x86_64
设置grub2默认引导为0
# grub2-set-default 0
重新生成grub2引导文件
# grub2-mkconfig -o /boot/grub2/grub.cfg
更新后,需要重启,使用升级的内核生效。
# reboot
重启后,需要验证内核是否为更新对应的版本
# uname -r

1.1.3.8 Configurer le transfert du noyau et le filtrage des ponts

Tous les hôtes nécessitent une opération.

添加网桥过滤及内核转发配置文件
# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
加载br_netfilter模块
# modprobe br_netfilter
查看是否加载
# lsmod | grep br_netfilter
br_netfilter           22256  0
bridge                151336  1 br_netfilter

1.1.3.9 Installer ipset et ipvsadm

Tous les hôtes nécessitent une opération. Routage récapitulatif pour une requête facile

安装ipset及ipvsadm
# yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块
# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
授权、运行、检查是否加载
# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

1.1.3.10 Fermer la partition SWAP

  • S'il est activé, cela affectera les performances et sera plus lent.

Une fois la modification terminée, le système d'exploitation doit être redémarré. S'il ne redémarre pas, il peut être temporairement arrêté. La commande est swapoff -a.

永远关闭swap分区,需要重启操作系统
# cat /etc/fstab
......

# /dev/mapper/centos-swap swap                    swap    defaults        0 0

在上一行中行首添加#

1.2 Préparation du Docker

1.2.1 Installation de Docker Préparation des sources YUM

Utilisez la station miroir du logiciel open source Alibaba Cloud. -O spécifie le fichier téléchargé à placer dans un emplacement de répertoire spécifique

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

1.2.2Installation du Docker

# yum -y install docker-ce

1.2.3 Démarrer le service Docker

# systemctl enable --now docker

1.2.4 Modifier le mode groupe de contrôle

/etc/docker/daemon.json n'a pas ce fichier par défaut et doit être créé séparément.

/etc/docker/daemon.json添加如下内容

# cat /etc/docker/daemon.json
{
    
    
        "exec-opts": ["native.cgroupdriver=systemd"]
}
  • Redémarrez docker et vérifiez si la modification est terminée via la commande info : Imprimez les informations Pilote Cgroup : systemd
# systemctl restart docker
# docker info    

1.2.5 Installation cri-dockerd

1.2.5.1 Préparation de l'environnement Golang

wget https://storage.googleapis.com/golang/getgo/installer_linux

chmod +x ./installer_linux

./installer_linux

source ~/.bash_profile

2.2.5.2 Construire et installer cri-dockerd

  • Connectez-vous à github pour interroger Mirantis/cri-dockerd. Le clonage du code source sur chaque hôte nécessite des opérations. Vérifiez ensuite les étapes de commande d'installation spécifiques en fonction du fichier readme.md du projet, comme suit :
克隆cri-dockerd源码
# git clone https://github.com/Mirantis/cri-dockerd.git
查看克隆下来的目录
# ls
cri-dockerd 
查看目录中内容
# ls cri-dockerd/
LICENSE  Makefile  packaging  README.md  src  VERSION
# cd cri-dockerd
创建bin目录并构建cri-dockerd二进制文件
# mkdir bin
# go get && go build -o ../bin/cri-dockerd
创建/usr/local/bin,默认存在时,可不用创建
# mkdir -p /usr/local/bin

安装cri-dockerd
# install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd

复制服务管理文件至/etc/systemd/system目录中
# cp -a packaging/systemd/* /etc/systemd/system

指定cri-dockerd运行位置
#sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service

启动服务
# systemctl daemon-reload
# systemctl enable cri-docker.service
# systemctl enable --now cri-docker.socket

1.3 Déploiement du cluster Kubernetes 1.24.X

1.3.1 Logiciel du cluster et description de la version

Kubeadm Kubelet Kubectl
Version 1.24.X 1.24.X 1.24.X
Emplacement d'installation Tous les hôtes du cluster Tous les hôtes du cluster Tous les hôtes du cluster
effet Initialisez le cluster, gérez le cluster, etc. Utilisé pour recevoir les instructions du serveur API et gérer le cycle de vie du pod Outil de gestion de ligne de commande d'application de cluster

1.3.2 Préparation des sources Kubernetes YUM

1.3.2.1 Source Google YUM

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

1.3.2.2 Source Alibaba Cloud YUM

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

1.3.3 Installation du logiciel du cluster

Peut être installé sur tous les nœuds

默认安装
# yum -y install  kubeadm  kubelet kubectl
查看指定版本
# yum list kubeadm.x86_64 --showduplicates | sort -r
# yum list kubelet.x86_64 --showduplicates | sort -r
# yum list kubectl.x86_64 --showduplicates | sort -r
安装指定版本
# yum -y install  kubeadm-1.24.7-0  kubelet-1.24.7-0 kubectl-1.24.7-0

1.3.4 Configuration de Kubelet

Afin d'assurer la cohérence entre le cgroupdriver utilisé par docker et le cgroup utilisé par kubelet, il est recommandé de modifier le contenu du fichier suivant.

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
# systemctl enable kubelet

1.3.5 La préparation de l'image du cluster ne doit être exécutée que sur l'hôte du nœud maître

Le téléchargement peut être réalisé à l'aide d'un VPN.
Affichez la liste d'images, puis téléchargez la liste d'images imprimées.
Comme il existe de nombreuses listes d'images, vous pouvez écrire un fichier de script pour parcourir Docker afin d'extraire les images afin de terminer les téléchargements d'images par lots.

# kubeadm config images list --kubernetes-version=v1.24.7
# cat image_download.sh
#!/bin/bash
images_list='
镜像列表'

for i in $images_list
do
        docker pull $i
done

docker save -o k8s-1-24-X.tar $images_list
  • Exécutez le script via sh image_download.sh pour terminer le téléchargement de l'image
  • Le docker save -o k8s-1-24-X.tar $images_list dans le script est regroupé dans un package jar pour une exécution facile.

1.3.6 L'initialisation du cluster ne doit être effectuée que sur l'hôte du nœud maître

[root@k8s-master01 ~]# kubeadm init --kubernetes-version=v1.24.7 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=192.168.10.141  --cri-socket unix:///var/run/cri-dockerd.sock
如果不添加--cri-socket选项,则会报错,内容如下:
Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the 'criSocket' field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher
初始化过程输出
[init] Using Kubernetes version: v1.24.0
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [k8s-master01 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.10.200]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [k8s-master01 localhost] and IPs [192.168.10.200 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [k8s-master01 localhost] and IPs [192.168.10.200 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
[control-plane] Creating static Pod manifest for "kube-scheduler"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[apiclient] All control plane components are healthy after 13.006785 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node k8s-master01 as control-plane by adding the labels: [node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers]
[mark-control-plane] Marking the node k8s-master01 as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule node-role.kubernetes.io/control-plane:NoSchedule]
[bootstrap-token] Using token: 8x4o2u.hslo8xzwwlrncr8s
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes
[bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.10.200:6443 --token 8x4o2u.hslo8xzwwlrncr8s \
        --discovery-token-ca-cert-hash sha256:7323a8b0658fc33d89e627f078f6eb16ac94394f9a91b3335dd3ce73a3f313a0

1.3.7 Préparation du fichier de cluster de gestion des clients d'applications de cluster

[root@k8s-master01 ~]# mkdir -p $HOME/.kube
[root@k8s-master01 ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master01 ~]# chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s-master01 ~]# ls /root/.kube/config

//查看节点状态是否成功,显示状态ready 即可
kubectl get nodess
[root@k8s-master01 ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

1.3.8 Préparation du réseau de cluster

Déployer un réseau de cluster à l'aide de Calico

URL de référence d'installation : https://projectcalico.docs.tigera.io/about/about-calico

1.3.8.1 configuration du réseau d'installation de Calico

  • Méthode 1 (non recommandée)
下载operator资源清单文件
[root@k8s-master01 ~]# wget https://docs.projectcalico.org/manifests/tigera-operator.yaml
应用资源清单文件,创建operator
[root@k8s-master01 ~]# kubectl create -f tigera-operator.yaml
  • Méthode 2 (personnalisée recommandée)
通过自定义资源方式安装
[root@k8s-master01 ~]# wget https://docs.projectcalico.org/manifests/custom-resources.yaml

Configuration du réseau, modifier le segment de réseau, pod-network-cidr=10.224.0.0/16 se trouve dans le segment d'adresse du nœud réseau initialisé par le maître du nœud maître du cluster.

修改文件第13行,修改为使用kubeadm init ----pod-network-cidr对应的IP地址段
[root@k8s-master01 ~]# vim custom-resources.yaml
......
 11     ipPools:
 12     - blockSize: 26
 13       cidr: 10.224.0.0/16 
 14       encapsulation: VXLANCrossSubnet
......
  //当node无法正常运行时,可考虑在此文件中添加相关内容。   与ipPools同级的参数 注意位置 
  // ens.* 是网卡的名称匹配 系统默认网卡的名称是ens开头的,具体看系统网卡名称
      nodeAddressAutodetectionV4:
        interface: ens.*
应用资源清单文件
[root@k8s-master01 ~]# kubectl apply -f custom-resources.yaml
监视calico-sysem命名空间中pod运行情况
[root@k8s-master01 ~]# watch kubectl get pods -n calico-system

Attendez que chaque pod ait le STATUSof Running.

删除 master 上的 taint
[root@k8s-master01 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-
已经全部运行   查看所有节点命令: kubectl get nodes   
[root@k8s-master01 ~]# kubectl get pods -n calico-system
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-666bb9949-dzp68   1/1     Running   0          11m
calico-node-jhcf4                         1/1     Running   4          11m
calico-typha-68b96d8d9c-7qfq7             1/1     Running   2          11m
查看kube-system命名空间中coredns状态,处于Running状态表明联网成功。
[root@k8s-master01 ~]# kubectl get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS   AGE
coredns-6d4b75cb6d-js5pl               1/1     Running   0          12h
coredns-6d4b75cb6d-zm8pc               1/1     Running   0          12h
etcd-k8s-master01                      1/1     Running   0          12h
kube-apiserver-k8s-master01            1/1     Running   0          12h
kube-controller-manager-k8s-master01   1/1     Running   0          12h
kube-proxy-7nhr7                       1/1     Running   0          12h
kube-proxy-fv4kr                       1/1     Running   0          12h
kube-proxy-vv5vg                       1/1     Running   0          12h
kube-scheduler-k8s-master01            1/1     Running   0          12h

2.3.8.2 Installation du client Calico

下载二进制文件
# curl -L https://github.com/projectcalico/calico/releases/download/v3.21.4/calicoctl-linux-amd64 -o calicoctl

安装calicoctl
# mv calicoctl /usr/bin/

为calicoctl添加可执行权限
# chmod +x /usr/bin/calicoctl

查看添加权限后文件
# ls /usr/bin/calicoctl
/usr/bin/calicoctl

查看calicoctl版本
# calicoctl  version
Client Version:    v3.21.4
Git commit:        220d04c94
Cluster Version:   v3.21.4
Cluster Type:      typha,kdd,k8s,operator,bgp,kubeadm
通过~/.kube/config连接kubernetes集群,查看已运行节点
# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes
NAME
k8s-master01

1.3.9 Ajout de nœuds de travail de cluster

Le téléchargement de l'image du conteneur étant lent, cela peut provoquer des erreurs. L'erreur principale est que le cni (plug-in réseau du cluster) n'est pas prêt. S'il existe un réseau, veuillez patienter.

  • Entrez les deux hôtes du nœud de travail pour exécuter les commandes.
[root@k8s-worker01 ~]# kubeadm join 192.168.10.200:6443 --token 8x4o2u.hslo8xzwwlrncr8s \                              --discovery-token-ca-cert-hash sha256:7323a8b0658fc33d89e627f078f6eb16ac94394f9a91b3335dd3ce73a3f313a0 --cri-socket unix:///var/run/cri-dockerd.sock
[root@k8s-worker02 ~]# kubeadm join 192.168.10.200:6443 --token 8x4o2u.hslo8xzwwlrncr8s \
        --discovery-token-ca-cert-hash sha256:7323a8b0658fc33d89e627f078f6eb16ac94394f9a91b3335dd3ce73a3f313a0 --cri-socket unix:///var/run/cri-dockerd.sock
在master节点上操作,查看网络节点是否添加: kubectl get nodes
# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes
NAME
k8s-master01
k8s-worker01
k8s-worker02

2. Vérifiez la disponibilité du cluster

查看所有的节点
[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS   ROLES           AGE   VERSION
k8s-master01   Ready    control-plane   12h   v1.24.0
k8s-worker01   Ready    <none>          12h   v1.24.0
k8s-worker02   Ready    <none>          12h   v1.24.0
查看集群健康情况
[root@k8s-master01 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok
etcd-0               Healthy   {
    
    "health":"true","reason":""}
查看kubernetes集群pod运行情况
[root@k8s-master01 ~]# kubectl get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS   AGE
coredns-6d4b75cb6d-js5pl               1/1     Running   0          12h
coredns-6d4b75cb6d-zm8pc               1/1     Running   0          12h
etcd-k8s-master01                      1/1     Running   0          12h
kube-apiserver-k8s-master01            1/1     Running   0          12h
kube-controller-manager-k8s-master01   1/1     Running   0          12h
kube-proxy-7nhr7                       1/1     Running   0          12h
kube-proxy-fv4kr                       1/1     Running   0          12h
kube-proxy-vv5vg                       1/1     Running   0          12h
kube-scheduler-k8s-master01            1/1     Running   0          12h
再次查看calico-system命名空间中pod运行情况。
[root@k8s-master01 ~]# kubectl get pods -n calico-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-5b544d9b48-xgfnk   1/1     Running   0          12h
calico-node-7clf4                          1/1     Running   0          12h
calico-node-cjwns                          1/1     Running   0          12h
calico-node-hhr4n                          1/1     Running   0          12h
calico-typha-6cb6976b97-5lnpk              1/1     Running   0          12h
calico-typha-6cb6976b97-9w9s8              1/1     Running   0          12h

Je suppose que tu aimes

Origine blog.csdn.net/studyday1/article/details/132864359
conseillé
Classement