Kubernetes集群部署

以下是如何快速部署Kubernetes集群的分步指南,涵盖单节点、多节点及生产级高可用集群的部署方法,结合主流的工具和优化技巧


一、单节点快速部署(开发/测试环境)

1. 使用 Minikube(本地快速体验)

适用场景:本地开发、学习K8s基础功能。
步骤

# 安装Minikube(需提前安装Docker或虚拟机驱动)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 启动集群(使用Docker驱动)
minikube start --driver=docker

# 验证集群
kubectl get nodes

特点

  • 一键启动单节点集群,集成Dashboard、Ingress等组件。

  • 支持离线镜像加载:minikube image load my-app:latest


2. 使用 k3s(轻量级K8s)

适用场景:边缘计算、资源受限环境。
步骤

# 一键安装(主节点)
curl -sfL https://get.k3s.io | sh -

# 查看节点
kubectl get nodes

# 加入工作节点(在另一台机器执行)
curl -sfL https://get.k3s.io | K3S_URL=https://主节点IP:6443 K3S_TOKEN=节点token sh -

特点

  • 二进制文件仅40MB,默认使用SQLite替代etcd。

  • 内置Traefik作为Ingress控制器。


二、多节点生产级部署(高可用)

1. 使用 kubeadm 部署高可用集群

适用场景:生产环境、需要控制平面高可用性。
架构:3个Master节点(堆叠式etcd)+ N个Worker节点。

步骤

1.1 所有节点准备
# 关闭Swap和防火墙
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo systemctl stop firewalld && sudo systemctl disable firewalld

# 安装Docker和kubeadm
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

sudo yum install -y kubeadm-1.27.3 kubelet-1.27.3 kubectl-1.27.3
sudo systemctl enable --now kubelet
1.2 初始化第一个Master节点
sudo kubeadm init \
  --control-plane-endpoint "LOAD_BALANCER_IP:6443" \
  --upload-certs \
  --pod-network-cidr=10.244.0.0/16 \
  --image-repository registry.aliyuncs.com/google_containers

# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件(Flannel)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
1.3 加入其他Master节点
# 生成加入命令(在第一个Master执行)
kubeadm token create --print-join-command

# 在其他Master节点执行(追加--control-plane参数)
sudo kubeadm join LOAD_BALANCER_IP:6443 --token ... --control-plane --certificate-key ...
1.4 加入Worker节点
# 在Worker节点执行普通加入命令
sudo kubeadm join LOAD_BALANCER_IP:6443 --token ... 

2. 使用自动化工具(Rancher/Kubespray)

适用场景:批量部署、企业级管理。
方法对比

工具特点
Rancher图形化界面,支持多集群管理,内置监控和流水线。
Kubespray基于Ansible,支持多云环境,灵活定制组件版本。

Kubespray示例

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

# 安装依赖
pip install -r requirements.txt

# 配置节点清单
cp -rfp inventory/sample inventory/mycluster
cat > inventory/mycluster/hosts.yaml <<EOF
all:
  hosts:
    node1:
      ansible_host: 192.168.1.101
      ip: 192.168.1.101
      access_ip: 192.168.1.101
    node2:
      ansible_host: 192.168.1.102
      ip: 192.168.1.102
      access_ip: 192.168.1.102
  children:
    kube_control_plane:
      hosts:
        node1
    kube_node:
      hosts:
        node1
        node2
    etcd:
      hosts:
        node1
    calico_rr:
      hosts: {}
EOF

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

三、部署优化与注意事项

1. 国内环境加速
  • 镜像仓库:使用阿里云镜像源(registry.aliyuncs.com/google_containers)。

  • Kubernetes组件:修改kubeadm配置文件中的imageRepository字段。

2. 常见问题排查
  • 节点无法加入集群

    • 检查防火墙是否开放6443、2379-2380、10250-10255端口。

    • 确保所有节点时间同步(ntpdchrony)。

  • Pod网络不通

    • 确认CNI插件(如Flannel/Calico)已正确安装。

    • 执行kubectl get pods -n kube-system检查核心组件状态。

3. 生产环境建议
  • 高可用架构

    • 使用外部负载均衡器(如HAProxy+Nginx)分发API Server流量。

    • 部署独立的etcd集群(至少3节点)。

  • 持久化存储:集成云厂商CSI插件(如AWS EBS、阿里云云盘)。


四、部署工具对比与选择

工具/方法适用场景优点缺点
Minikube本地开发、快速体验简单易用,集成工具链仅支持单节点
k3s边缘计算、资源受限环境轻量级,启动速度快功能较原生K8s略有裁剪
kubeadm生产环境、自定义部署官方推荐,灵活可控手动配置复杂度较高
Rancher多集群管理、企业级运维图形化界面,全生命周期管理需要额外资源部署

通过上述方法,您可以在10分钟到1小时内完成从单节点到生产级集群的部署。关键建议

  • 开发测试优先使用Minikube或k3s,生产环境选择kubeadm或Kubespray。

  • 遇到问题时,善用kubectl describe和日志排查(journalctl -u kubelet)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值