22
33` kubeadm ` 提供了 ` kubeadm init ` 以及 ` kubeadm join ` 这两个命令作为快速创建 ` kubernetes ` 集群的最佳实践。
44
5+ > ⚠️ ** 重要说明** :自 Kubernetes 1.24 起,内置 ` dockershim ` 已被移除,Kubernetes 默认不再直接使用 Docker Engine 作为容器运行时(CRI)。因此,** 更推荐参考** 同目录下的《[ 使用 kubeadm 部署 kubernetes(CRI 使用 containerd)] ( kubeadm.md ) 》。
6+ >
7+ > 本文档主要用于历史环境/学习目的:如果你确实需要在较新版本中继续使用 Docker Engine,通常需要额外部署 ` cri-dockerd ` 并在 ` kubeadm init/join ` 中指定 ` --cri-socket ` 。
8+
59### 安装 Docker
610
711参考 [ 安装 Docker] ( ../../03_install/README.md ) 一节安装 Docker。
1519运行以下命令:
1620
1721``` bash
18- $ apt-get update && apt-get install -y apt-transport-https
19- $ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
22+ $ K8S_MINOR=" v1.35"
2023
21- $ cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
22- deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
23- EOF
24+ $ sudo apt-get update
25+ $ sudo apt-get install -y ca-certificates curl gpg
26+
27+ $ sudo install -m 0755 -d /etc/apt/keyrings
28+ $ curl -fsSL " https://pkgs.k8s.io/core:/stable:/${K8S_MINOR} /deb/Release.key" | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
29+ $ sudo chmod a+r /etc/apt/keyrings/kubernetes-apt-keyring.gpg
2430
25- $ apt-get update
26- $ apt-get install -y kubelet kubeadm kubectl
31+ $ echo " deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/${K8S_MINOR} /deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
32+
33+ $ sudo apt-get update
34+ $ sudo apt-get install -y kubelet kubeadm kubectl
35+
36+ $ sudo apt-mark hold kubelet kubeadm kubectl
2737```
2838
2939#### CentOS/Fedora
3040
3141运行以下命令:
3242
3343``` bash
44+ $ K8S_MINOR=" v1.35"
45+
3446$ cat << EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
3547[kubernetes]
3648name=Kubernetes
37- baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 /
49+ baseurl=https://pkgs.k8s.io/core:/stable:/ ${K8S_MINOR} /rpm /
3850enabled=1
3951gpgcheck=1
4052repo_gpgcheck=1
41- gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package- key.gpg
53+ gpgkey=https://pkgs.k8s.io/core:/stable:/ ${K8S_MINOR} /rpm/repodata/repomd.xml. key
4254EOF
4355
4456$ sudo yum install -y kubelet kubeadm kubectl
4557```
4658
4759### 修改内核的运行参数
4860
61+ #### 加载内核模块
62+
63+ 运行以下命令:
64+
65+ ``` bash
66+ $ cat << EOF | sudo tee /etc/modules-load.d/k8s.conf
67+ overlay
68+ br_netfilter
69+ EOF
70+
71+ $ sudo modprobe overlay
72+ $ sudo modprobe br_netfilter
73+ ```
74+
75+ #### 禁用 swap(必须)
76+
77+ kubelet 默认要求禁用 swap,否则可能导致初始化失败或节点无法加入集群。
78+
79+ ``` bash
80+ $ sudo swapoff -a
81+
82+ # # 如需永久禁用,可在 /etc/fstab 中注释 swap 对应行
83+ ```
84+
4985运行以下命令:
5086
5187``` bash
@@ -185,7 +221,7 @@ $ kubectl get node -o yaml | grep CIDR
185221```
186222
187223``` bash
188- $ kubectl apply -f https://raw.githubusercontent.com/coreos /flannel/v0.11.0 /Documentation/kube-flannel.yml
224+ $ kubectl apply -f https://raw.githubusercontent.com/flannel-io /flannel/v0.26.1 /Documentation/kube-flannel.yml
189225```
190226
191227### master 节点默认不能运行 pod
@@ -195,6 +231,9 @@ $ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.11.0/Docu
195231``` bash
196232$ kubectl taint nodes --all node-role.kubernetes.io/master-
197233
234+ # # 部分较新版本使用 control-plane taint
235+ # # $ kubectl taint nodes --all node-role.kubernetes.io/control-plane-
236+
198237# # 恢复默认值
199238
200239# # $ kubectl taint nodes NODE_NAME node-role.kubernetes.io/master=true:NoSchedule
0 commit comments