# Kubernetes中如何快速部署集群
## 前言
Kubernetes作為當前最主流的容器編排平臺,其集群部署一直是開發者和運維人員關注的重點。本文將詳細介紹從環境準備到集群驗證的全流程,涵蓋單節點、多節點以及云環境等多種部署方案,幫助讀者快速構建生產可用的Kubernetes集群。
---
## 一、環境準備
### 1.1 硬件需求
| 節點類型 | CPU | 內存 | 磁盤 |
|---------------|-------|-------|--------|
| Master節點 | 2核+ | 2GB+ | 20GB+ |
| Worker節點 | 1核+ | 1GB+ | 20GB+ |
### 1.2 操作系統要求
- 推薦使用Ubuntu 20.04+/CentOS 7+
- 禁用Swap分區:
```bash
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 安裝minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 啟動集群
minikube start --driver=docker --kubernetes-version=v1.26.0
# 安裝依賴
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
# 添加Kubernetes源
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
sudo apt-mark hold kubelet kubeadm kubectl
# 初始化集群
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
# 安裝網絡插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubeadm init \
--control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" \
--upload-certs \
--pod-network-cidr=192.168.0.0/16
kubeadm join 192.168.1.100:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash>
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# 安裝eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
# 創建集群
eksctl create cluster \
--name prod-cluster \
--region us-west-2 \
--nodegroup-name linux-nodes \
--node-type t3.medium \
--nodes 3
gcloud container clusters create auto-cluster \
--zone us-central1-a \
--cluster-version 1.26 \
--machine-type n1-standard-2 \
--num-nodes 3 \
--enable-autoscaling \
--min-nodes 1 \
--max-nodes 5
kubectl get nodes -o wide
kubectl get pods -A
kubectl cluster-info
# nginx-test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
# 安裝kubestress
curl -L https://git.io/getkubestress | bash
# 運行壓力測試
kubestress --pods 20 --timeout 10m
systemctl status kubelet
journalctl -xeu kubelet
kubectl describe pod <pod-name>
kubectl logs <pod-name> -c <container-name>
kubeadm certs check-expiration
kubeadm certs renew all
版本升級策略
kubeadm upgrade plan
kubeadm upgrade apply v1.26.1
備份關鍵配置
# 備份etcd
etcdctl snapshot save snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
安全加固措施
通過本文介紹的多種部署方案,讀者可以根據實際需求選擇最適合的Kubernetes集群部署方式。建議生產環境至少部署3個Master節點實現高可用,并結合CI/CD流水線實現自動化運維。隨著Kubernetes生態的不斷發展,也建議持續關注新興的部署工具如k3s、k0s等輕量級方案。
注:本文所有命令在Kubernetes 1.26版本驗證通過,不同版本可能存在參數差異 “`
(全文約4500字,實際字數可能因Markdown渲染方式略有差異)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。