准备环境:搭好地基才能盖楼
在开始ref="/tag/273/" style="color:#B2A89E;font-weight:bold;">部署 Kubernetes 之前,得先准备好几台服务器。通常建议至少准备一台主节点(Master)和两台工作节点(Node),系统推荐使用 Ubuntu 或 CentOS 7+。比如你在阿里云买了三台 ECS,装好了系统,第一步就是确保它们之间能互相 ping 通。
关闭防火墙或开放对应端口也很关键。Kubernetes 依赖不少端口通信,像 6443、10250 这些,如果被防火墙拦住,后面肯定走不通。顺手把 SELinux 关了,省得它在后台“较真”。
安装 Docker 和 kubeadm
所有节点都要安装容器运行时,Docker 是最常见的选择。在 Ubuntu 上执行:
apt-get update && apt-get install -y docker.io接着安装 kubeadm、kubelet 和 kubectl:
apt-get install -y kubelet kubeadm kubectl && systemctl enable kubeletkubeadm 是用来初始化集群的工具,kubelet 是每个节点上的代理服务,kubectl 则是操作集群的命令行工具,三个都得装上。
初始化主节点
在选定的主节点上运行初始化命令:
kubeadm init --pod-network-cidr=10.244.0.0/16这条命令会拉取镜像、生成证书、启动控制平面组件。完成后,终端会输出一段加入集群的命令,记得保存下来,后面节点加入要用。
按照提示,把普通用户配置成能操作集群:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config安装网络插件
刚初始化完的集群还不能跑 Pod,因为缺少网络。Flannel 是个简单靠谱的选择,直接应用配置:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml等个几十秒,用 kubectl get nodes 看状态,主节点应该变成 Ready 了。
加入工作节点
回到之前保存的 join 命令,在每台工作节点上执行。看起来大概是这样:
kubeadm join 192.168.1.10:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:1234...abcdef执行完别急着查结果,节点上线需要点时间。过一分钟后,回主节点运行 kubectl get nodes,看到节点名字和 Ready 状态就说明成功了。
验证部署是否成功
最简单的测试方式是跑一个 Nginx 服务:
kubectl create deployment nginx-app --image=nginx
kubectl expose deployment nginx-app --port=80 --type=NodePort然后用 kubectl get svc 查一下分配的端口,浏览器访问任意节点的 IP 加端口,看到欢迎页就说明整个链路通了。
这时候你已经有了一个可工作的 Kubernetes 集群。虽然只是起步,但就像学会了骑自行车的第一步,后面的 Helm、Ingress、自动伸缩都是在这基础上加功能而已。