K8s集群搭建

1、K8s集群的组成

K8s集群由多个节点组成,其中包括主节点(Master)和工作节点(Worker)。主节点负责管理整个集群的状态和配置信息,工作节点用于运行容器应用程序。主节点包括以下组件:

  • API服务器(kube-apiserver):提供K8s API接口,用于管理整个集群的状态和配置信息。
  • 控制器管理器(kube-controller-manager):负责运行控制器,监控集群状态并做出相应的操作。
  • 调度器(kube-scheduler):负责将容器应用程序调度到可用的工作节点上。
  • etcd:K8s集群的数据存储后端,用于存储集群的状态和配置信息。
    工作节点包括以下组件:
  • kubelet:负责管理本地节点上的容器,与主节点通信以获取应用程序的状态和配置信息。
  • kube-proxy:负责在节点之间进行网络代理,以确保容器应用程序可以相互通信。
  • 容器运行时(如Docker):用于在节点上运行容器应用程序。

2、部署方式

(1)minikube用在测试、开发
(2)kubeadm部署主要用在测试线、生产,kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
官方地址:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
(3)二进制部署(主要用在生产)

3、kubeadm方式部署:

服务器要求:
建议最小硬件配置:linux、2核cpu、2G内存、30G硬盘。
可以访问外网,并且服务器之间网络互通(在一个网段)。
禁止swap分区
安装阿里云yum源(阿里云yum可以下载k8s的flannel组件)

4、环境准备

4.1 注意

kubelet版本不要过高,v1.24版本后kubernetes放弃docker了。
以下命令中的–cri-socket=unix:///var/run/cri-dockerd.sock非必须项,根据个人环境或执行中是否报相关错误使用。

4.2三台服务器进行系统更新:yum -y update systemd

在这里插入图片描述

4.3每个节点分别设置对应主机名

master、worker1、worker2分别设置各自主机名

hostnamectl set-hostname master 
hostnamectl set-hostname worker1 
hostnamectl set-hostname worker2

在这里插入图片描述

4.4关闭交换分区 swap。

所有 K8S 节点都需要执行
避免交换分区导致节点不稳定和性能问题,出现异常。

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

查看交换分区状态:

swapon --show

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5、关闭selinux

1、因安全机制较复杂,可能会与k8s本身的流量机制冲突,因为k8s本身会在netfilter里设置流量规则,也即:iptables规则
2、这是允许容器访问主机文件系统所必需的,而这些操作是为了例如 Pod 网络工作正常。
所有 K8S 节点都需要执行:

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

在这里插入图片描述
在这里插入图片描述

4.6、关闭防火墙

所有 K8S 节点都需要执行:

systemctl stop firewalld && systemctl disable firewalld
systemctl status firewalld

在这里插入图片描述

4.7时间同步

所有 K8S 节点都需要执行:
使用date命令查看三个节点时间是否一致,kubernetes要求集群中的节点时间必须精确一直。
安装时钟同步
1.安装:

yum -y install ntpdate

2#手动同步阿里云时间服务器时间

ntpdate ntp.aliyun.com 或 ntpdate ntp.ubuntu.com

4.8、绑定 hosts

所有 K8S 节点都需要执行:

cat << EOF >> /etc/hosts 
192.168.xx.241 master 
192.168.xx.235 worker1 
192.168.xx.238 worker2 
EOF 

在这里插入图片描述

EOF保存退出或Ctrl+d
或vi /etc/hosts命令编辑

4.9配置 K8S 的 YUM 源

所有 K8S 节点都需要执行:

cat << EOF > /etc/yum.repos.d/kubernetes.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

在这里插入图片描述

gpgcheck和repo_gpgcheck都被设置为1,意味着系统会对从该仓库下载的所有包和仓库文件进行GPG签名验证,它是一种用于验证软件包完整性和来源的加密工具。
若不需认证设置为0,建议默认为0。

安装 yum-config-manager 
yum -y install yum-utils 

安装 Docker 安装源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.10、安装所需组件

安装 Kubelet、Kubeadm 和 Kubectl、docker
所有 K8S 节点都需要执行:

yum install -y kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4 docker-ce-20.10.17-3.el7

启动:

systemctl enable kubelet 
systemctl start kubelet 
systemctl enable docker 
systemctl start docker

在这里插入图片描述

kubelet 并未启动成功,需在k8s初始化后才可以。

查看版本

kubectl version

4.11修改 docker 配置

所有节点执行:
其中,exec-opts 用于设置 Docker 的 cgroup 驱动类型,需要将其修改为 systemd。因
为 K8S 默认就是使用的 systemd,将 Docker 和 K8S 的驱动类型统一,否则后续会有报错。
需要注意的是:K8S 内的节点上 Docker 环境都需要统一。
所有 K8S 节点都需要执行:

cd /etc/docker
cat <<EOF > /etc/docker/daemon.json 
{
"exec-opts":["native.cgroupdriver=systemd"],
"registry-mirrors":["http://hub-mirror.c.163.com","https://mirrors.tuna.tsinghua.edu.cn/","https://g6yrjrwf.mirror.aliyuncs.com/","https://docker.mirrors.ustc.edu.cn"]
}
EOF

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值