PVE 上 Debian 12 虚拟机部署 Kubernetes 1.31 简要记录
status
Published
type
Post
slug
pve-debian-12-vm-deploy-kubernetes-1-31-brief-record
date
Sep 23, 2024
tags
PVE
Linux
Config
K8s
DevOps
summary
文章记录了在 PVE 虚拟机上部署 Kubernetes 1.31 集群的操作过程,包括环境准备,安装并配置 containerd 作为容器运行时,使用 kubeadm 初始化 Kubernetes 集群,并部署 Cilium 。最后,文章验证了集群功能并展示了如何删除集群。
Kubernetes 近期发布了 1.31 版本,正好之前 PVE 中已有的 Kubernetes 测试环境版本有点旧了。干脆重新创建虚拟机部署 Kubernetes 吧!
参照上方的链接👆,使用 Terraform 来创建四台虚拟机,一台作 Master Node,其余三台作 Worker Node。(资源限制,此处采用单节点控制面,不做高可用)
集群主机配置
前置准备工作
卸载 Docker (全新环境或未安装过可跳过)
关闭服务
内核参数设置
内核模块
CRI (Containerd)
containerd 安装
containerd 服务
containerd.service
CNI-Plugins 安装
nerdctl
nerdctl 是一个操作 containerd 的命令行工具,提供类似 docker 命令的操作,可以提升运维操作体验。
安装 Kubernetes 组件
更新软件包
初始化集群
在要作为主节点的机器上通过 Kubeadm 命令初始化集群
- 命令行方式:
- 配置文件方式
生成默认配置文件
kubeadm config print init-defaults > kubeadm.yaml
初始化过程截图
初始化完成后会显示加入集群的相关命令,如下所示:
根据提示在其余节点执行
kubeadm join
命令。此时未安装pod网络插件,所以集群状态是 NotReady 未就绪的。
由于集群节点通常是按顺序初始化的,CoreDNS Pod 很可能都运行在第一个控制面节点上。 为了提供更高的可用性,请在加入至少一个新节点后使用kubectl -n kube-system rollout restart deployment coredns
命令,重新平衡这些 CoreDNS Pod。
CNI 网络组件
Cilium
既然是测试环境,就体验下基于 eBPF 的 Cilium,下面为安装过程
此时发现有 Pod 无法启动,通过 kubectl desc 命令得到启动失败原因如下:
执行如下命令解决:
Calico
这里附带一下之前 calico 的安装方式
修改
CALICO_IPV4POOL_CIDR
为自定义的网段,修改 CALICO_IPV4POOL_IPIP
为 Always
启用 ipip 协议。验证 coredns dns 转发是否正常