当前位置: 首页 > news >正文

K8s集群的环境部署

1.测试环境所需要的主机名和IP和扮演的角色

harbor 172.25.254.200 harbor仓库

k8s-master 172.25.254.100 k8s集群控制节点

k8s-node1 172.25.254.10 k8s集群工作节点

k8s-node2 172.25.254.20 k8集群工作节点

注意:所有节点禁用selinux和防火墙

所有节点同步时间和地址解析

所有节点安装docker

所有节点禁用swap 注意注释掉/etc/fstab文件中的定义

为什么禁用swap?

内存速度远快于 Swap,使用 Swap 会导致性能下降,影响节点和应用响应速度。

Kubernetes 依赖 kubelet 管理节点资源,而 kubelet 默认无法有效处理 Swap,可能导致资源分配错误。

Swap 可能延迟内存压力的响应,导致节点或 Pod 进入不稳定状态。

关闭所有节点的火墙和禁用iptables

1.master 和node harbor禁用swap

swapon -s#查看磁盘名

Filename                Type        Size        Used        Priority
/dev/dm-1                               partition    2097148        0        -2

]# systemctl mask swap.target

]# swapoff -a

]# vim /etc/fstab

#/dev/mapper/rhel-swap swap swap defaults 0 0

/dev/cdrom /media iso9660 defaults 0 0

2.master和node harbor都做本地解析

[root@k8s-master ~]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.254.100 k8s-master.timinglee.org

172.25.254.10 k8s-node1.timinglee.org

172.25.254.20 k8s-node2.timinglee.org

172.25.254.254 reg.timinglee.org

3.master和node harbor都安装docker

[root@k8s-master ~]# vim /etc/yum.repos.d/docker.repo

[docker] name=docker

baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/

gpgcheck=0

[root@k8s-master ~]# dnf install docker-ce -y

4.所有节点设定 docker资源管理模式为systemd

[root@k8s-master ~]# vim /etc/docker/daemon.json

{

"registry-mirrors": ["https://reg.timinglee.org"],

"exec-opts": ["native.cgroupdriver=systemd"],

"log-driver": "json-file",

"log-opts": {

                "max-size": "100m"

},

  "storage-driver": "overlay2"

}

4.复制harbor仓库中的证书并启动docker

 k8s-master:#mkdir /etc/docker/certs.d/reg.timinglee.org/ -p

harbor:#scp /data/certs/timinglee.org.crt root@172.25.254.100:/etc/docker/certs.d/reg.timinglee.org/ca.crt

同时把密钥拷给所有node节点

确保master和所有节点都能访问harbor仓库

5.安装k8s部署工具

添加软件仓库中k8s源

[root@k8s-master ~]# vim /etc/yum.repos.d/k8s.repo

[k8s] name=k8s

baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm

gpgcheck=0

#安装软件 [root@k8s-master ~]# dnf install kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y

4.设置kubectl命令补全功能

[root@k8s-master ~]# dnf install bash-completion -y 

[root@k8s-master ~]# echo "source > ~/.bashrc

[root@k8s-master ~]# source ~/.bashrc

5.在master节点拉取k8s所需要的镜像

kubeadm config print init-defaults

手动指定镜像下载位置和容器管理接口

kubeadm config images pull \

--image-repository registry.aliyuncs.com/google_containers \  #拉取镜像的位置现在我们所用的为aliyun的

--kubernetes-version v1.30.0 \  #需要的版本

--cri-socket=unix:///var/run/cri-dockerd.sock   #拉取需要连接容器控制器使用

先在master登录harbor仓库

拉取结束上传至我们的harbor仓库

[root@k8s-master ~]# docker images | awk '/google/{ print $1":"$2}' \ | awk -F "/" '{system("docker  tag "$0" reg.timinglee.org/k8s/"$3)}'

[root@k8s-master ~]# docker images | awk '/k8s/{system("docker push "$1":"$2)}'

6..在节点安装cri-docker

k8s从1.24版本开始就移除了dockershim 所以节点安装cri-docker插件才能使同docker

在节点安装插件和插件依赖性用docker管理k8s 和docker依赖

vim/lib/systemd/system/cri-docker.service#编写该文件夹 加上网络插件和根容器

指定网络插件名称及基础容器镜像 ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --networkplugin=cni --pod-infra-container-image=reg.timinglee.org/k8

systemctl daemon-reload

以上操作master和node节点都要做

例:scp -r /lib/systemd/system/cri-docker.service  @root172.25.254.10:/lib/systemd/system/cri-docker.service

7.集群初始化

#kubeadm init --pod-network-cidr=192.188.0.0/16 \  #初始化并设定容器集群的网络

--image-repository reg.timinglee.org/k8s \  #

--kubernetes-version v1.30.0 \ #指k8s版本

--cri-socket=unix:///var/run/cri-dockerd.sock #指定插件使docker和k8s结合到一起使用

#kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock重置集群

8.指定主配置文件

#指定集群配置文件变量 [

root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

初始化完成

9.安装网络插件

导入flannel插件 和 kube-flannel.yml

将网络插件导入到本地docker仓库 并且上传到harbor仓库中

kubectl apply -f kube-flannel.yml 安装flannel.yml

10.节点扩容

1.禁用swap

2.安装kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0

docker-ce

cri-dockerd#连接docker和k8s 的 还有一个依赖

修改cri-dockerd启动文件添加 vim /lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --networkplugin=cni --pod-infra-container-image=reg.timinglee.org/k8s/pause:3.9

5 启动服务 kubelet.service cri-docker.service

root@k8s-node1 & 2 ~]# kubeadm join 172.25.254.100:6443 --token 5hwptm.zwn7epa6pvatbpwf --discovery-token-ca-cert-hash sha256:52f1a83b70ffc8744db5570288ab51987ef2b563bf906ba4244a300f61e9db23 --crisocket=unix:///var/run/cri-dockerd.soc

相关文章:

  • ⭐算法OJ⭐两数之和【哈希表】(C++ 实现)Two Sum
  • 三. Zabbix安装
  • ​详细介绍 SetWindowPos() 函数
  • 基于 SSE 和 WebSocket 的在线文本实时传输工具
  • 【商城实战(37)】Spring Boot配置优化:解锁高效商城开发密码
  • 【VBA】excel获取股票实时行情(历史数据,基金数据下载)
  • 基于Springboot+服务器磁盘的本地文件存储方案
  • 1.5 Spring Boot项目打包和运行
  • C语言内存函数讲解
  • perl的package中“Subroutine new redefined”问题
  • UDP协议栈之整体架构处理
  • 【Prometheus01】可观测性系统之Prometheus简介、优缺点对比、组件介绍、数据采集流程、TSDB简介
  • 【MATLAB例程】AOA(到达角度)法,多个目标定位算法,三维空间、锚点数量自适应(附完整代码)
  • JavaWeb基础五(MVC)
  • matlab数值精度就1e15
  • 基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)
  • Maxscript如何通过单击现有按钮添加新按钮?
  • Leetcode做题记录----3
  • 如何在Linux中切换用户?
  • Linux--进程优先级
  • 春决火爆的背后,PEL如何做大这块电竞蛋糕
  • A股午后回暖,三大股指涨跌互现:港口板块重新走强,两市成交近1.1万亿元
  • 2人恶意传播刘国梁谣言被处罚,媒体:以法律利剑劈谣斩邪,加快推进依法治体
  • 高飞已任南航集团党组副书记
  • 戛纳打破“疑罪从无”惯例,一法国男演员被拒之门外
  • 中国证券业协会修订发布《证券纠纷调解规则》