kubeadm部署單節(jié)點(diǎn)k8s

一.安裝和配置先決條件

1.轉(zhuǎn)發(fā) IPv4 并讓 iptables 看到橋接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 設(shè)置所需的 sysctl 參數(shù),參數(shù)在重新啟動(dòng)后保持不變
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
# 應(yīng)用 sysctl 參數(shù)而不重新啟動(dòng)
sudo sysctl --system

2.配置hosts、關(guān)閉防火墻、關(guān)閉swap分區(qū)、禁用SElinux

將 SELinux 設(shè)置為 permissive 模式(相當(dāng)于將其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

二.安裝containerd

https://github.com/containerd/containerd/blob/main/docs/getting-started.md

1.生成默認(rèn)配置

#containerd 使用位于 的配置文件/etc/containerd/config.toml來指定守護(hù)進(jìn)程級(jí)別選項(xiàng)。使用二進(jìn)制安裝目錄默認(rèn)是沒有,是需要自己手動(dòng)創(chuàng)建。
mkdir  /etc/containerd/
containerd config default > /etc/containerd/config.toml

2.修改配置

修改拉取鏡像地址
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"
修改containerd cgroup為 systemd
SystemdCgroup = true            # 將flase 修改為 true

3.重啟服務(wù)

 systemctl restart containerd

三.安裝 kubelet、kubeadm 和 kubectl

1.添加 Kubernetes 的 yum 倉庫。在倉庫定義中的 exclude 參數(shù)確保了與 Kubernetes 相關(guān)的軟件包在運(yùn)行 yum update 時(shí)不會(huì)升級(jí),因?yàn)樯?jí) Kubernetes 需要遵循特定的過程。請注意,此倉庫僅包含適用于 Kubernetes 1.33 的軟件包; 對于其他 Kubernetes 次要版本,則需要更改 URL 中的 Kubernetes 次要版本以匹配你所需的次要版本

# 此操作會(huì)覆蓋 /etc/yum.repos.d/kubernetes.repo 中現(xiàn)存的所有配置
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

2.安裝 kubelet、kubeadm 和 kubectl,并啟用 kubelet 以確保它在啟動(dòng)時(shí)自動(dòng)啟動(dòng):

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet

3.命令補(bǔ)全

source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc 
source ~/.bashrc

四.使用 kubeadm 創(chuàng)建集群

1.修改初始集群默認(rèn)配置文件

#生成配置
 kubeadm config print init-defaults > init-defaults.yaml
#修改IP、鏡像源、pod網(wǎng)段
localAPIEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
  pod-network-cidr: 10.244.0.0/16


imageRepository: registry.k8s.io

2.使用初始化配置文件拉取鏡像

kubeadm config images list --config=init-defaults.yaml # 查看需要哪些鏡像
kubeadm config images pull --config=init-defaults.yaml # 拉取鏡像

3.初始化集群

kubeadm init --config=init-defaults.yaml

#成功初始化如下返回
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

4.將kubectl證書添加到環(huán)境變量,否則你將無法使用kubectl命令

要使非 root 用戶可以運(yùn)行 kubectl,請運(yùn)行以下命令, 它們也是 kubeadm init 輸出的一部分:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

或者,如果你是 root 用戶,則可以運(yùn)行:
export KUBECONFIG=/etc/kubernetes/admin.conf

5.控制平面節(jié)點(diǎn)隔離

默認(rèn)情況下,出于安全原因,你的集群不會(huì)在控制平面節(jié)點(diǎn)上調(diào)度 Pod。 如果你希望能夠在單機(jī) Kubernetes 集群等控制平面節(jié)點(diǎn)上調(diào)度 Pod,請運(yùn)行:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

6.修改containerd 鏡像拉取源

[plugins."io.containerd.grpc.v1.cri".registry]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"]

五.安裝網(wǎng)絡(luò)插件

注意pod網(wǎng)段和init時(shí)保持一致
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容