sudo apt update && sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
开启内核转发(允许Pod间网络通信):sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF
sudo sysctl --system
(可选)安装Docker作为容器运行时(Kubernetes默认支持):sudo apt install -y docker.io
sudo systemctl enable --now docker
添加Kubernetes官方软件源并安装kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(命令行工具):
sudo apt install -y apt-transport-https curl
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节点上执行初始化命令(指定Pod网络CIDR,后续网络插件需匹配):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,会输出Worker节点加入命令(包含token和CA证书哈希),需保存备用:
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
将Master节点的Kubernetes配置文件复制到当前用户目录,用于后续管理集群:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量级)或Calico(功能丰富)。以Flannel为例:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待插件部署完成(可通过kubectl get pods -n kube-system查看插件状态)。
在每台Worker节点上,执行Master节点初始化时输出的kubeadm join命令,将节点加入集群:
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
在Master节点上运行以下命令,检查所有节点是否处于Ready状态(表示集群搭建成功):
kubectl get nodes
若输出中所有节点的STATUS列显示Ready,则说明集群已正常运行。
若需更简化的部署(适合测试/开发环境),可使用MicroK8s(基于Snap的轻量级Kubernetes发行版):
sudo snap install microk8s --classic
sudo usermod -a -G microk8s $USER # 将当前用户加入microk8s组
newgrp microk8s # 刷新用户组权限
启用常用组件(如Dashboard、DNS):
microk8s enable dashboard dns
验证安装状态:
microk8s status
以上步骤覆盖了Ubuntu环境下Kubernetes集群的快速搭建流程,可根据实际需求调整网络插件或添加更多功能(如Ingress、监控)。