以下是在 Ubuntu Server 24 上安装 Kubernetes(k8s)的详细步骤和命令:
1. 系统准备
1.1 更新系统
首先,需要确保系统是最新的,运行以下命令更新软件包列表并升级已安装的软件包:
bash sudo apt update sudo apt upgrade -y
1.2 禁用 Swap
Kubernetes 要求禁用 Swap 分区,以保证性能和稳定性。可以通过编辑 /etc/fstab 文件来永久禁用 Swap:
bash sudo sed -i ‘/ swap / s/(.*)$/#\1/g’ /etc/fstab sudo swapoff -a
1.3 启用内核模块
启用一些必要的内核模块,如 br_netfilter,这有助于网络流量的转发:
bash sudo modprobe br_netfilter echo ‘1’ | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
1.4 配置系统参数
配置一些系统参数以支持 Kubernetes 的网络功能:
bash 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 sudo sysctl –system
2. 安装 Docker 或其他容器运行时
Kubernetes 需要一个容器运行时来管理容器,这里以 Docker 为例进行安装。
2.1 添加 Docker 官方 GPG 密钥
bash sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
2.2 添加 Docker 软件源
bash echo \ “deb [arch=”$(dpkg –print-architecture)“ signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ ”$(. /etc/os-release && echo “$VERSION_CODENAME”)“ stable” | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
2.3 安装 Docker
bash sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
2.4 配置 Docker 使用 systemd 作为 cgroup 驱动
编辑 /etc/containerd/config.toml 文件:
bash sudo nano /etc/containerd/config.toml
找到 [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] 部分,确保以下配置存在:
plaintext [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc] … [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] SystemdCgroup = true
保存并退出文件,然后重启 containerd:
bash sudo systemctl restart containerd
3. 安装 Kubernetes 组件
3.1 添加 Kubernetes 软件源
bash curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list
3.2 安装 kubeadm、kubelet 和 kubectl
bash sudo apt update sudo apt install kubelet kubeadm kubectl -y sudo apt-mark hold kubelet kubeadm kubectl
4. 初始化 Kubernetes 控制平面(仅主节点)
如果你要将当前节点作为 Kubernetes 控制平面节点,运行以下命令进行初始化:
bash sudo kubeadm init –pod-network-cidr=10.244.0.0/16
–pod-network-cidr 参数指定了 Pod 网络的 IP 地址范围,这里使用的是 Flannel 网络插件的默认范围。
初始化成功后,会输出一些后续操作的提示信息,按照提示执行以下命令来配置 kubectl:
bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
5. 安装网络插件
为了让 Pod 之间能够相互通信,需要安装一个网络插件,这里以 Flannel 为例:
bash kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
6. 将工作节点加入集群(仅工作节点)
在主节点初始化完成后,会输出一个 kubeadm join 命令,在工作节点上运行该命令将其加入集群,示例命令如下:
bash sudo kubeadm join <control-plane-ip>:<control-plane-port> –token <token> –discovery-token-ca-cert-hash <hash>
请将 <control-plane-ip>、<control-plane-port>、<token> 和 <hash> 替换为实际的值。
7. 验证安装
在主节点上运行以下命令验证集群是否正常工作:
bash kubectl get nodes
如果一切正常,应该可以看到所有已加入集群的节点信息。
以上步骤可以帮助你在 Ubuntu Server 24 上成功安装和配置 Kubernetes 集群。在实际操作过程中,可能会遇到一些网络或权限问题,需要根据具体情况进行调整。