| H__D |
|
||
1. 環境準備1.1 更新系統sudo yum update -y 1.2 關閉防火墻sudo systemctl stop firewalld
sudo systemctl disable firewalld
1.3 關閉 SELinuxsudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
1.4 關閉交換分區sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
1.5 加載內核模塊sudo modprobe overlay
sudo modprobe br_netfilter
確保這些模塊在重啟后仍然加載,創建 `/etc/modules-load.d/k8s.conf` 文件: sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF
1.6 配置網絡參數創建 `/etc/sysctl.d/k8s.conf` 文件: sudo tee /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF 應用這些設置: sudo sysctl --system 1.7 時間同步yum install ntpdate -y
ntpdate ntp.aliyun.com
2. 安裝容器運行時(containerd)類似docker,Kubernetes 默認使用 containerd 作為容器運行時,需要顯式配置使用 `containerd`。 2.1 安裝 containerdsudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加阿里倉庫鏡像: sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安裝 containerd: sudo yum install -y containerd.io 2.2 配置 containerd創建或修改 containerd 配置文件 `/etc/containerd/config.toml`: sudo mkdir -p /etc/containerd sudo containerd config default | sudo tee /etc/containerd/config.toml 編輯 `/etc/containerd/config.toml` 文件,確保 `SystemdCgroup` 設置為 `true`: sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml 修改沙盒鏡像(不然后面啟動初始化k8s報錯: 參考:kubeadm init:failed to pull image registry.k8s.io/pause:3.6_kubernetes_beOkWithAnything-K8S/Kubernetes) 原值:sandbox_image = "registry.k8s.io/pause:3.6" =》"registry.aliyuncs.com/google_containers/pause:3.9" (k8s 1.28.0版本 默認使用 pause:3.9) # 使用 vim 編輯器 定位到 sandbox_image,將 倉庫地址修改成 k8simage/pause:3.6,由于網絡問題無法下載鏡像 k8simage/pause:3.6 vim /etc/containerd/config.toml sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9" 配置crictl sudo cat <<EOF | sudo tee /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF 配置鏡像倉庫 vim /etc/containerd/config.toml --------------------------------------- [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://docker.m.daocloud.io"] --------------------------------------- 啟動并啟用 containerd: sudo systemctl enable containerd
sudo systemctl restart containerd
3. 安裝 Kubernetes 組件3.1 添加 Kubernetes 倉庫cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF 3.2 安裝 kubeadm, kubelet 和 kubectl# 使用阿里云鏡像源 啟用并啟動 `kubelet`: sudo systemctl enable kubelet
sudo systemctl start kubelet
3.3 鎖定版本 kubeadm, kubelet 和 kubectlyum install -y yum-plugin-versionlock
yum versionlock kubeadm kubelet kubectl
4. 初始化機器準備三臺機器,編輯hosts文件 cat >> /etc/hosts << EOF 192.168.1.181 k8s-master 192.168.1.182 k8s-node1 192.168.1.183 k8s-node2 EOF 4.1 初始化Master節點在 192.168.1.181 k8s-master節點上,執行以下命令初始化 Master 節點: sudo kubeadm init \ --image-repository=registry.aliyuncs.com/google_containers \ --kubernetes-version=v1.28.0 \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=192.168.1.181 # 替換為實際IP
如果鏡像拉取失敗,查看網絡問題,或者更換鏡像源# 查看 kubeadm 需要的鏡像列表 kubeadm config images list # 查看特定版本的鏡像列表 kubeadm config images list --kubernetes-version v1.28.0 # 使用國內鏡像源查看 kubeadm config images list --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.28.0 # 使用國內拉取鏡像 kubeadm config images pull \ --image-repository=registry.aliyuncs.com/google_containers \ --kubernetes-version=v1.28.0 4.2 配置 kubectlmkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 工作節點接入命令: # 使用初始化時輸出的命令 kubeadm join 192.168.1.180:6443 \ --token <token> \ --discovery-token-ca-cert-hash sha256:<hash> kubeadm join 192.168.1.181:6443 --token psol7z.iw3dvyry8l3vi7cp \
--discovery-token-ca-cert-hash sha256:d38050a736934f30fac816a2d5a4a739ae57766d0a54341994417dca0bfb8a8b
驗證是否可以正常訪問集群: kubectl get nodes
查看鏡像 # 查看鏡像 crictl images # 查看啟動容器 crictl ps
4.3 初始化Worker Node節點在 192.168.1.182 k8s-node1,192.168.1.183 k8s-node2節點上,執行以下命令初始化 Master 節點: 工作節點接入命令: kubeadm join 192.168.1.181:6443 --token psol7z.iw3dvyry8l3vi7cp \
--discovery-token-ca-cert-hash sha256:d38050a736934f30fac816a2d5a4a739ae57766d0a54341994417dca0bfb8a8b
在Master節點上查看
5. 安裝網絡插件Kubernetes 需要安裝網絡插件以實現 Pod 間通信。這里以 Flannel 為例: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
確保能夠訪問到quay.io這個registery。如果Pod鏡像下載失敗,可以改這個鏡像地址 查看節點,狀態已經變成Ready狀態了。
5. 測試kubernetes集群在Kubernetes集群中創建一個pod,驗證是否正常運行: 在主節點執行命令 kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get pod,svc
瀏覽器訪問地址:http://NodeIP:Port =》 http://192.168.1.181-193:31719
|
![]() |
|
|
博客園
|
|