Ubuntu環境下Kubernetes容器管理指南
在Ubuntu上使用Kubernetes管理容器前,需完成以下基礎配置:
sudo apt update && sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/1/g' /etc/fstab
echo "net.bridge.bridge-nf-call-iptables = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/k8s.conf
sudo sysctl --system
sudo apt install -y ntpdate && sudo ntpdate ntp.aliyun.com
sudo apt install -y docker.io
sudo systemctl enable --now docker
kubelet
(節點管理)、kubeadm
(集群初始化)、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 install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
kubeadm init
命令,指定Pod網絡CIDR(如10.244.0.0/16
),生成加入集群的命令:sudo kubeadm init --pod-network-cidr=10.244.0.0/16
執行后,復制輸出的kubeadm join
命令備用。mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/v3.26/manifests/calico.yaml
kubeadm join
命令,完成節點加入:sudo kubeadm join <Master-IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <HASH>
Deployment
創建Pod副本集(以Nginx為例),指定鏡像和副本數:kubectl create deployment nginx --image=nginx --replicas=3
Service
將Pod暴露為可訪問端點(如NodePort類型,端口80):kubectl expose deployment nginx --port=80 --type=NodePort
kubectl scale deployment nginx --replicas=5
# 啟用HPA(需提前安裝Metrics Server)
kubectl autoscale deployment nginx --cpu-percent=50 --min=2 --max=10
kubectl delete deployment nginx
kubectl delete service nginx
kubectl get nodes # 查看節點狀態(需為Ready)
kubectl get pods -o wide # 查看Pod狀態及所在節點
kubectl get services # 查看Service狀態
kubectl describe pod <Pod名稱> # 查看Pod詳情(如事件、狀態)
kubectl logs <Pod名稱> # 查看Pod日志
kubectl exec -it <Pod名稱> -- /bin/bash # 進入Pod容器(交互模式)
kubectl delete pod <Pod名稱> # 刪除指定Pod(若屬于Deployment,會自動重建)
kubectl delete deployment <Deployment名稱> # 刪除Deployment及關聯Pod
livenessProbe
(活性探針)檢測容器健康狀態,失敗時自動重啟;使用restartPolicy
(重啟策略)控制容器失敗后的行為(如Always
、OnFailure
):# Deployment示例(包含探針)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
spec:
containers:
- name: nginx
image: nginx
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 15
periodSeconds: 10
restartPolicy: Always
PostStart
(容器啟動后執行,如初始化腳本)和PreStop
(容器終止前執行,如優雅關閉)鉤子實現自定義操作:# Deployment示例(包含生命周期鉤子)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
spec:
containers:
- name: nginx
image: nginx
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo 'Container started' > /usr/share/nginx/html/welcome.txt"]
preStop:
exec:
command: ["/usr/sbin/nginx", "-s", "quit"]
kubectl top
命令查看節點和Pod的資源使用情況(需安裝Metrics Server):kubectl top nodes
kubectl top pods
kubectl cluster-info
etcdctl
工具或第三方工具(如Velero)。通過以上步驟,可在Ubuntu環境下使用Kubernetes完成容器的部署、管理、擴縮容及生命周期維護,實現容器化應用的高效編排。