sudo apt update && sudo apt upgrade -y;sudo swapoff -a,并注释/etc/fstab中的Swap行(避免重启后恢复);/etc/sysctl.d/k8s.conf文件,添加以下内容并应用:net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
执行sudo sysctl --system生效;sudo apt install -y ntpdate && sudo ntpdate ntp.aliyun.com。K8s依赖容器运行时,Docker是常用选择(也可替换为containerd):
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce
sudo systemctl enable --now docker
docker version(需显示Client/Server版本信息)。这三个组件是K8s部署和管理的核心工具:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg] 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 # 锁定版本
kubeadm version、kubelet version、kubectl version(需显示版本信息)。Master节点是集群的控制中心,负责调度和管理:
<Master_IP>为Master节点实际IP,<pod-network-cidr>根据网络插件要求调整,如Flannel用10.244.0.0/16):sudo kubeadm init --apiserver-advertise-address=<Master_IP> --pod-network-cidr=<pod-network-cidr>
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes(此时Master节点状态为NotReady,需安装网络插件后变为Ready)。K8s需要网络插件实现Pod间通信,常用插件包括Flannel、Calico:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get pods -n kube-system(所有插件Pod状态应为Running)。Worker节点负责运行容器化应用,通过Master节点初始化时输出的kubeadm join命令加入:
<Master_IP>、<token>、<sha256>为Master节点输出的对应值):sudo kubeadm join <Master_IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<sha256>
Ready(可通过Master节点的kubectl get nodes查看)。kubectl get nodes # 查看节点状态(应为Ready)
kubectl get pods -A # 查看所有命名空间的Pod状态(应为Running)
Ready,则说明K8s集群部署成功。以上步骤为Ubuntu环境下使用kubeadm工具部署K8s的基础流程,生产环境中还需考虑高可用性(多Master节点)、安全性(TLS认证、RBAC权限控制)、监控与日志(Prometheus+Granafa、ELK)等进阶配置。