随笔 - 307  文章 - 0  评论 - 5  阅读 - 4264

Kubernetes集群部署方式

Kubernetes集群部署方式:从手动搭建到云原生托管

在Kubernetes(K8s)生态中,集群部署是开发者与运维团队面临的首要挑战。不同的部署方式对应不同的场景需求,从本地开发到大规模生产环境,选择合适的方法能显著提升效率和稳定性。本文将全面解析主流的Kubernetes集群部署方案,涵盖其核心原理、适用场景及实践建议。


一、手动部署:深度理解K8s架构的必经之路(此处一概而过,有机会更新一份完整的二进制安装k8s)

核心流程

  1. 基础设施准备
    • 物理机/虚拟机:至少3台节点(1 Master + 2 Worker)
    • 操作系统:CentOS 7+/Ubuntu 20.04+,禁用Swap分区
  2. 依赖组件安装
    • 容器运行时(Docker、containerd、CRI-O)
    • kubeadmkubeletkubectl二进制包
  3. 控制平面初始化
    # 手动启动etcd集群(示例)
    etcd --name master1 --data-dir /var/lib/etcd \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://<MASTER_IP>:2379
    
    # 启动API Server
    kube-apiserver --etcd-servers=http://<ETCD_IP>:2379 \
      --service-cluster-ip-range=10.96.0.0/12 \
      --bind-address=0.0.0.0
    
  4. 节点加入集群
    通过kubeadm token create生成令牌,Worker节点执行kubeadm join

适用场景

  • Kubernetes架构学习与原理验证
  • 定制化需求极高的特殊环境(如安全隔离的内网)

挑战与风险

  • 版本兼容性管理复杂
  • 证书轮换、高可用配置需完全手动实现

二、kubeadm:官方推荐的生产级部署工具

核心优势

  • 一键初始化:自动生成CA证书、配置控制平面组件
  • 高可用支持:通过--control-plane-endpoint集成负载均衡器
  • 版本一致性:确保各节点组件版本匹配

典型部署流程

# Master节点初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 \
  --control-plane-endpoint "LOAD_BALANCER_DNS:6443" \
  --upload-certs

# Worker节点加入
kubeadm join LOAD_BALANCER_DNS:6443 --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash>

# 安装CNI插件(如Calico)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

高可用架构

  • 负载均衡器:前置HAProxy/Nginx,分发API Server流量
  • 多Master节点:通过kubeadm join --control-plane扩展控制平面

生产建议

  • 使用kubeadm upgrade进行版本升级
  • 定期备份/etc/kubernetes/pki目录下的证书文件

三、第三方自动化工具对比

工具 核心特点 适用场景
Kubespray 基于Ansible,支持多云环境 混合云/裸金属部署
RKE 容器化安装,内置etcd和网络插件 快速搭建生产集群
Kops 深度集成AWS(支持GCP、OpenStack) 云原生环境自动化管理

Kubespray实战示例

# 克隆仓库
git clone https://github.com/kubernetes-sigs/kubespray.git

# 配置清单
cp -r inventory/sample inventory/mycluster
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

# 启动部署
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v

四、托管云服务:聚焦业务而非基础设施

主流服务对比

服务商 产品 核心优势 定价模型
GCP GKE 原生集成Google云服务,自动扩缩容 按节点+控制平面收费
AWS EKS 深度整合IAM、ALB,支持Fargate无服务器节点 按集群小时数计费
Azure AKS 无缝对接Active Directory,Windows容器支持 仅节点资源收费

最佳实践

  • EKS集群创建(AWS CLI)
    eksctl create cluster --name prod-cluster \
      --region us-west-2 \
      --nodegroup-name linux-nodes \
      --node-type t3.medium \
      --nodes 3
    
  • GKE自动修复配置
    gcloud container clusters create autohealing-demo \
      --enable-autorepair \
      --maintenance-window "07:00-08:00"
    

五、轻量级部署方案:开发与边缘计算首选

工具 资源占用 核心特性
Minikube 单节点 支持多驱动(Docker、VMware),插件市场
MicroK8s 低至512MB RAM 全功能集群,内置GPU支持,自动更新
Kind 基于Docker容器 多节点模拟,CI/CD集成

MicroK8s边缘计算示例

# 在Raspberry Pi上安装
sudo snap install microk8s --classic

# 启用常用模块
microk8s enable dns ingress storage

# 部署应用
microk8s kubectl create deployment nginx --image=nginx

六、部署方式选择决策树

Yes
Yes
No
No
Yes
No
Yes
No
需求场景
生产环境?
是否在公有云?
使用托管服务GKE/EKS/AKS
使用kubeadm或Kubespray
开发测试?
Minikube/MicroK8s/Kind
边缘/IoT场景?
MicroK8s/K3s
第三方工具如RKE

七、总结与趋势展望

  • 学习路径建议:从Minikube入门,逐步过渡到kubeadm,最终掌握云服务集成。
  • 新兴趋势
    • GitOps部署:结合Argo CD实现声明式集群管理
    • Serverless K8s:如AWS Fargate、Azure Container Instances
    • 边缘优化:K3s、kubeEdge等轻量化方案崛起

扩展阅读

选择适合的部署方式,如同为Kubernetes旅程选择正确的交通工具——无论是自行车(Minikube)还是超音速飞机(托管云服务),关键在于与目标场景完美契合。

posted on   Leo-Yide  阅读(122)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示