ping命令验证);kubelet无法正常启动)。curl、wget、vim等基础工具(可通过sudo apt install -y curl wget vim安装)。在所有节点上执行以下命令,更新系统包列表并升级已安装的软件包:
sudo apt update && sudo apt upgrade -y
Kubernetes依赖容器运行时(如Docker)来运行容器,以下是Docker的安装步骤:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
Kubernetes的核心组件需通过以下步骤安装:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
在Master节点上执行以下命令,初始化Kubernetes集群:
sudo kubeadm init \
--pod-network-cidr=10.244.0.0/16 \ # 指定Pod网络CIDR(与后续网络插件匹配)
--service-cidr=10.96.0.0/12 \ # 指定Service网络CIDR
--apiserver-advertise-address=<Master-IP> # 替换为Master节点的实际IP
kubeadm join命令(用于Worker节点加入集群),请务必保存该命令。kubectl是Kubernetes的命令行工具,需配置其访问集群的权限:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl是否配置成功:kubectl version --client
Kubernetes需要网络插件来实现Pod间的通信,常用插件为Flannel(轻量级、易部署):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system
若所有Pod状态均为Running,则说明网络插件安装成功。在Worker节点上执行Master节点初始化时输出的kubeadm join命令(替换为实际的IP、Token和Hash):
sudo kubeadm join <Master-IP>:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash>
kubeadm join命令,可在Master节点上重新生成:kubeadm token create --print-join-command
在Master节点上执行以下命令,验证集群是否正常运行:
kubectl cluster-info # 查看集群信息
kubectl get nodes # 查看节点状态(所有节点应为Ready)
kubectl get pods -A # 查看所有命名空间的Pod状态(应为Running)
验证集群功能,部署一个简单的Nginx应用:
kubectl create deployment nginx-app --image=nginx --replicas=2
kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
kubectl get svc nginx-web-svc
http://<Master-IP>:<NodePort>,若看到Nginx欢迎页面,则说明集群工作正常。chrony),确保时间同步(否则可能导致证书验证失败);