使用自建镜像仓库完成k8s集群安装

本文详细介绍了如何在CentOS7.9环境下安装Harbor作为镜像仓库,然后使用Kubeadm搭建K8s集群,包括设置主机名、禁用防火墙、配置docker和安装kubeadm、kubelet、kubectl等步骤,最终完成集群的初始化和CNI网络配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚机规格

虚机名称IP规格操作系统
master01192.168.164.1302C4GCentOS 7.9
worker01192.168.164.1311C4GCentOS 7.9
worker02192.168.164.1321C4GCentOS 7.9
harbor192.168.164.1331C4GCentOS 7.9

网络拓扑

在这里插入图片描述
集群中包含一个Harbor、一个master、两个worker,其中Harbor作为自建镜像仓库,通过docker-compose启动服务并向集群提供镜像下载、上传功能。master和worker节点组成k8s集群,搭建完毕后,提供原生云的相关功能。

安装Harbor(本节操作都在Harbor节点上执行)

我们安装Harbor时,使用官方提供相关部署工具进行安装,部署依赖docker及docker-compose,需要先安装docker及docker-compose

  • 安装docker
    使用docker的yum源安装docker及docker依赖。
yum install -y yum-utils

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
  • docker-compose安装
    通过github连接下载,选择最新版本,当前的最新版本是v2.15.1,选择linux x86CPU架构的release。如果下载不到,我已经将release包上传到资源里,可以下载。博文最后为资源连接。
    在这里插入图片描述
    下载完毕后,将docker-compose拷贝至/usr/local/bin/目录,并设置可执行权限。
cp /root/software/docker-compose-linux-aarch64 /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
  • 安装Harbor
    通过github链接下载Harbor最新的release版本,当前最新版本是v2.6.3。Harbor的镜像同样也上传至资源,可在博文最后查找资源链接。
    在这里插入图片描述
    下载完毕安装包,将安装包上传至harbor机器,修改配置,完成安装。
tar -xvf harbor-offline-installer-v2.6.3.tgz

cd harbor/

cp harbor.yml.tmpl harbor.yml

vi harbor.yml

修改主机的监听IP及Harbor登录密码,将Https的相关注释去掉,Harbor默认的用户及密码是admin/Harbor12345。
在这里插入图片描述
执行安装命令进行安装。

./install.sh

在这里插入图片描述
通过连接http://1921.168.164.133访问Harbor,服务正常。点击“项目”,增加google_containers和rancher两个项目。这两个项目用于保存后续安装k8s集群和CNI的镜像。在这里插入图片描述

安装K8s集群

本次安装不涉及IPVS及时钟源的安装。因为是自己测试的环境,不涉及大规模的商用问题,不需要使用IPVS来实现kube-proxy功能,采用iptables即可。所有的虚机都运行在同一个windows机器上,通过vmware虚拟的,时钟源是一致的。

  • 设置基本配置(master节点及worker节点都执行)
    基本配置包含配置设置主机名、域名、关闭防火墙、禁用swap分区以及网桥及地址转发功能。

设置各虚机主机名:

hostnamectl set-hostname  master01 # master01上执行
hostnamectl set-hostname  worker01 # worker01上执行
hostnamectl set-hostname  worker02 # worker02上执行

设置域名
在master及worker都执行。

192.168.164.130 master01
192.168.164.131 worker01
192.168.164.132 worker02
192.168.164.133 registry.coder.workspace.com

禁用selinux和firewalld服务
在master及worker都执行。

#关闭防火墙

systemctl stop firewalld 

systemctl disable firewalld

#关闭selinux服务

setenforce 0

sed -i 's/enforcing/disabled/' /etc/selinux/config

禁用swap分区

在master及worker都执行。

swapoff -a 

sed -ri 's/.*swap.*/#&/' /etc/fstab

添加网桥过滤和地址转发功能

在master及worker都执行。

cat > /etc/sysctl.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF

sysctl -p
  • 安装docker
    在master及worker都执行。
    安装docker依赖
yum install -y yum-utils

在这里插入图片描述
配置yum安装docker的yum源

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述
安装docker

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

在这里插入图片描述

  • 配置docker
    在master及worker都执行。
vi /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target 

[Service]
Type=notify
Environment=GOTRACEBACK=crash
ExecReload=/bin/kill -s HUP $MAINPID
Delegate=yes
KillMode=process
ExecStart=/usr/bin/dockerd \
          --insecure-registry=registry.coder.workspace.com  --registry-mirror=https://registry.docker-cn.com --registry-mirror=https://mirror.aliyuncs.com --exec-opt native.cgroupdriver=systemd \
          --dns 10.233.0.3 --dns 8.8.8.8  --dns-search default.svc.cluster.local --dns-search svc.cluster.local  --dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2  
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=1min

##restart the docker process if it exits prematurely

Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

配置完毕后,执行下面命令

systemctl daemon-reload

systemctl enable docker

systemctl start docker

docker login registry.coder.workspace.com

在这里插入图片描述

  • 安装kubeadm kubectl kubelet
    在master及worker都执行。
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

systemctl enable  kubelet

在这里插入图片描述

  • 初始化master节点
    上传镜像
    在master执行。
    搭建k8s依赖的etcd、kube-proxy、flannel、kube-apiserver、kube-controller-manager、coredns都在这个镜像images-registry.coder.workspace.com.tar.gz中。镜像已经上传至资源,请关注博文后面的资源连接。
docker load -i images-registry.coder.workspace.com.tar.gz

docker push registry.coder.workspace.com/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0

docker push registry.coder.workspace.com/rancher/mirrored-flannelcni-flannel:v0.19.1

docker push registry.coder.workspace.com/library/nginx:latest

在这里插入图片描述
初始化master节点

kubeadm init \
 --apiserver-advertise-address=192.168.164.130 \
 --image-repository registry.coder.workspace.com/google_containers \
 --service-cidr=10.1.0.0/16 \
 --pod-network-cidr=10.244.0.0/16

在这里插入图片描述

删除线,可以不参考 begin
也可使用kubeadm.conf文件部署

kubeadm config images pull --config kubeadm.conf

修改kubeadm.conf
在这里插入图片描述

kubeadmin init --config kubeadm.conf

删除线,可以不参考 end

拷贝k8s管理员权限文件。默认在用户家目录/.kube/config下查找改文件,没有则不能无法查看k8s的信息。

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

初始化woker节点
使用初始化master节点后回显信息里面的kubeadm join命令分别在worker节点上执行
在这里插入图片描述
初始化CNI网络
查看集群状态

kubectl get node

在这里插入图片描述
初始化CNI网络

kubectl apply -f kube-flannel.yml

在这里插入图片描述
稍等一会,节点全部变为Ready状态。
在这里插入图片描述
在这里插入图片描述

安装一个nginxi服务,查看服务是否可用。
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值