在 Kubernetes (k8s) 中管理跨多台机器的 Docker 容器,本质上是 Kubernetes 的核心功能。以下是关键步骤和概念解析:
kubelet
、kube-proxy
和 Docker/Containerd)# 安装 kubeadm/kubelet/kubectl
sudo apt-get update && sudo apt-get install -y kubeadm kubelet kubectl
# 初始化 Master(替换 <ip> 为实际 IP)
sudo kubeadm init --apiserver-advertise-address=<ip> --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
在 Master 初始化后,会输出类似以下命令:
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
在 Worker 节点执行此命令即可加入集群。
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
部署:
kubectl apply -f nginx-pod.yaml
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
部署:
kubectl apply -f nginx-deployment.yaml
yaml
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
kubectl logs <pod-name>
或集成 EFK 栈。kubectl get pods -n kube-system
)。kubelet
服务状态:systemctl status kubelet
。通过以上步骤,Kubernetes 可以统一管理多台机器上的 Docker 容器,实现自动化部署、扩缩容和故障恢复。建议结合 CI/CD 工具(如 Jenkins、ArgoCD)进一步提升运维效率。