准备阶段:明确目标和环境
想搭容器编排系统,先别急着敲命令。就像装修前得有设计图一样,得先想清楚你要跑什么服务。比如你打算部署一个博客系统,前端用React,后端是Node.js,再加个MySQL数据库,这些都得提前规划好。
常见的选择是Kubernetes(简称K8s),它能自动管理容器的启动、扩容、故障恢复。硬件方面,至少准备两台Linux服务器,一台当主节点(Master),另一台做工作节点(Worker)。本地测试可以用虚拟机或Minikube快速验证。
安装必要组件
所有节点都要装Docker作为容器运行时。执行以下命令:
sudo apt-get update
sudo apt-get install -y docker.io接着安装kubectl(命令行工具)、kubeadm(集群引导工具):
sudo apt-get 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-get update
sudo apt-get install -y kubelet kubeadm kubectl安装完记得关闭Swap分区,否则kubelet会报错:
sudo swapoff -a初始化主节点
在主节点执行初始化命令:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16成功后会出现加入集群的命令提示,记得保存下来。接下来配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config安装网络插件
K8s默认不带网络通信能力,需要手动加。Flannel是个简单选择:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml等几秒钟,用kubectl get nodes能看到主节点状态变Ready就说明通了。
添加工作节点
回到之前保存的join命令,在Worker机器上运行。比如:
sudo kubeadm join 192.168.1.10:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx稍等片刻,在主节点执行kubectl get nodes,如果看到两个节点都Ready,那集群骨架就搭好了。
部署你的第一个应用
现在可以部署服务了。比如起一个Nginx容器:
kubectl create deployment nginx-app --image=nginx
kubectl expose deployment nginx-app --port=80 --type=NodePort然后查一下分配的端口:kubectl get services,浏览器访问任意节点IP加对应端口就能看到欢迎页。
这种流程看似复杂,但一旦跑通一次,后续复制模板就行。很多公司上线微服务,底层就是这套逻辑,只不过规模更大、加了监控和自动伸缩策略而已。