在開始安裝前,需完成以下基礎配置,確保系統符合K8S安裝要求:
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
hostnamectl set-hostname k8s-master # Master節點主機名
echo "192.168.1.100 k8s-master" >> /etc/hosts # 替換為Master節點IP
echo "192.168.1.101 k8s-node1" >> /etc/hosts # 替換為Worker節點IP
yum install -y ntpdate && ntpdate ntp.aliyun.com
以上步驟需在**所有節點(Master+Worker)**上執行。
K8S依賴容器運行時,推薦使用Docker(需CentOS 7及以上):
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker
docker --version # 應輸出Docker版本信息
Docker安裝完成后,需配置鏡像加速(可選但推薦):
mkdir -p /etc/docker && tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload && systemctl restart docker
通過yum安裝kubelet(節點代理)、kubeadm(集群初始化工具)、kubectl(集群管理命令行):
cat <<EOF > /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 repo_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
- **安裝組件**:
```bash
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet
注意:安裝完成后,kubelet會自動啟動,但需等待kubeadm init初始化集群后才會正常運行。
Master節點是集群的控制中心,需執行以下命令初始化:
kubeadm init \
--apiserver-advertise-address=192.168.1.100 \ # 替換為Master節點IP
--pod-network-cidr=10.244.0.0/16 \ # 指定Pod網絡CIDR(與后續網絡插件匹配)
--image-repository registry.aliyuncs.com/google_containers # 使用國內鏡像加速
初始化完成后,會輸出類似以下信息(務必保存,用于Worker節點加入集群):
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
配置kubectl(用于管理集群):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
驗證Master節點狀態:
kubectl get nodes # 應顯示Master節點狀態為"NotReady"(需安裝網絡插件后變為Ready)
K8S需要網絡插件實現Pod間通信,推薦使用Flannel(輕量易用):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
驗證網絡插件狀態:
kubectl get pods -n kube-system # 應顯示flannel相關Pod狀態為"Running"
在Worker節點上執行Master節點初始化時輸出的kubeadm join命令(替換為實際Token和IP):
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
驗證Worker節點是否加入:
回到Master節點,執行:
kubectl get nodes # 應顯示所有節點狀態為"Ready"
kubelet無法啟動:檢查/var/log/messages或journalctl -xe,常見原因是swap未禁用或鏡像拉取失?。膳渲脟鴥如R像加速)。kubeadm init失敗:確保系統時間同步、網絡暢通,或嘗試添加--ignore-preflight-errors=all參數(僅用于測試環境)。kubeadm init指定的--pod-network-cidr一致(如Flannel默認使用10.244.0.0/16)。按照以上步驟,即可在CentOS上快速搭建一個基礎的K8S集群。如需生產環境使用,建議補充高可用配置(如多Master節點)、存儲插件(如NFS、Ceph)及安全認證(如TLS證書)。