注意: 在这之前,所有主机需要关闭防火墙!!!
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起不来