温馨提示×

怎样自动化部署debian k8s

小樊
43
2026-09-29 10:25:41
栏目: 智能运维

下面给你一个从 0 到 1 的 Debian + Kubernetes 自动化部署思路,覆盖工具选型、步骤示例、可落地方案,适合生产或测试环境。


一、常见自动化部署方案对比

方案 适用场景 特点
kubeadm + Ansible 最常用、可控 官方推荐,灵活
Kubernetes the Hard Way 学习/定制 手动多,不推荐生产
Rancher / K3s 轻量/边缘 一键部署
Terraform + Cloud 云环境 基础设施即代码
Kubespray 大规模集群 基于 Ansible,偏重

✅ 推荐:Debian + kubeadm + Ansible(最稳)


二、基础环境(示例)

  • OS:Debian 12 (bookworm)
  • 节点:
    • 1 Master
    • 2 Worker
  • 容器运行时:containerd
  • Kubernetes:1.29+

三、手动核心步骤(先理解)

1. 系统初始化(所有节点)

# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward=1
EOF
sysctl --system

# 加载模块
modprobe br_netfilter

2. 安装 containerd

apt update
apt install -y containerd
containerd config default > /etc/containerd/config.toml
systemctl restart containerd

3. 安装 kubeadm

apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" > /etc/apt/sources.list.d/kubernetes.list

apt update
apt install -y kubelet kubeadm kubectl

4. 初始化 Master

kubeadm init --pod-network-cidr=10.244.0.0/16

5. 安装 CNI(Flannel 示例)

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

6. Worker 加入

kubeadm join <master-ip>:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx

四、Ansible 自动化示例(重点)

1. 目录结构

k8s-deploy/
├── inventory.ini
├── playbook.yml
└── roles/
    ├── common/
    ├── containerd/
    └── k8s/

2. inventory.ini

[masters]
master ansible_host=192.168.1.10

[workers]
node1 ansible_host=192.168.1.11
node2 ansible_host=192.168.1.12

3. playbook.yml(简化)

- hosts: all
  roles:
    - common
    - containerd

- hosts: masters
  roles:
    - k8s-master

- hosts: workers
  roles:
    - k8s-worker

4. 关键 Role 示例(common)

- name: Disable swap
  command: swapoff -a

- name: Remove swap from fstab
  lineinfile:
    path: /etc/fstab
    regexp: 'swap'
    state: absent

五、一键部署脚本(简化版)

#!/bin/bash
ansible-playbook -i inventory.ini playbook.yml

六、进阶自动化建议

✅ 生产级增强

  • 使用 Terraform 管理 Debian 虚拟机
  • 使用 MetalLB 做 LoadBalancer
  • 使用 Cluster Autoscaler
  • 使用 GitOps(ArgoCD / Flux)

✅ 轻量方案

curl -sfL https://get.k3s.io | sh -

七、常见坑

❌ swap 没关
❌ 时间不同步(务必 NTP)
❌ 防火墙未放行 6443/10250
❌ containerd 配置错误


八、如果你告诉我:

  • 物理机 / 云 / 虚拟机?
  • 单节点还是多节点?
  • 是否要 HA?

我可以直接给你一套完整可跑的 Ansible 仓库。

0 踩