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

从零开始搭建Kuber***es (K8s) 集群

在这篇博客中,我们将详细介绍如何从零开始搭建 Kuber***es (K8s) 集群。本文涵盖了准备工作、安装必要组件、部署 K8s 的 Master 和 Node 节点,以及网络插件的配置。需要注意的是,由于 Kuber***es 版本迭代较快,某些组件可能无法向下兼容,请根据实际情况进行安装。

部署方式

目前生产部署 Kuber***es 集群主要有两种方式:

  1. kubeadm

    • kubeadm 是一个 K8s 部署工具,提供了 kubeadm initkubeadm join,用于快速部署 K8s 集群。
    • 官网地址: Kubeadm | Kuber***es
  2. 二进制包

    • 从 GitHub 下载发行版的二进制包,手动部署每个组件,组成 K8s 集群。
    • 虽然 kubeadm 降低了部署门槛,但屏蔽了很多细节,遇到问题时较难排查。如果想要更灵活和可控,推荐使用二进制包部署 K8s 集群,虽然手动部署麻烦,但可以学到更多工作原理,也有利于后期维护。

本文教程主要是展示kubeadm工具搭建kuber***es集群的过程。

准备工作(所有节点)

在开始部署之前,我们需要对所有节点进行以下准备工作。

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

在搭建 Kuber***es 集群之前关闭防火墙、SELinux(Security-Enhanced Linux)以及禁用 swap 分区通常有以下原因:

1. 防火墙:
   - Kuber***es 集群中的各个节点需要通过一系列网络端口进行通信,包括 API 服务器、kubelet、etcd 等。关闭防火墙可以避免阻碍节点之间的网络通信,确保集群的正常运行。
   - 在生产环境中,建议使用网络策略(***work Policies)来限制 Pod 之间和 Pod 与外部的网络通信,而不是完全关闭防火墙。

2. SELinux:
   - SELinux 是一个 Linux 内核的安全模块,用于强化系统的安全性。但是,它有时会与 Kuber***es 组件和容器运行时产生冲突,导致权限问题和功能受限。
   - 关闭 SELinux 可以简化 Kuber***es 集群的配置和维护,避免潜在的权限问题。

3. 禁用 Swap 分区:
   - Kuber***es 对内存的管理和调度依赖于 Linux 内核的内存管理机制。Swap 分区的存在可能导致内存调度行为不稳定,从而影响容器的性能和稳定性。
   - Kuber***es 官方建议在所有集群节点上禁用 swap 分区,以确保容器可以充分利用主机的物理内存,并避免因为交换空间导致的性能问题。

虽然关闭防火墙、SELinux 和禁用 swap 分区可以简化 Kuber***es 的搭建和维护,但同时也会降低系统的安全性。在生产环境中,建议根据安全策略来适当配置防火墙规则,并针对 SELinux 进行合适的配置,以确保系统安全性和 Kuber***es 的正常运行。

4. 设置主机名

# 设置主机名(以 node1 为例)
hostnamectl set-hostname node1

# 或者直接修改 /etc/hostname 文件,内容为:
node1

在每个节点上添加 hosts 文件的配置:

cat >> /etc/hosts << EOF
10.154.22.10 Ubuntu-Server
10.152.193.47 k8sNode1
10.152.193.47 k8sNode2
10.152.193.47 k8sNode3
10.152.193.47 k8sNode4
10.152.193.47 k8sNode5
10.152.193.47 k8sNode6
...
EOF

5. 配置网络设置

为所有节点添加网桥过滤和地址转发功能:

cat > /etc/sysctl.d/k8s.conf << EOF
***.bridge.bridge-nf-call-ip6tables = 1
***.bridge.bridge-nf-call-iptables = 1
***.ipv4.ip_forward = 1
vm.swappiness = 0
EOF

# 加载 br_***filter 模块
modprobe br_***filter

# 查看是否加载成功
lsmod | grep br_***filter

# 应用新的配置
sysctl --system

所有节点执行时间同步:

# 启动chronyd服务
systemctl start chronyd
systemctl enable chronyd
date  

6. 安装 IPVS(可选,非必须)

安装 ipset 和 ipvsadm 在搭建 Kuber***es 集群中通常是为了使用 IPVS(IP Virtual Server)模式作为 Kuber***es 的服务代理模式。IPVS 是一种高性能的四层负载均衡器,可以提供更高的性能和更低的延迟,特别是在大规模的服务负载下。

以下是在每个节点上安装 ipset 和 ipvsadm 的步骤:

  1. 安装ipset:

    • 在大多数 Linux 发行版中,ipset 包是作为软件包管理系统的一部分提供的,可以直接使用包管理器进行安装。例如,在基于 Debian/Ubuntu 的系统中,可以使用 apt 包管理器安装:
      sudo apt update
      sudo 
转载请说明出处内容投诉
CSS教程网 » 从零开始:Kubernetes 集群的搭建与配置指南,超详细,保姆级教程

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买