一、部署說明
1、主機操作系統說明
2、主機硬件配置說明
二、主機準備(沒有特別說明都是三臺都要配置)
1、配置主機名和IP
2、配置hosts解析
3、防火墻和SELinux
4、時間同步配置
5、配置內核轉發及網橋過濾
6、關閉swap
7、啟用ipvs
8、句柄數最大
9、系統優化
三、容器運行時工具安裝及運行
1、安裝docker
2、安裝cri-dockerd
1. 下載最新版cri-dockerd rpm包
2、安裝并啟動cri-docker
3、cri-dockerd設置國內鏡像加速
四、K8S軟件安裝
1、配置kubernetes源
?2、查看所有可用的版本
3、安裝kubelet、kubeadm、kubectl、kubernetes-cni
?4、配置cgroup
五、K8S集群初始化
六、K8S集群工作節點加入
七、K8S集群網絡插件使用
八、Kubectl命令自動補全
九、報錯問題與解決
1、在替換默認源時----dnf makecache出現以下內容
2、在安裝docker的,更新并安裝Docker-CE時出現
3、在安裝cri-dockerd時,
4、K8S集群初始化時
一、部署說明
1、主機操作系統說明
序號 | 操作系統及版本 | 備注 |
---|---|---|
1 | Rocky Linux release 9 | 下載鏈接:https://mirrors.163.com/rocky/9.5/isos/x86_64/Rocky-9.5-x86_64-minimal.iso |
2、主機硬件配置說明
作用 | IP地址 | 操作系統 | 配置 | 關鍵組件 |
---|---|---|---|---|
k8s-master01 | 192.168.131.137 | Rocky Linux release 9 | 2顆CPU 4G內存 100G硬盤 | kube-apiserver, etcd, etc |
k8s-node01 | 192.168.131.138 | Rocky Linux release 9 | 2顆CPU 4G內存 100G硬盤 | kubelet, kube-proxy |
k8s-node02 | 192.168.131.139 | Rocky Linux release 9 | 2顆CPU 4G內存 100G硬盤 | kubelet, kube-proxy |
網絡規劃表
網絡類型 | CIDR | 用途說明 |
---|---|---|
節點管理網絡 | 10.10.0.0/24 | SSH/K8s組件通信 |
Pod網絡 | 10.244.0.0/16 | Flannel默認網段 |
Service網絡 | 10.96.0.0/16 | ClusterIP地址池 |
Ingress網絡 | 172.16.90.0/24 | 外部訪問入口 |
二、主機準備(沒有特別說明都是三臺都要配置)
1、系統最小化安裝。(最小內存) 2、替換默認源。
#這組命令的作用是把 Rocky Linux 的軟件源配置文件中的官方鏡像地址替換成阿里云的鏡像地址,同時備份原配置文件sed -e 's|^mirrorlist=|#mirrorlist=|g' \-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \-i.bak \/etc/yum.repos.d/rocky*.repo#?更新軟件包元數據緩存dnf makecache
3、安裝epel軟件倉庫,更換國內源1>. 在 Rocky Linux 9 中啟用并安裝 EPEL Repo。
dnf config-manager --set-enabled crb
dnf install epel-release
????????2>. 備份(如有配置其他epel源)并替換為國內鏡像 注意最后這個庫,阿里云沒有對應的鏡像,不要修改它,如果誤改恢復原版源即可
cp /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
cp /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
cp /etc/yum.repos.d/epel-cisco-openh264.repo /etc/yum.repos.d/epel-cisco-openh264.repo.backup
?????????3>. 將 repo 配置中的地址替換為阿里云鏡像站地址執行下面語句,它會替換epel.repo、eple-testing.repo中的網址,不會修改epel-cisco-openh264.repo,可以正常使用。 ?
sed -e 's!^metalink=!#metalink=!g' \-e 's!^#baseurl=!baseurl=!g' \-e 's!https\?://download\.fedoraproject\.org/pub/epel!https://mirrors.aliyun.com/epel!g' \-e 's!https\?://download\.example/pub/epel!https://mirrors.aliyun.com/epel!g' \-i /etc/yum.repos.d/epel{,-testing}.repo
現在我們有了 EPEL 倉庫,更新倉庫緩存 ?
dnf clean all
dnf makecache
1、配置主機名和IP
#在131.137上配置
hostnamectl set-hostname k8s-master01
#在131.138上配置
hostnamectl set-hostname k8s-node01
#在131.139上配置
hostnamectl set-hostname k8s-node02
2、配置hosts解析
# cat >> /etc/hosts << EOF
172.16.90.11 k8s-master01
172.16.90.12 k8s-node01
172.16.90.13 k8s-node02
EOF# 配置免密登錄,只在k8s-master01上操作
[root@k8s-master01 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q
?
# 點拷貝秘鑰到其他 2 臺節點
[root@k8s-master01 ~]# ssh-copy-id k8s-node01
[root@k8s-master01 ~]# ssh-copy-id k8s-node02
3、防火墻和SELinux
systemctl disable --now firewalld
sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
setenforce 0
4、時間同步配置
#安裝chrony
dnf install -y chrony
# 修改同步服務器
sed -i '/^pool/ c pool ntp1.aliyun.com iburst' /etc/chrony.conf
systemctl restart chronyd
systemctl enable chronyd
?
chronyc sources
出現以下內容:
MS Name/IP address ? ? ? ? Stratum Poll Reach LastRx Last sample ? ? ? ? ? ? ?
===============================================================================
^* 47.96.149.233 ? ? ? ? ? ? ? ? 2 ? 6 ? ?17 ? ? 3 ? ?+77us[ +147us] +/- ? 34ms
5、配置內核轉發及網橋過濾
添加網橋過濾及內核轉發配置文件
# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF
?
#加載br_netfilter模塊
modprobe br_netfilter
?
#查看是否加載
lsmod | grep br_netfilter
br_netfilter ? ? ? ? ? 22256 ?0
bridge ? ? ? ? ? ? ? ?151336 ?1 br_netfilter
?
使用新添加配置文件生效
# sysctl -p /etc/sysctl.d/k8s.conf
6、關閉swap
# 臨時關閉?
swapoff -a#永遠關閉swap分區
sed -i 's/.*swap.*/#&/' /etc/fstab
7、啟用ipvs
?
cat >> /etc/modules-load.d/ipvs.conf << EOF
br_netfilter
ip_conntrack
ip_vs
ip_vs_lc
ip_vs_wlc
ip_vs_rr
ip_vs_wrr
ip_vs_lblc
ip_vs_lblcr
ip_vs_dh
ip_vs_sh
ip_vs_fo
ip_vs_nq
ip_vs_sed
ip_vs_ftp
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF#下載安裝?
dnf install ipvsadm ipset sysstat conntrack libseccomp -y
?
# 重啟服務
systemctl restart systemd-modules-load.service
# 查看以下內容
lsmod | grep -e ip_vs -e nf_conntrack#出現以下內容
ip_vs_ftp ? ? ? ? ? ? ?16384 ?0
nf_nat ? ? ? ? ? ? ? ? 61440 ?1 ip_vs_ftp
.....
nf_defrag_ipv4 ? ? ? ? 16384 ?1 nf_conntrack
libcrc32c ? ? ? ? ? ? ?16384 ?4 nf_conntrack,nf_nat,xfs,ip_vs
8、句柄數最大
ulimit -SHn 65535
cat >> /etc/security/limits.conf <<EOF
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* seft memlock unlimited
* hard memlock unlimitedd
EOF
#查看修改結果
ulimit -a
9、系統優化
cat > /etc/sysctl.d/k8s_better.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
?
modprobe br_netfilterlsmod |grep conntrackmodprobe ip_conntracksysctl -p /etc/sysctl.d/k8s_better.conf
?
三、容器運行時工具安裝及運行
1、安裝docker
?
#安裝依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
?
#添加軟件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo
?
#更新并安裝Docker-CE
yum makecache fast
yum -y install docker-ce
?
#查看版本
docker -v
#出現以下
Docker version 27.5.1, build 9f9e405
?
?
# 設置國內鏡像加速
mkdir -p /etc/docker/
cat >> /etc/docker/daemon.json << EOF
{"registry-mirrors":["https://p3kgr6db.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://your_id.mirror.aliyuncs.com","https://docker.nju.edu.cn/","https://docker.anyhub.us.kg","https://dockerhub.jobcher.com","https://dockerhub.icu","https://docker.ckyl.me","https://cr.console.aliyun.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
?
?
#設置docker開機啟動并啟動
systemctl enable --now docker
?
?
#查看docker版本
docker version
2、安裝cri-dockerd
1. 下載最新版cri-dockerd rpm包
網絡條件好的話直接使用wget下載,網絡條件一般的話可以在github上面先下載再上傳到虛擬機
下載地址:Releases · Mirantis/cri-dockerd (github.com)。
https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.16/cri-dockerd-0.3.16-3.fc35.x86_64.rpm
2、安裝并啟動cri-docker
wget -c https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.16/cri-dockerd-0.3.16-3.fc35.x86_64.rpm
wget -c https://rpmfind.net/linux/almalinux/8.10/BaseOS/x86_64/os/Packages/libcgroup-0.41-19.el8.x86_64.rpm
yum install libcgroup-0.41-19.el8.x86_64.rpm
yum install cri-dockerd-0.3.16-3.fc35.x86_64.rpm
systemctl enable cri-docker但一般如果沒有代理是安裝不了的,可以上傳cri-dockerd和他的lincgroup依賴包的包(私我)上傳好后
順序不要錯
yum install libcgroup-0.41-19.el8.x86_64.rpm
yum install cri-dockerd-0.3.16-3.fc35.x86_64.rpm
systemctl enable cri-docke
3、cri-dockerd設置國內鏡像加速
vim /usr/lib/systemd/system/cri-docker.service
------------------
修改第10行內容
ExecStart=/usr/bin/cri-dockerd ?--pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 ?--container-runtime-endpoint ?fd://
-----------------------------------
?
# 重啟Docker組件
systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker
# 檢查Docker組件狀態
systemctl status docker cir-docker.socket cri-docker
四、K8S軟件安裝
1、配置kubernetes源
#添加阿里云YUM軟件源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/rpm/repodata/repomd.xml.key
EOF
?2、查看所有可用的版本
yum list kubelet --showduplicates | sort -r |grep 1.32kubelet.x86_64 ? ? ? ? ? ? ? ? ? ?1.32.2-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.x86_64 ? ? ? ? ? ? ? ? ? ?1.32.1-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.x86_64 ? ? ? ? ? ? ? ? ? ?1.32.0-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.src ? ? ? ? ? ? ? ? ? ? ? 1.32.2-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.src ? ? ? ? ? ? ? ? ? ? ? 1.32.1-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.src ? ? ? ? ? ? ? ? ? ? ? 1.32.0-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.s390x ? ? ? ? ? ? ? ? ? ? 1.32.2-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.s390x ? ? ? ? ? ? ? ? ? ? 1.32.1-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.s390x ? ? ? ? ? ? ? ? ? ? 1.32.0-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.ppc64le ? ? ? ? ? ? ? ? ? 1.32.2-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.ppc64le ? ? ? ? ? ? ? ? ? 1.32.1-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.ppc64le ? ? ? ? ? ? ? ? ? 1.32.0-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.aarch64 ? ? ? ? ? ? ? ? ? 1.32.2-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.aarch64 ? ? ? ? ? ? ? ? ? 1.32.1-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
kubelet.aarch64 ? ? ? ? ? ? ? ? ? 1.32.0-150500.1.1 ? ? ? ? ? ? ? ? ? kubernetes
?
3、安裝kubelet、kubeadm、kubectl、kubernetes-cni
yum install -y kubelet kubeadm kubectl kubernetes-cni
?4、配置cgroup
為了實現docker使用的cgroupdriver與kubelet使用的cgroup的一致性,建議修改如下文件內容。
vim /etc/sysconfig/kubelet? [3臺全部設置下]
---------------------
添加
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
---------------------
設置kubelet為開機自啟動即可,由于沒有生成配置文件,集群初始化后自動啟動
systemctl enable kubelet
-----------------------------------
五、K8S集群初始化
# 只在master01節點上操作創建初始化文件 kubeadm-init.yaml
?kubeadm config print init-defaults > kubeadm-init.yaml
#修改如下配置:
?
#- advertiseAddress:為控制平面地址,( Master 主機 IP )
# advertiseAddress: 1.2.3.4
修改為 advertiseAddress: 172.16.90.11#- criSocket:為 containerd 的 socket 文件地址
# criSocket: unix:///var/run/containerd/containerd.sock
修改為 criSocket: unix:///var/run/cri-dockerd.sock# name: node
修改為 name: k8s-master01
?
#- imageRepository:阿里云鏡像代理地址,否則拉取鏡像會失敗
# imageRepository: registry.k8s.io
修改為:imageRepository: registry.aliyuncs.com/google_containers#- kubernetesVersion:為 k8s 版本
# kubernetesVersion: 1.32.0
修改為:kubernetesVersion: 1.32.2#注意:一定要配置鏡像代理,否則會由于防火墻問題導致集群安裝失敗文件末尾增加啟用ipvs功能
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
?
# 根據配置文件啟動 kubeadm 初始化 k8skubeadm init --config=kubeadm-init.yaml --upload-certs --v=6
...
?
#(當出現以下就說明配置成功了)
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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo 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 172.16.90.11:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:06faf8d64c03530bf88d1a34eae877b3d446ab5e4f0e071fc96567ccf53b1e70 #配置一下內容mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
? ?export KUBECONFIG=/etc/kubernetes/admin.conf
六、K8S集群工作節點加入
#所有的工作節點加入集群注意:加入集群時需要添加 (node1和node2添加)
--cri-socket unix:///var/run/cri-dockerd.sock
kubeadm join 172.16.90.11:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:06faf8d64c03530bf88d1a34eae877b3d446ab5e4f0e071fc96567ccf53b1e70 \--cri-socket unix:///var/run/cri-dockerd.sock[root@k8s-master01 ~]# kubectl get node
NAME ? ? ? ? ? STATUS ? ? ROLES ? ? ? ? ? AGE ? ? VERSION
k8s-master01 ? NotReady ? control-plane ? 2m55s ? v1.32.2
k8s-node01 ? ? NotReady ? <none> ? ? ? ? 56s ? ? v1.32.2
k8s-node02 ? ? NotReady ? <none> ? ? ? ? 49s ? ? v1.32.2
七、K8S集群網絡插件使用
網絡插件選型對比
插件 | 網絡模式 | 性能損耗 | 適用場景 |
---|---|---|---|
Flannel | VXLAN | 8-10% | 中小型集群 |
Calico | BGP | 3-5% | 大規模生產環境 |
Cilium | eBPF | 1-3% | 云原生安全場景 |
Weave | mesh | 10-15% | 混合云環境 |
# 只在master01上操作可能也需要代理,如果curl不下來,私我發包直接上傳不用修改)
curl -O https://docs.projectcalico.org/archive/v3.28/manifests/calico.yaml
?vim calico.yaml
以下兩行默認沒有開啟,開始后修改第二行為kubeadm初始化使用指定的pod network即可。
3680 ? ? ? ? ? ? # The default IPv4 pool to create on startup if none exists. Pod IPs will be
3681 ? ? ? ? ? ? # chosen from this range. Changing this value after installation will have
3682 ? ? ? ? ? ? # no effect. This should fall within `--cluster-cidr`.
3683 ? ? ? ? ? ? - name: CALICO_IPV4POOL_CIDR
3684 ? ? ? ? ? ? ? value: "10.244.0.0/16"
3685 ? ? ? ? ? ? # Disable file logging so `kubectl logs` works.
?#可以將鏡像提前拉取下來,如果官網倉庫不可達,可以嘗試手動從quay.io下載鏡像,quay.io是一個公共鏡像倉庫。(這步需要三臺都要拉鏡像)
docker pull calico/cni:v3.28.0
docker pull calico/node:v3.28.0
docker pull calico/kube-controllers:v3.28.0
#(可能也是需要代理才能拉下鏡像來,私我發包直接上傳,再按以下步驟)
?docker load -i calico.tar.gz
docker images#部署calico網絡(在master上)
[root@k8s-master01 ~]# kubectl apply -f calico.yaml
?
#檢查:
[root@k8s-master01 ~]# kubectl get pod -n kube-system
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? READY ? STATUS ? RESTARTS ? AGE
calico-kube-controllers-cb7c98d86-qbbmr ? 1/1 ? ? Running ? 0 ? ? ? ? 10m
calico-node-68gc6 ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? 10m
calico-node-gxcl8 ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? 10m
calico-node-xj6xp ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? 10m
coredns-6766b7b6bb-dzbzb ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 0 ? ? ? ? 59m
coredns-6766b7b6bb-qmwjw ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 0 ? ? ? ? 59m
etcd-k8s-master01 ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? 59m
kube-apiserver-k8s-master01 ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? 59m
kube-controller-manager-k8s-master01 ? ? ?1/1 ? ? Running ? 0 ? ? ? ? 59m
kube-proxy-gfv7j ? ? ? ? ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 0 ? ? ? ? 59m
kube-proxy-nfhvt ? ? ? ? ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 0 ? ? ? ? 57m
kube-proxy-pf2rs ? ? ? ? ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 0 ? ? ? ? 57m
kube-scheduler-k8s-master01 ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? 59m
?
八、Kubectl命令自動補全
yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
九、報錯問題與解決
1、在替換默認源時----dnf makecache出現以下內容
? ? ? ? 1、檢查網絡連接(如果無法 ping 通,可能是網絡配置問題,在管理出檢查設備是否可以net連接)
ping mirrors.aliyun.com
如果網絡連接正常,但域名解析失敗,可能是 DNS 配置有問題。?/etc/resolv.conf
?文件,添加一個可靠的 DNS 服務器,我這里是
?search localdomain nameserver 192.168.131.2
你也可以寫?Google 的公共 DNS:
nameserver 8.8.8.8
nameserver 8.8.4.4
2、在安裝docker的,更新并安裝Docker-CE時出現
加一個sudo就行
sudo yum makecache fast
3、在安裝cri-dockerd時,
這表示沒有cri-docker的依賴包libcgroup,只需要改變一下順序:先安裝libcgroup如下:
yum install libcgroup-0.41-19.el8.x86_64.rpm
yum install cri-dockerd-0.3.16-3.fc35.x86_64.rpm
4、K8S集群初始化時
? ? ? ? 1、出現重復字段和未知字段,如下
#進入到kubeadm-init.yaml里,將配置修改為以下內容(可以直接粘貼過去,但 advertiseAddress:后面的ip改為你自己的master IP地址)
vim kubeadm-init.yamlapiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
localAPIEndpoint:advertiseAddress: 192.168.131.137bindPort: 6443
nodeRegistration:criSocket: unix:///var/run/cri-dockerd.sockimagePullPolicy: IfNotPresentname: k8s-master01taints: null
timeouts:controlPlaneComponentHealthCheck: 4m0sdiscovery: 5m0setcdAPICall: 2m0skubeletHealthCheck: 4m0skubernetesAPICall: 1m0stlsBootstrap: 5m0supgradeManifests: 5m0s
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
clusterName: kubernetes
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: 1.32.2
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12
certificatesDir: /etc/kubernetes/pki
caCertificateValidityPeriod: 87600h0m0s
certificateValidityPeriod: 8760h0m0s
encryptionAlgorithm: RSA-2048
apiServer: {}
controllerManager: {}
scheduler: {}
etcd:local:dataDir: /var/lib/etcd
dns: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
???????再次執行?kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6 ? ? ?
????????2、kubelet沒有運行
首先,檢查?kubelet
?是否正在運行:
systemctl status kubelet
如果?kubelet
?沒有運行,嘗試啟動它:
sudo systemctl start kubelet
然后再次檢查狀態:
systemctl status kubelet
???????再次執行?kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6 ? ? ?
3、問題 1:端口被占用。問題 2:文件已存在。問題 3:/var/lib/etcd
?目錄不為空問題/var/lib/etcd
?目錄不為空
?
#安裝 net-tools
sudo dnf install net-tools -y
#檢查端口占用
[root@k8s-master01 ~]# sudo netstat -tuln | grep -E '6443|10259|10257|10250|2379|2380'
tcp6 0 0 :::10250 :::* LISTEN
#運行以下命令停止 kubelet 服務:
sudo systemctl stop kubelet2. 檢查 kubelet 是否仍在運行
運行以下命令確認 kubelet 是否已停止:
sudo systemctl status kubelet3. 清理 Kubernetes 環境
運行以下命令清理 Kubernetes 環境:
sudo kubeadm reset
sudo rm -rf /etc/kubernetes
sudo rm -rf /var/lib/etcd
sudo rm -rf $HOME/.kube
???????再次執行?kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6 ? ?