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
STATUS
ofRunning
.
删除 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