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

news2024/12/26 23:16:30

上两篇主要记录了在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-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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总结852

学习目标: 月目标:5月(张宇强化前10讲,背诵15篇短文,熟词僻义300词基础词) 周目标:张宇强化前5讲并完成相应的习题并记录,英语背3篇文章并回诵 每日必复习(5分钟&#…

云上高校导航 小程序 开发教程 1.0.1

​ Gitee仓库:云上高校导航 GitHub仓库:云上高校导航 “云上高校导航”是一套基于小程序云开发的校园导航类系统开发方案,该开发方案可供开发者进行二次开发,用于解决师生和访客的校园出行需求。 项目优势及创新:…

ChatGPT vs. Bing vs. Bard

随着 2022 年 ChatGTP 的推出,人工智能聊天机器人的世界突然走上了一条新道路。如今,密切关注 AI 的人都知道,不同公司推出了几款产品。从谷歌拥有自己的 Bard AI,到微软发布新的 Bing AI Chat,再到 OpenAI 发布GPT-4。…

云服务器搭建Python项目实现学术优化chatgpt

云服务器搭建实现学术优化chatgpt 1 服务器准备2 云服务器配置2.1 python虚拟环境2.1.1 python3.9安装配置2.1.2 下载python项目2.1.3 创建python虚拟环境 3 后台运行python项目(不然不能关闭与云服务器的连接,那意义何在?) 1 服务…

GEE:将年度NDVI时间序列影像集合(Image Collection)转变为多波段影像,并下载

作者:CSDN @ _养乐多_ 本文将重点介绍如何使用 Google Earth Engine (GEE) 将多波段影像堆叠并导出,并探讨其应用场景和好处。 通过使用 GEE 的多波段影像堆叠功能,我们可以将不同波段的遥感影像整合成一个多波段影像,以支持各种地理空间分析任务。这种方法适用于遥感影…

以太网端口类型

以太网端口有 3种链路类型:access、trunk、hybird Access类型端口只能属于1个VLAN 般用于连接计算机 端口;Trunk类型端口可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,一般用于交换机之间的连接;Hybrid类型端口可以允许多个VLAN通过,可…

Dubbo的使用

Dubbo在开发中,存在两种开发思路。基于SOA(面向服务的体系架构)思想和辅助SpringCloud架构提升效率。 Dubbo 默认使用 Netty 框架 Dubbo基于SOA思想 正常SpringBoot项目是只有一个启动类,接口定义在web层(即Controller层)中,然后调用Service层。&…

Matlab 梯度下降法

一、简介 梯度下降法(Gradient descent)或最速下降法(steepest descent)是求解无约束最优化问题的一种常用方法。 假设fx)在R上具有一阶连续偏导数的函数。要求解的无约束最优化问题是。其本质是一个迭代的方法,选择…

VMware Workstation 网络备忘 + 集群规模

概述 在虚拟机中部署服务,进行IP规划,进行相关的前期准备 3 张网卡 2个不同的网段 1个NAT 概述截图 NAT 截图 VMnet0 截图 VMnet1 截图 总结: 网卡(网络适配器)名称IP网段备注NATens33192.168.139.0VMnet0ens34VMne…

手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯

简介 这篇文章介绍如何在RT-THREAD bsp上运行pikascript脚本。 pikascript相当于一个小型的micropython。 最近有一些结构上的调整,写这篇文章大概介绍一下如何使用,以及开发过程中需要注意的问题。 这篇文章几乎适配所有的RT-THREAD上的bsp。&#xff…

在Kubernetes(K8S) 上运行第一个应用

1、启动代理 : kubectl proxy 2、部署应用程序最简单的方式是使用 kubectl run 命令,该命令可以创建所有必要的组件而无需JSON或YAML文件。 --imageluksa/kubia 显示的是指定要运行的容器镜像,--port8080 选项告诉Kubernetes应用正在监听808…

每日一算-冒泡排序

冒泡排序是最简单的排序算法,如果相邻元素的顺序错误,则通过重复交换它们来工作。该算法不适用于大数据集,因为它的平均和最坏情况时间复杂度都很高。 原理 输入: arr[] {6, 3, 0, 5} 第一步: 冒泡排序从最前面的两个…

每日一算-选择排序算法

大家好,我是易安! 今天我们开始每日一算的篇章,今天带来的是选择算法。 选择排序是一种简单而高效的排序算法,它通过从列表的未排序部分中重复选择最小(或最大)元素并将其移动到列表的已排序部分来工作。该…

Kubernetes集群安全加固

本博客地址:https://security.blog.csdn.net/article/details/130678814 一、系统账户加固 1、对账户的登录次数进行检查,连续超过3次登录失败后,对用户锁定150s # 每个设备上都运行 sed -i~ 2iauth required pam_faillock.so deny3 unloc…

玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试

一、前言 “死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的…

CBFS Shell .NET 22.0.85 Crack

使用虚拟文件夹、自定义菜单、工具栏、详细信息列等扩展和自定义 Windows 资源管理器! CBFS Shell 窗口资源管理器自定义 使用 CBFS Shell 为您的用户扩展 Windows 资源管理器。定义用户如何与文件和文件夹交互、自定义上下文菜单、添加信息列等。与可能导致资源管…

详细解释什么是LNMP架构

LNMP(Linux-Nginx-MySQL-PHP)是一种常见的Web服务器架构,适用于中小型网站和应用。 它包括四个核心组件: 1. Linux:LNMP架构是在Linux操作系统上运行的。通常选择Ubuntu、Debian等基于Debian的发行版作为Linux系统。 2. Nginx:Nginx是一个高性能的Web服…

支付系统设计三:支付网关设计09-总结

文章目录 前言一、设计目标二、设计实现1. 开发框架2. 配置管理后台3. 屏蔽渠道差异4. 各阶段工作内容4.1 业务处理前期准备阶段4.2 业务处理阶段4.2.1 交易处理模板获取4.2.2 参数验证4.2.3 幂等性验证4.2.4 交易数据准备服务获取4.2.5 路由处理4.2.6 支付渠道数据补全4.2.7 交…

Docker高级(完结)

一、DockerFile DockerFile简介 Docker是用来构建Docker镜像文件,由一条条docker指令和参数构成的脚本。 DockerFile构建过程 小总结 从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段, Dockerfile是…

浅析垃圾回收

大家好,我是易安! Java虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收。不过既然是自动机制,肯定没法做到像手动回收那般精准高效 ,而且还会带来不少与垃圾回收实现相…