K8S 集群搭建——cri-dockerd版

目录

一、工作准备

1.配置主机名

2.配置hosts解析

3.配置免密登录(只需要在master上操作)

4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败)

5.关闭系统防火墙

6.配置内核转发及网桥过滤

7.启用IPVS

8.关闭SWAP分区

二、容器工作时工具安装

1.安装Docker

2.安装cri-dockerd

[三、安装 k8s](#三、安装 k8s)

[四、k8s集群初始化 (只在master节点上面操作)](#四、k8s集群初始化 (只在master节点上面操作))

1.创建初始化文件

2.修改初始化文件

3.初始化

4.根据系统提示创建具体文件

[五、k8s 集群 node 节点加入(在node1和node2上操作)](#五、k8s 集群 node 节点加入(在node1和node2上操作))

​六、添加网络插件(在master上操作)

执行安装Calico:

七、查看、验证


一、工作准备

机器:3台机器【一台master(集群的控制平面,负责集群的决策/管理),两台node机器(集群的数据平面,负责为容器提供运行环境)】

参数:2核1线程,4G内存,20G硬盘

系统:OpenEuler

IP分配:

主机名 IP地址 节点
k8s-master 192.168.8.154 master
k8s-node-01 192.168.8.157 node1
k8s-node-02 192.168.8.158 node2

本实验除了备注只需在master操作外,其他的都需要在每个节点上面操作

1.配置主机名

hostnamectl set-hostname k8s-master / k8s-node01 / k8s-node02

2.配置hosts解析

cat >> /etc/hosts <<END

192.168.8.154 k8s-master

192.168.8.157 k8s-node01

192.168.8.158 k8s-node02

END

3.配置免密登录(只需要在master上操作)

ssh-keygen -t rsa

ssh-copy-id k8s-node01、k8s-node02 #复制给node机器

4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败)

yum install chrony -y #同步到同一时钟服务器上

systemctl restart chronyd #重启服务

chronyc sources #验证时间同步

5.关闭系统防火墙

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/' /etc/selinux/config

6.配置内核转发及网桥过滤

#修改配置文件

vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

vm.swappiness = 0

#加载 br_netfilter 模块

modprobe br_netfilter

#查看是否加载

lsmod | grep br_netfilter

#使新添加的配置文件生效

sysctl -p /etc/sysctl.d/k8s.conf

7.启用IPVS

vim /etc/sysconfig/modules/ipvs.modules

#!/bin/bash

ipvs_modules="ip_vs ip_vs_wlc ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"

for kernel_module in ${ipvs_modules}

do

/usr/sbin/modinfo -F filename ${kernel_module} >/dev/null 2>&1

if [ $? -eq 0 ]

then

/usr/sbin/modprobe ${kernel_module}

fi

done

然后给该文件添加执行权限

chmod +x /etc/sysconfig/modules/ipvs.modules

bash /etc/sysconfig/modules/ipvs.modules

8.关闭SWAP分区

临时关闭:swapoff -a

永久关闭:sed -i 's/.*swap.*/#&/' /etc/fstab

二、容器工作时工具安装

1.安装Docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#openEuler 系统在跟换源后需要将/etc/yum.repos.d/kubernetes.repo 中的$release 跟换成 8

yum install docker-ce

#开启docker 服务

systemctl enable --now docker

#然后配置国内镜像加速器

vim /etc/docker/daemon.json

{

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

"registry-mirrors": [

"https://docker.m.daocloud.io",

"https://hub-mirror.c.163.com",

"https://mirror.baidubce.com",

"https://docker.nju.edu.cn"

]

}

2.安装cri-dockerd

下载cri-dockerd 的rpm包 ==> 上传 ==> yum install ==> 开机自启动

然后修改里面的配置文件:

vim /usr/lib/systemd/system/cri-docker-service

修改第11行:

ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

然后重载 ==> 开机自启 ==> 检查组件状态

systemctl daemon-reload && systemctl enable cri-docker.socket && systemctl status cri-docker.socket cri-docker docker

三、安装 k8s

更换kubernets的软件源 vim /etc/yum.repo.d/kubernets.repo

kubernetes

name=Kubernetes

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

enabled=1

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key

yum clean all && yum makecache

#下载,重启

  1. yum install kubeadm-1.27.2 kubelet-1.27.2 kubectl-1.27.2 -y

  2. systemctl enable kubelet && systemctl start kubelet

四、k8s集群初始化 (只在master节点上面操作)

1.创建初始化文件

root@k8s-master \~\]#kubeadm config print init-defaultsb \> kubeadm-init.yaml

2.修改初始化文件

root@k8s-master \~\]# vim kubeadm-init.yaml 12行:advertiseAddress: 192.168.8.154 #master的ip地址 15行:criSocket: unix:///var/run/cri-dockerd.sock 17行:name: k8s-master #master的主机名 30行:imageRepository: registry.aliyuncs.com/google_containers #改成阿里云镜像代理地址

3.初始化

root@k8s-master \~\]# systemctl restart containerd \[root@k8s-master \~\]# systemctl restart kubelet \[root@k8s-master \~\]# kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6

4.根据系统提示创建具体文件

然后根据初始化给的提示复制上面第一个到 node1 和 node2 节点上

五、k8s 集群 node 节点加入(在node1和node2上操作)

执行 kubeadm join 命令将节点加入集群:

六、添加网络插件(在master上操作)

执行安装Calico:

kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可

在Master节点上获取calico配置文件(可能会失败,如果失败,请下载到本地,然后安装)

复制代码
kubectl create -f 
https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico.yaml

1、比如我将下载好的配置文件上传到master节点上:

2、然后再进行安装:kubectl create -f calico.yaml

3、查看pod状态,如果是Running 状态就代表成功了,如果不是就代表有问题

七、查看、验证

root@k8s-master \~\]# kubectl get no -o wide \[root@k8s-master \~\]# kubectl get pod -n kube-system \[root@k8s-master \~\]# kubectl get cs

到这里一个一主两从的k8s集群已经搭建好了。
相关推荐
爱凤的小光1 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
耗同学一米八2 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S2 小时前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_890443022 小时前
Linux 基础IO
linux·c语言
智慧地球(AI·Earth)3 小时前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
原神启动14 小时前
Docker 场景化作业:生产环境容器操作实训
运维·docker·容器
老王熬夜敲代码4 小时前
解决IP不够用的问题
linux·网络·笔记
zly35005 小时前
linux查看正在运行的nginx的当前工作目录(webroot)
linux·运维·nginx
QT 小鲜肉5 小时前
【Linux命令大全】001.文件管理之file命令(实操篇)
linux·运维·前端·网络·chrome·笔记
呼啦啦呼啦啦啦啦啦啦5 小时前
docker制作镜像的两种方式(保姆级教学)
运维·docker·容器