前言
不要问,只要做™
不知道问我现在有什么用
我就单纯想折腾
禁用 SWAP 交换分区
您可能了解硬盘驱动器上的交换空间,操作系统尝试将其当作 RAM 来使用。操作系统尝试将访问频率较低的数据移至交换空间,以释放 RAM 以执行更直接的任务。然而,访问交换区中的数据比访问 RAM 中的数据慢得多,因为硬盘驱动器比 RAM 慢。
Kubernetes 根据对可用资源的了解来安排工作。如果工作负载开始使用交换,Kubernetes 就很难做出准确的调度决策。因此,建议在安装 Kubernetes 之前禁用 SWAP 分区。
查看内存分区
暂时禁用 SWAP 交换分区
永久关闭 SWAP 交换分区
确认 SWAP 分区已关闭
1 2
| sudo reboot sudo free -m
|
设置主机名
修改主机名称
当我们使用 Kubernetes 集群时,我们必须为节点提供唯一的主机名,以便 Kubernetes 可以使用这些名称来识别节点。
- 设置主机名(
hostname)
1
| sudo hostnamectl set-hostname "hostname"
|
- 刷新
Bash 会话
修改主机名称解析
设置主机名还不够。我们还必须将主机名映射到它们的 IP 地址。您应该更新/etc/hosts所有节点(或至少主节点)的文件。
- 更新
/etc/hosts 文件
设置 IPV4 网桥
要在所有节点上配置 IPV4 网桥
加载内核模块
1 2 3 4
| cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
|
overlay: 用于实现容器的文件系统层叠。
br_netfilter: 用于配置 Linux 桥接网络的过滤规则。
加载其他必要的内核模块
1 2
| sudo modprobe overlay sudo modprobe br_netfilter
|
配置 sysctl 参数
1 2 3 4 5
| cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
|
net.bridge.bridge-nf-call-iptables: 允许 iptables 处理桥接流量。
net.bridge.bridge-nf-call-ip6tables: 允许 ip6tables 处理桥接流量。
net.ipv4.ip_forward: 启用 IPv4 转发。
加载 sysctl 参数
- 应用上述配置的
sysctl 参数,确保参数在系统重启后仍然有效。
安装 Kubernetes 组件
让我们在每个节点上安装 kubelet、kubeadm 和 kubectl 以创建 Kubernetes 集群。它们在管理 Kubernetes 集群中发挥着重要作用。
Kubelet 是在每个节点上运行的节点代理,负责确保容器按照 Pod 规范的指定在 Pod 中运行。(Pod 是 Kubernetes 集群中最小的可部署单元)。
kubeadm 用于引导 Kubernetes 集群,包括设置主节点并帮助工作节点加入集群。
Kubectl 是 Kubernetes 的 CLI 工具,用于运行命令来执行各种操作,例如直接从终端部署应用程序、检查资源和管理集群操作。
添加 apt 依赖包
- 更新
apt 软件源
- 确认软件包依赖安装完成
1
| sudo apt-get install -y apt-transport-https ca-certificates curl
|
添加 Kubernetes 软件包源
- 创建一个目录,在其中存储一个特殊密钥,用于验证 Kubernetes 包的真实性。
1
| sudo mkdir /etc/apt/keyrings
|
- 从
Google 获取公钥并将其存储在我们在上一步中创建的文件夹中。
1
| curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
|
- 添加
Kubernetes 软件包源
1
| echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
|
- 更新
apt 软件源
安装 Kubernetes 组件
1
| sudo apt install -y kubelet kubeadm kubectl
|
1
| sudo apt install -y kubelet=1.29.0-1.1 kubeadm=1.29.0-1.1 kubectl=1.29.0-1.1
|
配置 Docker 环境
安装 Docker
Docker平台允许您在容器内创建、分发和运行应用程序。
这些容器提供了一个轻量级和便携式环境,确保在各种设置中保持一致的性能。
Docker 作为容器运行时,通过促进容器化应用程序的高效管理和部署,在 Kubernetes 中发挥着至关重要的作用。
- 安装
Docker 简简单单一条指令
1
| sudo apt install docker.io
|
- 配置
Docker 开机启动
1 2
| sudo systemctl start docker sudo systemctl enable docker
|
配置 containerd
- 创建
containerd 配置文件夹
1
| sudo mkdir /etc/containerd
|
- 创建默认配置文件并保存为
config.toml
1
| sudo sh -c "containerd config default > /etc/containerd/config.toml"
|
- 修改
config.toml 文件,将 "SystemdCgroup" 设置为 true
1
| sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
|
重新启动服务
- 重新启动
containerd 和 kubelet 服务,以应用对 containerd 配置文件的更改。
1 2
| sudo systemctl restart containerd.service sudo systemctl restart kubelet.service
|
启用 kubelet 服务自启动
1
| sudo systemctl enable kubelet.service
|
主节点上初始化 Kubernetes 集群
下载 Kubernetes 组件镜像
1
| sudo kubeadm config images pull
|
初始化主节点
- 按照自己需求修改内网地址
--pod-network-cidr 标志设置 pod 网络的 IP 地址范围。
1
| sudo kubeadm init --pod-network-cidr=192.168.8.0/24
|
配置 kubectl
- 创建
.kube 目录
- 复制集群管理配置文件到用户目录
1
| sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
|
- 更改配置文件的所有权,以便用户拥有交互权限
1
| sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
配置 kubectl 和 Calico
部署 Calico Operator
- 使用以下命令在主节点上部署
Calico Operator
1
| kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/tigera-operator.yaml
|
下载 Calico 自定义资源文件
1
| curl https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml -O
|
修改 CIDR 地址
- 修改下载的自定义资源中的
CIDR 以匹配您的 Pod 网络
1
| sed -i 's/cidr: 192\.168\.0\.0\/16/cidr: 192.168.8.0\/24/g' custom-resources.yaml
|
创建 Calico 资源
1
| kubectl create -f custom-resources.yaml
|
检查 Calico 组件运行状态
1
| kubectl get pods -n kube-system
|
参考 & 引用
https://www.cherryservers.com/blog/install-kubernetes-on-ubuntu