您现在的位置是:首页 >学无止境 >【k8s】Ubuntu22.04离线部署k8s集群:搭建软件仓库和镜像仓库(repo节点)网站首页学无止境

【k8s】Ubuntu22.04离线部署k8s集群:搭建软件仓库和镜像仓库(repo节点)

enchantedovo 2024-06-17 10:24:50
简介【k8s】Ubuntu22.04离线部署k8s集群:搭建软件仓库和镜像仓库(repo节点)

上两篇主要记录了在CentOS 7环境中离线部署k8s的方案,本篇继续介绍方案二在Ubuntu 22.04的实现。(当然,整体思路还是跟上篇基本相似)

Ubuntu22.04离线部署k8s集群:搭建软件仓库和镜像仓库(repo节点)

一、整体思路

即:在局域网内(k8s集群之外),搭建一台仓库节点,作为软件/镜像仓库,其他节点从它这里获取k8s安装需要的资源。

部分参考:

二、安装环境说明

虚拟机:VMware Pro 16
操作系统:ubuntu-22.04.2-desktop-amd64
repo:192.168.253.176
master:192.168.253.177
node1:192.168.253.178

三、准备工作

主要包含:设置静态IP、重设Root密码以及连接Xshell,由于此过程不是重点,因此不赘述,这里提供相关命令以及参考资料,供参考。

(三台机器)
# 重设root密码
sudo passwd root
123

# 连接xshell
apt-get install -y openssh-server ssh vim
service ssh start
ps -e|grep ssh

vim /etc/ssh/sshd_config
PermitRootLogin yes
StrictModes yes

/etc/init.d/ssh restart

参考资料:

四、软件仓库:使用dpkg-scanpackagesnginx搭建本地源

注意,ubuntu和centos的软件包管理方式不同,前者的包管理工具用apt(apt-get),后者用yum。

关闭系统交换区

首先,所有机器关闭系统交换区

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
free -m

仓库节点搭建本地源

注意:以下命令都只在仓库节点执行!

安装dpkg-devnginx

apt-get install -y dpkg-dev nginx

创建目录。

mkdir -p /var/debs/ubuntu/software/  # 存放deb包的地方
mkdir -p /var/debs/ubuntu/dists/jammy/main/binary-i386/  # jammy是ubuntu的版本号
mkdir -p /var/debs/ubuntu/dists/jammy/main/binary-amd64/ # binary-amd64是64位操作系统

接下来,以下载docker为例。
首先,安装docker前需要先安装证书,并写入软件源信息。

apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -  # 安装证书
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"  # 写入软件源信息

进入刚创建的/var/debs/ubuntu/software/目录中,下载dockerdeb包。(也可以在其他目录下载好后,将deb包拷贝到此目录中)

cd /var/debs/ubuntu/software/
apt-get download docker-ce docker-ce-cli containerd.io

使用dpkg-scanpackages生成Packages.gz

# 生成包的依赖信息
cd /var/debs/ubuntu/
dpkg-scanpackages software/ /dev/null | gzip > dists/jammy/main/binary-i386/Packages.gz
dpkg-scanpackages software/ /dev/null | gzip > dists/jammy/main/binary-amd64/Packages.gz

/etc/nginx/conf.d/目录下新建default.conf配置文件,配置nginx

# 配置nginx
cd ~
vim /etc/nginx/conf.d/default.conf
server {
    listen 8088;
    location / {
        autoindex on;
        root /var/debs;
    }
}

重启nginx服务。

systemctl restart nginx

k8s节点(master+node节点)配置apt源

/etc/apt/sources.list下,配置apt源。

# master&node中配置apt源
vim /etc/apt/sources.list
deb [trusted=yes] http://192.168.253.176:8088/ubuntu/ jammy main

安装docker

apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

五、镜像仓库:使用Registry镜像建立镜像仓库

ubuntu中搭建镜像仓库过程与上篇文章中centos搭建镜像仓库过程一致

安装完docker后,启动docker(仓库和节点均执行)

systemctl start docker
systemctl status docker

使用registry制作镜像仓库(仓库执行)

docker pull registry
docker save -o registry.tar registry
docker load -i registry.tar
docker run -d -p 5000:5000 --restart=always --name registry registry

修改配置文件(仓库和节点均执行)

vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["192.168.253.176:5000"]
}

重启docker(仓库和节点执行)

systemctl restart docker

拉取镜像(仓库执行)

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0

下载镜像(仓库执行)

docker save -o kube-apiserver.tar registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver
docker load -i kube-apiserver.tar

重新打tag(仓库执行)

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0 192.168.253.176:5000/kube-apiserver:hd

上传镜像(仓库执行)

docker push 192.168.253.176:5000/kube-apiserver:hd

拉取镜像(节点执行)

docker pull 192.168.253.176:5000/kube-apiserver:hd

六、Ubuntu离线部署k8s集群

下载相关资源

修改docker的配置中cgroup驱动

vim /etc/docker/daemon.json

{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"exec-opts":["native.cgroupdriver=systemd"]
}

重启docker

systemctl daemon-reload
systemctl restart docker
docker info | grep Cgroup

下载kubectl、kubeadm、kubelet。

apt-get update
apt-get install -y kubectl
apt-get install -y kubelet
apt-get install -y kubeadm

配置master节点

运行kubeadm init命令配置master节点。

# 配置master节点
kubeadm init --apiserver-advertise-address=192.168.253.177 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

配置kubectl工具。

# 为kubectl配置证书才能访问master
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看k8s master节点状态。

kubectl get nodes

安装部署CNI网络插件。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl get pods -n kube-system

配置node节点

配置node节点加入集群。

# node
kubeadm join 192.168.253.177:6443 --token yiva0e.hr2huwgjhj7h4gba 
	--discovery-token-ca-cert-hash sha256:8052d2489725f3165d9a470dd792fb696c43d4d7e2986e3f469fd887e9ca190b

查看是否部署成功

在master和node节点上重启kubelet服务。

systemctl restart kubelet

在master节点查看k8s集群状态。

kubectl get nodes

在这里插入图片描述
即部署成功!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。