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起不来

相关推荐
正经教主24 分钟前
【docker基础】 第七课:Docker Compose 多容器实战
运维·docker·容器
正经教主32 分钟前
【docker基础】Redis的docker部署
redis·docker·容器
DolphinScheduler社区43 分钟前
Apache DolphinScheduler 3.4.2 正式发布!新增 Amazon EMR Serverless 插件,增强监控与补数据能力
大数据·云原生·serverless·apache·海豚调度·版本发版
成为你的宁宁1 小时前
【基于 Prometheus Operator 实现 K8s 环境下 Redis Cluster 集群监控部署】
redis·kubernetes·prometheus
是一个Bug1 小时前
Docker 与 Kubernetes:从“集装箱”到“远洋舰队”
docker·容器·kubernetes
heimeiyingwang1 小时前
【架构实战】注册中心选型:Nacos vs Eureka vs Consul
微服务·云原生·架构
java_cj1 小时前
阅读 k8s 源码的准备工作
云原生·容器·kubernetes
开发者联盟league2 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes实现CICD
kubernetes·gitlab·jenkins
蜀道山老天师2 小时前
OpenClaw 从零部署 + 飞书机器人完整接入(实操篇)
运维·docker·容器·飞书
robinLi09132 小时前
docker mac 下载不同系统架构镜像
macos·docker·容器