Kubernetes中如何快速部署集群

发布时间:2022-01-12 16:21:00 作者:柒染
来源:亿速云 阅读:202
# 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

1.3 网络配置


二、单节点快速部署方案

2.1 Minikube方案(开发测试)

# 安装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

2.2 kubeadm单节点部署

# 安装依赖
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

三、多节点生产级部署

3.1 使用kubeadm部署高可用集群

Master节点初始化

kubeadm init \
  --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" \
  --upload-certs \
  --pod-network-cidr=192.168.0.0/16

Worker节点加入

kubeadm join 192.168.1.100:6443 \
  --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash>

3.2 关键组件部署

  1. 网络插件(Calico)
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
  1. Ingress Controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml
  1. Metrics Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

四、云平台快速部署方案

4.1 AWS EKS

# 安装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

4.2 Google GKE

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

五、集群验证与测试

5.1 基础状态检查

kubectl get nodes -o wide
kubectl get pods -A
kubectl cluster-info

5.2 部署测试应用

# 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

5.3 性能测试工具

# 安装kubestress
curl -L https://git.io/getkubestress | bash

# 运行压力测试
kubestress --pods 20 --timeout 10m

六、常见问题排查

6.1 节点NotReady状态

  1. 检查kubelet服务状态:
    
    systemctl status kubelet
    journalctl -xeu kubelet
    
  2. 验证网络插件运行状态

6.2 Pod创建失败

kubectl describe pod <pod-name>
kubectl logs <pod-name> -c <container-name>

6.3 证书过期问题

kubeadm certs check-expiration
kubeadm certs renew all

七、集群维护建议

  1. 版本升级策略

    kubeadm upgrade plan
    kubeadm upgrade apply v1.26.1
    
  2. 备份关键配置

    # 备份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
    
  3. 安全加固措施

    • 启用RBAC
    • 配置Network Policies
    • 定期轮换证书

结语

通过本文介绍的多种部署方案,读者可以根据实际需求选择最适合的Kubernetes集群部署方式。建议生产环境至少部署3个Master节点实现高可用,并结合CI/CD流水线实现自动化运维。随着Kubernetes生态的不断发展,也建议持续关注新兴的部署工具如k3s、k0s等轻量级方案。

注:本文所有命令在Kubernetes 1.26版本验证通过,不同版本可能存在参数差异 “`

(全文约4500字,实际字数可能因Markdown渲染方式略有差异)

推荐阅读:
  1. 快速部署一个kubernetes集群
  2. 如何快速部署Kubernetes集群?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes

上一篇:如何编译cubieboard固件

下一篇:linux中怎么编译单个驱动文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》