本栏目主题会讲解 k8s
集群的零基础构建,从环境准备、防火墙管理、集群搭建、网络组件安装、拓展环境安装管理逐步进行介绍,在进入正式内容前,如果您还未了解一些 k8s
基础概念信息,推荐您先阅读下文章 《k8s学习-核心概念篇
》
Docker
:Kubernetes
需要依赖 Docker
,因此需要在每台服务器上安装 Docker
。kubeadm
、kubelet
和 kubectl
:这些组件是 Kubernetes
集群的核心组件,需要在每台服务器上安装。Kubernetes
集群:使用 kubeadm
命令初始化 Kubernetes
集群,并将三台服务器作为 Kubernetes
集群的节点。Kubernetes
集群需要网络插件才能实现容器之间的通信,可以选择使用 Flannel
、Calico
、Weave Net
等网络插件。在安装Kubernetes集群时,需要注意防火墙的配置,确保Kubernetes集群的网络流量可以正常通过防火墙。
以下是一些常见的防火墙配置:
Kubernetes API Server
的端口:Kubernetes API Server
的默认端口为 6443
,需要确保这个端口已经在防火墙中开放。Node
节点的端口:Kubernetes
节点需要开放一些端口,以便容器之间进行通信。需要确保这些端口已经在防火墙中开放。SELinux
或配置 SELinux
策略:如果使用 SELinux
,需要配置相应的 SELinux
策略,以便 Kubernetes
集群可以正常工作。Flannel
或其他网络插件的端口:网络插件需要使用一些端口来实现容器之间的通信,需要确保这些端口已经在防火墙中开放。在Kubernetes集群安装完成后,可以使用 kubectl
命令管理集群,例如创建和删除 Pod
、Deployments
、Services
等资源。
需要注意,Kubernetes
集群是一个复杂的分布式系统,需要仔细考虑各个组件之间的配置和交互,以确保集群的可靠性和稳定性。
此处准备三台机器,可以使物理机器、云机器、虚拟机等。
my_middleware-dev_10.12.3.40 => 192.168.3.35
my_middleware-dev_10.12.3.41 => 192.168.3.34
my_middleware-dev_10.12.3.42 => 192.168.3.33
🍭一般情况下,k8s 的 master 节点和 worker 节点是单独部署的
master
节点只做调度相关工作worker
节点进行对应pod
的部署等
但是我们的服务器资源是有限的,所以如果要搭建高可用的master
节点,只能把master
也同时当做worker
使用了,后续会详细说明
🔔 机器准备好后,请在每台服务器进行如下的设置调整,不然可能会出现不可预料的问题!
# 设置内核IP转发模块
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOF
# 设置iptables对网桥数据进行处理
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
# 调整好上面参数后进行应用变更
sysctl --system
# 查看系统是否开启了 swap
sudo swapon -s
# 提前关闭 swap; 【注意】并请更新配置文件 /etc/fstab 将其中所有包含 swap 分区的行注释掉
sudo swapoff -a
# 需要关闭 SeLinux
#临时禁用Selinux
setenforce 0
#永久禁用Selinux
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#加载br_netfilter模块(可以使 iptables 规则在 Linux Bridges 上面工作,用于将桥接的流量转发至iptables链)
#如果没有加载br_netfilter模块,并不会影响不同node上的pod之间的通信,但是会影响同一node内的pod之间通过service来通信
modprobe br_netfilter
#加载网络虚拟化技术模块
modprobe overlay
#检验网桥过滤模块是否加载成功
lsmod | grep -e br_netfilter -e overlay
#安装时间同步组件
yum install -y ntpdate
#对齐一下各服务器的当前时间
ntpdate time.windows.com
本节内容先讲到这里,下一节内容会介绍依赖软件的安装,一点点学习汇总,以便加深印象!