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

相关推荐
不会飞的小龙人3 分钟前
Docker安装Redpandata-console控制台
docker·容器·portainer·console·redpandata
不会飞的小龙人5 分钟前
Docker安装Postgres_16数据库
数据库·docker·postgresql·容器·portainer
pcj_8881 小时前
Microk8s Ingress实现七层负载均衡
kubernetes
gordon~92 小时前
面试题-微服务
微服务·云原生·架构
云卷️3 小时前
微服务面试题及原理
java·后端·微服务·云原生·架构
m0_748235246 小时前
使用Docker快速搭建Redis主从复制
redis·docker·容器
码农汉子7 小时前
k8s架构及服务详解
容器·架构·kubernetes
shenzhenNBA8 小时前
Docker相关知识
linux·运维·docker·容器
豪宇刘8 小时前
Eureka Server 数据同步原理深度解析
云原生·eureka