欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > k8s部署

k8s部署

2025/5/4 0:23:45 来源:https://blog.csdn.net/qq_53488289/article/details/147670592  浏览:    关键词:k8s部署

前提准备,基于centos7操作系统

1.主机名规划

序号主机ip主机名规划
110.0.0.30kubernetes-master.test.com master
210.0.0.35kubernetes-node1.test.com node1
310.0.0.36kubernetes-node2.test.com node2
410.0.0.37kubernetes-node3.test.com node3
510.0.0.10kubernetes-register.test.com register

2.跨主机免密码认证

#生成秘钥对
ssh-keygen -t rsa #跨主机免密码认证
for i in 30 35 36 37 40; do  ssh-copy-id root@10.0.0.$i; done#修改hosts
vim /etc/hosts
10.0.0.30   kubernetes-master.test.com  master
10.0.0.35   kubernetes-node1.test.com   node1
10.0.0.36   kubernetes-node2.test.com   node2
10.0.0.37   kubernetes-node3.test.com   node3
10.0.0.40   kubernetes-register.test.com  register#修改主机名
hostnamectl set-hostname master
ssh root@10.0.0.35 "hostnamectl set-hostname node1"
ssh root@10.0.0.36 "hostnamectl set-hostname node2"
ssh root@10.0.0.37 "hostnamectl set-hostname node3"
ssh root@10.0.0.40 "hostnamectl set-hostname register"
#查看主机名
for i in 30  35 36 37 40; do   ssh root@10.0.0.$i "hostname"; done
3.Swap环境配置(所有主机操作)
#临时禁用
swapoff -a
​
#永久禁用
sed -i 's/.*swap.*/#&/' /etc/fstab 
​
#内核参数调整
cat >> /etc/sysctl.d/k8s.conf << EOF
vm.swappiness=0
EOF
sysctl -p /etc/sysctl.d/k8s.conf
​

4.网络参数调整(所有主机操作)

#配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
cat >> /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
​
#配置生效
modprobe br_netfilter
modprobe overlay
sysctl -p /etc/sysctl.d/k8s.conf
或(for i in 30  35 36 37 40; do  scp /etc/sysctl.d/k8s.conf root@10.0.0.$i:/etc/sysctl.d/k8s.conf ;ssh root@10.0.0.$i "modprobe br_netfilter;modprobe overlay;sysctl -p /etc/sysctl.d/k8s.conf"; done)

5.部署docker软件源(所有主机操作)

#定制软件源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
​
#如果yum下载有问题,可以先换源(阿里源)
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
#安装最新版
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce 
systemctl enable docker
systemctl start docker
或者(for i in 30 35 36 37 40; do  ssh  root@10.0.0.$i "yum install -y docker-ce;systemctl enable docker;systemctl start docker"; done)

6.docker加速器配置(除了register,其他都需要配置)使用xshell或者MobaXterm多窗口输入

#配置加速器文件
cat >> /etc/docker/daemon.json <<-EOF
{"registry-mirrors": ["http://xxxxx阿里云",], "insecure-registries": ["kubernetes-register.test.com"], "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
​
#重启docker服务
systemctl restart docker
#查看docker 26.1.4
docker info

7.获取软件(除了register,其他都需要)

#下载软件
mkdir /data/softs -p && cd /data/softs
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.4.0/cri-dockerd-0.4.0.amd64.tgz
​
#解压软件
tar xf cri-dockerd-0.4.0.amd64.tgz
mv cri-dockerd/cri-dockerd /usr/local/bin/
或者(for i in 30 35 36 37 ; do scp cri-dockerd/cri-dockerd  root@10.0.0.$i:/usr/local/bin/; done
)
​
#检查效果
cri-dockerd --version

8.定制配置文件(除了register,其他都需要)

cat > /etc/systemd/system/cri-dockerd.service<<-EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
#定制配置
cat > /etc/systemd/system/cri-dockerd.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker[Install]
WantedBy=sockets.target
EOF
#传输文件并设置服务开机自启动
for i in 30 35 36 37 ; do scp /etc/systemd/system/cri-dockerd.service  root@10.0.0.$i:/etc/systemd/system/cri-dockerd.service; done
for i in 30 35 36 37 ; do scp /etc/systemd/system/cri-dockerd.socket  root@10.0.0.$i:/etc/systemd/system/cri-dockerd.socket; donefor i in 30 35 36 37 ; do ssh root@10.0.0.$i "systemctl daemon-reload;systemctl enable cri-dockerd.service;systemctl restart cri-dockerd.service"; done

9.harbor仓库操作(在register操作)

#安装docker-compose v2.35.1
yum install -y docker-composemkdir /data/{softs,server} -p && cd /data/softs
#如果出现下面情况,需要手动下载离线包,网址:https://github.com/docker/compose/releases/download/v2.35.1/docker-compose-linux-x86_64,使用xftp传到/usr/local/bin下
没有可用软件包 docker-compose。
错误:无须任何处理
或(curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
)#修改权限
chmod +x /usr/local/bin/docker-compose#验证
docker-compose version
#下载软件wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz#解压软件
tar xf harbor-offline-installer-v2.5.3.tgz -C  /data/server/cd /data/server/harbor/#加载镜像
docker load < harbor.v2.5.3.tar.gz#备份配置
cp harbor.yml.tmpl harbor.yml
#修改配置
vim harbor.yml# 修改主机名hostname: kubernetes-register.test.comhttp:port: 80#https:  注释ssl相关的部分#  port: 443#  certificate: /your/certificate/path#  private_key: /your/private/key/path# 修改harbor的登录密码harbor_admin_password: 123456# 设定harbor的数据存储目录data_volume: /data/server/harbor/data
#配置harbor
./prepare#启动harbor
./install.sh#检查效果
docker-compose ps#关闭
docker-compose down
#定制服务启动文件 
vim  /etc/systemd/system/harbor.service[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor[Service]
Type=simple
Restart=on-failure
RestartSec=5
#需要注意harbor的安装位置
ExecStart=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml down[Install]
WantedBy=multi-user.target#加载服务配置文件
systemctl daemon-reload
#设置开机自启动
systemctl enable harbor
#启动服务
systemctl start harbor
#检查状态
systemctl status harbor
#harbor仓库定制
浏览器访问域名(10.0.0.40),用户名: admin, 密码:123456 创建test用户专用的项目仓库,名称为 test,权限为公开

10.进行harbor仓库测试(master操作)

#下载镜像,使用  国内镜像源
docker pull docker.1ms.run/nginx:latest
docker pull docker.1ms.run/tomcat:latest#查看版本
docker history docker.1ms.run/nginx:latest
docker history docker.1ms.run/tomcat:latest#定制镜像标签
docker tag  docker.1ms.run/nginx:latest   kubernetes-register.test.com/test/nginx:1.27.5 docker tag  docker.1ms.run/tomcat:latest  kubernetes-register.test.com/test/tomcat:11.0.6#登录仓库
docker login kubernetes-register.test.com -u test
Password:  #输入密码 #推送镜像
docker push kubernetes-register.test.com/test/nginx:1.27.5
docker push kubernetes-register.test.com/test/tomcat:11.0.6

11.初始化(除了register)

#关闭和禁用防火墙
systemctl stop firewalld
systemctl disable firewalld#临时关闭selinux
setenforce 0  
#定制阿里云的关于kubernetes的软件源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF#更新软件源
yum makecache fast
#软件部署
yum install kubeadm kubectl kubelet -y
#自启动
systemctl enable kubelet && systemctl start kubelet
#查看版本
kubeadm  version#检查镜像文件列表
kubeadm config images list

#在harbor创建google_containers仓库,权限为公开的
浏览器访问域名(10.0.0.40),用户名: test, 密码:xxxxxx
创建test用户专用的项目仓库,名称为 google_containers,权限为公开

#获取镜像文件(网络情况不好可以多做几次)
images=$(kubeadm config images list --kubernetes-version=1.28.15 | awk -F "/" '{print $NF}')
for i in ${images}
dodocker pull registry.aliyuncs.com/google_containers/$idocker tag registry.aliyuncs.com/google_containers/$i kubernetes-register.test.com/google_containers/$idocker push kubernetes-register.test.com/google_containers/$idocker rmi registry.aliyuncs.com/google_containers/$i
done
#环境初始化命令
kubeadm init --kubernetes-version=1.28.15  --apiserver-advertise-address=10.0.0.30   --image-repository=kubernetes-register.test.com/google_containers   --pod-network-cidr="10.244.0.0/16"   --service-cidr="10.96.0.0/12"   --ignore-preflight-errors=Swap   --cri-socket=unix:///var/run/cri-dockerd.sock  --v=5
#复制join命令,加入到master集群,使用master上的命令
kubeadm join 10.0.0.12:6443 --token XXXXXX    --discovery-token-ca-cert-hash xxxxxx  --cri-socket=unix:///var/run/cri-dockerd.sock --v=5

 12.收尾(在master操作)

#定制kubernetes的登录权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
#网络定制
mkdir /data/kubernetes/flannel -p
cd /data/kubernetes/flannel
​
#获取配置文件
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
#备份配置文件
cp kube-flannel.yml{,.bak}
​
#定制镜像标签
docker tag ghcr.io/flannel-io/flannel:v0.26.7  kubernetes-register.test.com/test/flannel:v0.26.7
​
docker tag ghcr.io/flannel-io/flannel-cni-plugin:v1.6.2-flannel1  kubernetes-register.test.com/test/flannel-cni-plugin:v1.6.2-flannel1
​
docker push kubernetes-register.test.com/test/flannel:v0.26.7
​
docker push kubernetes-register.test.com/test/flannel-cni-plugin:v1.6.2-flannel1
或(for i in $(grep image kube-flannel.yml | grep -v '#' | awk -F '/' '{print $NF}')
dodocker pull ghcr.io/flannel-io/$idocker tag ghcr.io/flannel-io/$i kubernetes-register.test.com/test/$idocker push kubernetes-register.test.com/test/$i
done)
​
#修改配置文件
sed -i '/ image:/s/ghcr.io\/flannel-io/kubernetes-register.test.com\/test/' kube-flannel.yml
#查看
grep image kube-flannel.yml
​
#应用配置文件
kubectl apply -f kube-flannel.yml
​
#检查效果
kubectl get node

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词