温馨提示×

怎样在Ubuntu搭K8s环境

小樊
44
2026-10-28 11:57:57
栏目: 智能运维

下面给你一套在 Ubuntu 上搭建 Kubernetes(K8s)环境的实用指南,以**单 Master + 多 Node(或单机 All-in-One)**为例,使用目前最主流的 kubeadm 方式。


一、环境准备

1. 系统要求

  • Ubuntu 20.04 / 22.04(推荐 22.04)
  • 2 核 CPU 以上
  • 2GB 内存以上(生产建议 4G+)
  • 多台机器(或一台虚拟机也可)

2. 机器规划示例

k8s-master   192.168.1.10
k8s-node1    192.168.1.11
k8s-node2    192.168.1.12

如果是学习,可以只装一台(Master 同时当 Node)


二、所有节点都要做的操作

1. 关闭 swap

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

2. 设置主机名(每台不同)

sudo hostnamectl set-hostname k8s-master

3. 配置 hosts(可选但推荐)

cat <<EOF | sudo tee -a /etc/hosts
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
192.168.1.12 k8s-node2
EOF

4. 禁用防火墙(测试环境)

sudo ufw disable

三、安装容器运行时(Containerd)

K8s 已不再支持 Docker,推荐使用 containerd

1. 安装依赖

sudo apt update
sudo apt install -y ca-certificates curl gnupg

2. 安装 containerd

sudo apt install -y containerd

3. 生成默认配置

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

4. 修改 systemd 驱动

编辑:

sudo vi /etc/containerd/config.toml

改为:

SystemdCgroup = true

5. 重启 containerd

sudo systemctl restart containerd
sudo systemctl enable containerd

四、安装 kubeadm / kubelet / kubectl

1. 添加 K8s 源

sudo apt install -y apt-transport-https curl
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

2. 安装

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

五、初始化 Master 节点

只在 Master 执行:

sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --image-repository=registry.aliyuncs.com/google_containers

初始化成功后,会出现类似:

kubeadm join 192.168.1.10:6443 --token xxxx \
    --discovery-token-ca-cert-hash sha256:xxxx

配置 kubectl

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

六、安装网络插件(CNI)

推荐 Flannel(简单):

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

查看状态:

kubectl get pods -n kube-system

七、加入 Node 节点

在 Node 上执行 Master 初始化后的 kubeadm join 命令:

sudo kubeadm join 192.168.1.10:6443 \
  --token xxxx \
  --discovery-token-ca-cert-hash sha256:xxxx

八、验证集群

在 Master 上:

kubectl get nodes

输出示例:

NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   10m   v1.29.0
k8s-node1    Ready    <none>          8m    v1.29.0

九、进阶建议

  • 单机学习:安装 Minikube 或 Kind
  • 生产环境:
    • 多 Master(高可用)
    • 使用 Calico / Cilium
    • 启用 TLS & RBAC
  • 可视化:
    • Kubernetes Dashboard
    • Lens

如果你需要: ✅ 单机 Minikube 教程
✅ 生产级高可用 K8s
✅ ARM / 树莓派 K8s
✅ Docker 老版本兼容方案

告诉我你的使用场景,我可以直接给你定制方案。

0 踩