从零开始:Kubernetes 集群的搭建与配置指南,超详细,保姆级教程

06-01 1391阅读

从零开始搭建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 集群主要有两种方式:

                1. 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,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码