k8s环境搭建(从创建完一台虚拟机开始)

注意: 在这之前,所有主机需要关闭防火墙!!!

1. docker 安装

所有主机都需要

1.1配置仓库
复制代码
vim   /etc/yum.repos.d/docker.repo

https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/rhel/9/x86_64/stable/

1.2 下载

yum install -y docker-ce --allowerasing

1.3 启动

systemctl enable --now docker

1.4 配置软件仓库,就是yum仓库

2.harbor仓库创建

2.1 解压离线包(也可以去官网下)

tar zxf harbor-offline-installer-v2.5.4.tgz

2.2 修改配置文件

cd harbor

cp harbor.yml.tmpl harbor.yml

vim harbor.yml

只需要修改这四处

2.3 管理harbor的容器

docker compose stop 停止所有容器

docker compose up -d 开启所有容器

openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/tingjieli.org.key -addext "subjectAltName = DNS:reg.tingjieli.org" -x509 -days 365 -out certs/tingjieli.org.crt

2.4 将证书给其他主机

证书密码位置:/data/certs

scp /data/certs/tingjieli.org.crt root@192.168.40.100/etc/docker/certs.d/reg.tingjieli.org/ca.crt

其他主机也一样的操作

3.master 和 slave 都配置docker并连接到harbor

3.1 修改/etc/hosts文件

因为容器启动ip会变化,所以用域名

注意:windows也需要修改hosts文件

3.2 修改docker 的yum地址
3.3 注意事项

如果登陆不上,可以尝试着重启harbor的容器

4.k8s部署

4.1 禁用交换分区、防火墙、selinux

注意:所有的交换分区必须禁用,不然k8s检测过不去

在关闭交换分区时通过注释配置文件不生效,可以通过以下方式

systemctl list-unit-files | grep swap 查看本地的交换分区

systemctl mask dev-mapper-rhel\\x2dswap.swap 将这个分区锁了

swapoff /dev/dm-1

在 /etc/fatab注释掉开机自启

4.2 安装k8s部署工具

k8s

name=k8s

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

gpgcheck=0

复制代码
dnf install kubelet-1.30.0-150500.1.1  kubeadm-1.30.0-150500.1.1  kubectl-1.30.0-150500.1.1 -y
4.3 设置kubectl补齐命令

dnf install bash-completion -y

echo "source <(kubectl completion bash)" >> ~/.bashrc

source ~/.bashrc

4.4 安装cri-docker
复制代码
cp cri-dockerd-0.3.14-3.el8.x86_64.rpm  /opt   插件
cp libcgroup-0.41-19.el8.x86_64.rpm  /opt    插件的依赖
复制代码
​dnf install *.rpm 
systemctl start cri-docker
4.5在master节点上拉取k8s需要的镜像

拉取镜像

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock

解释:第一个是镜像仓库地址,第二个选择的k8s版本,第三个用来连接docker的控制器。这里是用sock来连

将镜像上传到仓库

打包tag

docker images | awk '/google/{ print 1":"2 }' | awk -F "/" '{system("docker tag "0" reg.tingjieli.org/k8s/"3)}'

上传

docker images | awk '/k8s/{system("docker push "1":"2)}'

注释:pause 根容器,运行其他容器之前需要运行这个,提供网络等信息,相当于操作系统

4.6 集群初始化

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.tingjieli.org/k8s --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock

如果不行的话:

记得重置

复制代码
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock

重置成功

/*

需要指定网络插件和根容器

一定要指定!!!

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

然后重启

systemctl daemon-reload

systemctl start cri-docker

*/这里是node需要的

还需要指定主配置文件

临时:export KUBECONFIG=/etc/kubernetes/admin.conf

永久:echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

还缺少网络插件

4.7 安装网络插件

vim kube-flannel.yml

将image这一行修改为reg.tingjieli.org(有三行)

上传flannel镜像(两个)

docker load -i flannel-0.25.5.tag

docker tag flannel/flannel:v0.25.5 reg.tingjieli.org/flannel/flannel:v0.25.5

docker push reg.tingjieli.org/flannel/flannel:v0.25.5

docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 reg.tingjieli.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

docker push reg.tingjieli.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

安装!!!

kubectl apply -f kube-flannel.yml

4.8 生成集群token

kubeadm token create --print-join-command

--cri-socket=unix:///var/run/cri-dockerd.sock

4.9 node节点加入集群

这里如果写错了,就用kubeadm reset 命令

加入的作用就是开启容器

搭建完成!!

练习

查看在哪里运行

纠正

因为我之前初始化集群的时候IP设置的有问题

之前我们这里配置的IP和flannel冲突了

删掉集群以及重置

在我们安装网络插件的时候,日志报的地址冲突,我们需要修改回去

安装flannel插件

vim kube-flannel.yml

不用加harbor网址,它会自动去下载

kubectl apply -f kube-flannel.yml

注意:其他节点在加入前,记得reset一下

最后一定要是这个状态,否则pod起不来

相关推荐
陌上阳光1 小时前
docker搭建ray集群
docker·容器·ray
这就是佬们吗2 小时前
初识 docker [上]
java·开发语言·笔记·docker·容器
FJW0208142 小时前
负载均衡集群HAproxy
linux·服务器·云原生·负载均衡
BigBigHang2 小时前
【docker】DM8达梦数据库的docker-compose以及一些启动踩坑
数据库·docker·容器
云道轩2 小时前
使用Docker在Rocky Linux 9.5上在线部署LangFlow
linux·人工智能·docker·容器·langflow
伟大的大威2 小时前
Docker 部署 Supabase并连接
运维·docker·容器
杰克逊的日记3 小时前
k8s的csi对接GPFS
云原生·容器·kubernetes·存储·gpfs
岚天start3 小时前
云服务器以域名形式访问机房Kubernetes集群服务之解决方案
nginx·docker·kubernetes·kubesphere·解决方案·云服务器·机房
容器魔方7 小时前
「中科类脑」正式加入 Karmada 用户组!携手社区共建多集群生态
云原生·容器·云计算
终端行者7 小时前
k8s之ingress定义https访问方式
容器·https·kubernetes