从零开始:Kubernetes 集群的搭建与配置指南,超详细,保姆级教程
从零开始搭建Kubernetes集群
- 从零开始搭建Kubernetes (K8s) 集群
- 部署方式
- 准备工作(所有节点)
- 1. 关闭防火墙
- 2. 关闭 SELinux
- 3. 关闭 Swap 分区
- 4. 设置主机名
- 5. 配置网络设置
- 6. 安装 IPVS(可选,非必须)
- 安装 Docker、kubeadm、kubelet 和 kubectl
- 1. 安装 Docker
- 2. 安装 cri-docker
- 3. 安装 kubeadm、kubelet 和 kubectl
- 部署 Kubernetes 的 Master 节点
- 1. 初始化 Master 节点
- 2. 设置
- 3. 配置网络插件
- 配置网络插件
- 4. 加入其他节点
- 常见问题排查
- 参考列表
- 总结
从零开始搭建Kubernetes (K8s) 集群
在这篇博客中,我们将详细介绍如何从零开始搭建 Kubernetes (K8s) 集群。本文涵盖了准备工作、安装必要组件、部署 K8s 的 Master 和 Node 节点,以及网络插件的配置。需要注意的是,由于 Kubernetes 版本迭代较快,某些组件可能无法向下兼容,请根据实际情况进行安装。
部署方式
目前生产部署 Kubernetes 集群主要有两种方式:
-
kubeadm:
- kubeadm 是一个 K8s 部署工具,提供了 kubeadm init 和 kubeadm join,用于快速部署 K8s 集群。
- 官网地址: Kubeadm | Kubernetes
-
二进制包:
- 从 GitHub 下载发行版的二进制包,手动部署每个组件,组成 K8s 集群。
- 虽然 kubeadm 降低了部署门槛,但屏蔽了很多细节,遇到问题时较难排查。如果想要更灵活和可控,推荐使用二进制包部署 K8s 集群,虽然手动部署麻烦,但可以学到更多工作原理,也有利于后期维护。
本文教程主要是展示kubeadm工具搭建kubernetes集群的过程。
准备工作(所有节点)
在开始部署之前,我们需要对所有节点进行以下准备工作。
1. 关闭防火墙
# 关闭防火墙 systemctl stop firewalld # 禁止防火墙开机自启 systemctl disable firewalld
2. 关闭 SELinux
# 永久关闭 SELinux sed -i 's/enforcing/disabled/' /etc/selinux/config # 重启系统使更改生效 reboot # 临时关闭 SELinux setenforce 0
3. 关闭 Swap 分区
# 永久关闭 Swap 分区 sed -ri 's/.*swap.*/#&/' /etc/fstab # 重启系统 reboot # 临时关闭 Swap 分区 swapoff -a
注:
在搭建 Kubernetes 集群之前关闭防火墙、SELinux(Security-Enhanced Linux)以及禁用 swap 分区通常有以下原因:
1. 防火墙: - Kubernetes 集群中的各个节点需要通过一系列网络端口进行通信,包括 API 服务器、kubelet、etcd 等。关闭防火墙可以避免阻碍节点之间的网络通信,确保集群的正常运行。 - 在生产环境中,建议使用网络策略(Network Policies)来限制 Pod 之间和 Pod 与外部的网络通信,而不是完全关闭防火墙。 2. SELinux: - SELinux 是一个 Linux 内核的安全模块,用于强化系统的安全性。但是,它有时会与 Kubernetes 组件和容器运行时产生冲突,导致权限问题和功能受限。 - 关闭 SELinux 可以简化 Kubernetes 集群的配置和维护,避免潜在的权限问题。 3. 禁用 Swap 分区: - Kubernetes 对内存的管理和调度依赖于 Linux 内核的内存管理机制。Swap 分区的存在可能导致内存调度行为不稳定,从而影响容器的性能和稳定性。 - Kubernetes 官方建议在所有集群节点上禁用 swap 分区,以确保容器可以充分利用主机的物理内存,并避免因为交换空间导致的性能问题。
虽然关闭防火墙、SELinux 和禁用 swap 分区可以简化 Kubernetes 的搭建和维护,但同时也会降低系统的安全性。在生产环境中,建议根据安全策略来适当配置防火墙规则,并针对 SELinux 进行合适的配置,以确保系统安全性和 Kubernetes 的正常运行。
4. 设置主机名
# 设置主机名(以 node1 为例) hostnamectl set-hostname node1 # 或者直接修改 /etc/hostname 文件,内容为: node1
在每个节点上添加 hosts 文件的配置:
cat >> /etc/hosts /etc/sysctl.d/k8s.conf /dev/null sudo apt-get update # 安装 Docker sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 启动 Docker 并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 设置 Docker 镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json
-
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。