上两篇主要记录了在CentOS 7环境中离线部署k8s的方案,本篇继续介绍方案二在Ubuntu 22.04的实现。(当然,整体思路还是跟上篇基本相似)
目录
- Ubuntu22.04离线部署k8s集群:搭建软件仓库和镜像仓库(repo节点)
- 一、整体思路
- 二、安装环境说明
- 三、准备工作
- 四、软件仓库:使用`dpkg-scanpackages`和`nginx`搭建本地源
- 关闭系统交换区
- 仓库节点搭建本地源
- k8s节点(master+node节点)配置apt源
- 五、镜像仓库:使用`Registry`镜像建立镜像仓库
- 六、Ubuntu离线部署k8s集群
- 下载相关资源
- 配置master节点
- 配置node节点
- 查看是否部署成功
Ubuntu22.04离线部署k8s集群:搭建软件仓库和镜像仓库(repo节点)
一、整体思路
即:在局域网内(k8s集群之外),搭建一台仓库节点,作为软件/镜像仓库,其他节点从它这里获取k8s安装需要的资源。
部分参考:
- 软件仓库:ubuntu使用dpkg-scanpackages和nginx搭建本地源
- 安装docker:Ubuntu安装docker
- Ubuntu部署k8s集群:Ubuntu 安装k8s集群_ubuntu 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
参考资料:
静态ip参考:【ubuntu】ubuntu虚拟机设置静态ip–实测有效
重置Root密码:su:authentication failure的解决办法_su: authentication failure
连接xshell:Xshell连接Ubuntu服务器连接不上 显示拒绝了密码
四、软件仓库:使用dpkg-scanpackages
和nginx
搭建本地源
注意,ubuntu和centos的软件包管理方式不同,前者的包管理工具用apt(apt-get),后者用yum。
关闭系统交换区
首先,所有机器关闭系统交换区
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
free -m
仓库节点搭建本地源
注意:以下命令都只在仓库节点执行!
安装dpkg-dev
和nginx
。
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/
目录中,下载docker
的deb
包。(也可以在其他目录下载好后,将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
即部署成功!