k8s集群搭建 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 k8s集群搭建的过程

k8s集群搭建的过程

更新时间:2022-12-30 16:30:30 来源:极悦 浏览856次

K8s集群搭建过程中坑非常多,毫不夸张的说,如果自己踩坑搭建耗时几天完全正常,这篇搭建集群教程是自己亲自搭建总结的,已经避免我遇到的所有坑。

本篇将使用kubeadm搭建一个简单的一主多从(一个控制节点对应两个工作节点)的简单K8s集群

k8s集群搭建

步骤

1.准备集群服务器

主机名 IP 系统版本 角色 组件
master 192.168.6.128 CentOS Linux release 7.9.2009 (Core) 控制节点 docker,kubectl,kubeadm,kubelet
node1 192.168.6.129 CentOS Linux release 7.9.2009 (Core) 工作节点1 docker,kubectl,kubeadm,kubelet
node2 192.168.6.130 CentOS Linux release 7.9.2009 (Core) 工作节点2 docker,kubectl,kubeadm,kubelet

工作流程:

k8s集群搭建

2. 配置服务器环境

配置主机名解析,方便集群节点间的直接调用,

# 主机名解析 编辑三台服务器的/etc/hosts文件,添加下面内容
192.168.90.128 master
192.168.90.129 node1
192.168.90.130 node2

时间同步

​ kubernetes要求集群中的节点时间必须精确一致。

​ 使用chronyd服务从网络同步时间。

​ 在三台服务器中执行下面的命令

#启动chronyd服务
systemctl start chronyd
#设置开机自启
systemctl enable chronyd
#验证时间是否一致
date

禁用iptable和firewalld服务

​ kubernetes和docker 在运行的中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

​ 注意:测试环境可以关了防火墙(firewalld),生成环境根据实际情况决定。

# 1 关闭firewalld服务
[root@master ~]# systemctl stop firewalld
# 关闭开机自启
[root@master ~]# systemctl disable firewalld
# 2 关闭iptables服务
[root@master ~]# systemctl stop iptables
# 关闭开机自启
[root@master ~]# systemctl disable iptables

禁用selinux

​ selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的问题

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disable
# 注意修改完毕之后需要重启服务器
SELINUX=disabled

禁用swap分区

​ swap分区指的是虚拟内存分区,它的作用是物理内存使用完,之后将磁盘空间虚拟成内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备,但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务
vim /etc/fstab
# 注释掉 /dev/mapper/centos-swap swap
# /dev/mapper/centos-swap swap

修改linux的内核参数

# 修改linux的内核采纳数,添加网桥过滤和地址转发功能
# 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

# 重新加载配置
[root@master ~]# sysctl -p
# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter
# 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter

配置ipvs功能

​ 在Kubernetes中Service有两种带来模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

# 1.安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadm  -y
# 2.添加需要加载的模块写入脚本文件
[root@master ~]# cat <<EOF> /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
# 3.为脚本添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
# 4.执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
# 5.查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e -ip_vs -e nf_conntrack_ipv4

安装docker

# 1、切换镜像源
[root@master ~]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d.docker-ce.repo

# 2、查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates

# 3、安装特定版本的docker-ce
# 必须制定--setopt=obsoletes=0,否则yum会自动安装更高版本
# 如果提示不存在 docker-ce-18.06.3.ce-3.el7 执行下方命令添加阿里云docker-ce.repo再执行
# yum-config-manager --add-repo   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

# 4、添加一个配置文件
#Docker 在默认情况下使用Vgroup Driver为cgroupfs,而Kubernetes推荐使用systemd来替代cgroupfs
[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF> /etc/docker/daemon.json
{
	"exec-opts": ["native.cgroupdriver=systemd"],
	"registry-mirrors": ["http://kn0t2bca.mirror.aliyuncs.com"]
}
EOF

# 5、启动dokcer
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker

安装Kubernetes组件

# 1、由于kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源
# 2、/etc/yum.repos.d/kubernetes.repo 添加下面的配置
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 3、安装kubeadm、kubelet和kubectl
[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

# 4、配置kubelet的cgroup
#编辑/etc/sysconfig/kubelet
vim /etc/sysconfig/kubelet
#添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

# 5、设置kubelet开机自启
[root@master ~]# systemctl enable kubelet

以上就是极悦小编介绍的"k8s集群搭建的过程",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>