Rockylinux 与 K8s 的安装

这里写目录标题

  • [1 RockyLinux 的下载安装](#1 RockyLinux 的下载安装)
  • [2 K8s 的安装](#2 K8s 的安装)
    • [2.1 Runtime 的安装](#2.1 Runtime 的安装)
    • [2.2 K8s 的安装](#2.2 K8s 的安装)
    • [2.3 K8s 必备组件的安装](#2.3 K8s 必备组件的安装)
    • [2.4 图形化界面的使用](#2.4 图形化界面的使用)
    • [2.5 快速上线与删除一个服务](#2.5 快速上线与删除一个服务)

1 RockyLinux 的下载安装

1.1 RochyLinux 的下载

Rocky Linux 是一个开源的企业级操作系统,旨在实现与 Red Hat Enterprise Linux® 100% 的逐个错误兼容。

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。

我的PC是英特尔,×86结构的,所以选择x86安装包,我想选择稳定一点的版本,所以选 Rocky Linux 9,接着点击修小ISO文件。

下载链接

最好把链接复制到迅雷进行下载,比纯用浏览器下载更快一些。

1.2 创建虚拟机

下载完镜像文件后,接下来是安装,在此之前需要先安装 VMware Workstation,版本要17以后。

安装好 VMware Workstation 后,按照以下步骤创建虚拟机:

点击创建新的虚拟机:

选择"自定义",然后点击"下一步":

继续点击下一步:

选择安装所需的镜像文件:

选择稍后安装操作系统:

版本选择 Rochy Linux 64 位(如果没有,可以选择 Red Hat Enterprise Linux 9 64 位):

设置虚拟机名称与位置(若需要,我这里使用默认位置):

处理器的数量保持2:

内存选择4GB

网络类型使用默认的 NAT 模式

SCSI控制使用推荐的 LSI Logic:

磁盘类型也是保持默认就行:

虚拟磁盘选择"创建新虚拟磁盘",默认就是这个选项:

磁盘容量选择40GB:

点击下一步:

点击完成:

可以看到左边侧边栏有一台新的虚拟机,名称为 k8s-master01,我可以可以点击"编辑虚拟机设置":

这里可以修改内存大小、处理器数量、磁盘空间等:

这里也可以把USB控制器和声卡删掉,当然,不删也行,这里主要就是演示如何修改硬件配置:

点击"CD/DVD (IDE)",设备状态选择"启动时连接",然后在"使用ISO映像文件"中,选择我们前面下载的 ISO镜像文件,然后点击确定:

1.3 RockyLinux 的安装

虚拟机创建好后,按下面的步骤安装操作系统:

点击"开启此虚拟机":

看到下面的界面后,鼠标点进去,然后选择"Install Rocky Linux Minimal 9.8":

出现下面的界面时,要把语言设置成英文,美版:

配置磁盘:

点击 Custom:

将swap分区去掉:

更新根目录的空间,按下面1234的步骤执行:

此时会出现一个警告,不管它,再点一次 Done:

接下来会跳出一个本次修改的摘要,我们这里点击"Accept Changes"就行了:

接下来会退出安装主界面,我们设置 root 密码:

按下Done之后,可能有警告,我们不管他,继续按 Done:

回到安装主界面之后,接下来是配置网络:

这里看到的 IP 是自动获取的,可能下一次重启就变了,所以需要将其改成静态(下面的IP和DNS需要记住):

按下面123456的顺序,配置网络,IP、网关、DNS都选择和上面截图一样的:

然后修改主机名:

接下来修改时间(如果时区显示的不是上海,则要改成上海,如果是上海,则可以跳过这一步):

回到安装主页面后,点击"Begin Installation":

安装还是有些漫长的,需要等待一段时间,在等待的过程中,可以按照上面的流程安装其他几个虚拟机,各种设置和上面一样(创建节点时候不要克隆,因为会出现一些未知的问题,这里主要学习K8s,尽快不要在低级错误上浪费时间):

出现下面的界面,说明安装成功,点击 "Reboot System" 重启:

输入用户名(root)和密码(刚刚设的):

1.4 使用 Xshell 链接虚拟机

在虚拟机终端输入 ip a 获取 IP 地址:

打开 Xshell,点击左上角的"新建按钮":

填写会话名称和主机IP:

在用户身份验证中,填写用户名和密码:

双机我们刚刚新建的会话:

接下来会跳出一个窗口,问题是否接受主机密钥,这里点击"接受并保存":

看到下面界面,说明连接成功:

如果能看到下面的界面,说明机器能上公网:

1.5 安装两台工作节点

名字分别命名为 k8s-node01 和 k8s-node02 ,只需要在创建虚拟机、安装系统以及Xshell连接虚拟机的过程中,涉及命名的时候写名字即可:

最后的节点情况如下:

1.6 系统配置

(1)基本配置

学习环境不需要有安全组配置,所以可以关闭,swap 分区会导致集群性能下降,所以也需要关闭:

bash 复制代码
# 关闭防火墙
systemctl disable --now firewalld 
systemctl disable --now dnsmasq
# 会报错:Failed to disable unit: Unit file dnsmasq.service does not exist.不用管他

# 关闭 SELINUX
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

# 关闭swap分区,如果前面安装系统的时候,把swap分区去掉了,那这一步可以省略
swapoff -a && sysctl -w vm.swappiness=0
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

可以只复制一次,然后把命令同时贴到多个虚拟机中,只需要提前在 Xshell 打开会话,然后在其中一个会话中右击------发送键输入到所有会话:

后续粘贴命令到这个会话,也会自动复制到其他会话中。

(2)替换源镜像

接下来替换镜像源,因为我们在国内,

bash 复制代码
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
    -i.bak \
    /etc/yum.repos.d/*.repo

dnf makecache

(3)安装必备工具

bash 复制代码
yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y

(4)系统升级和内核升级

bash 复制代码
# 系统升级
dnf update -y

# 导入 ELERPO key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

# 安装 ELERPO 源
dnf install -y https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm

# 升级内核
sudo dnf --enablerepo=elrepo-kernel install -y \
    kernel-ml \
    kernel-ml-core \
    kernel-ml-modules \
    kernel-ml-modules-extra \
    kernel-ml-devel

# 更改内核的启动顺序,使用最新的内核启动系统
grubby --set-default 0

# 重启
reboot

1.7 虚拟机拍快照

配置完成后输入sudo shutdown -h now

拍快照的目的是为了能迅速恢复,假如你后续做了其他设置,下载了很多东西,某天你想清空,想恢复回来,就可以通过快照恢复:

2 K8s 的安装

2.1 Runtime 的安装

bash 复制代码
# 配置 Docker 源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装 containerd
yum install containerd.io -y

# 配置内核
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo sysctl --system

接下来创建 containerd 的配置文件

bash 复制代码
# 创建配置文件所在目录
sudo mkdir -p /etc/containerd

# 导出默认配置
containerd config default | sudo tee /etc/containerd/config.toml

# 修改默认配置
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml
sed -i 's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml
sed -i 's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml

# 启动Containerd
systemctl daemon-reload
systemctl enable --now containerd

在终端输入 ctr plugin ls,看看 containerd 是否可用,主要看 overlayfs 和 cri 是否 ok,如果不是 ok,那就问AI:

2.2 K8s 的安装

学习过程中,推荐安装最新版的 K8s,我们可以去官网查询当前最新版本是哪一版:

目前最新的是1.36,那我们就安装1.36的版本,如果最新的版本不是 1.36了,那么下面的命令需要修改版本号:

bash 复制代码
# 配置 K8s 源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.36/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.36/rpm/repodata/repomd.xml.key
EOF

# 安装 K8s
yum install kubeadm-1.36.* kubelet-1.36.* kubectl-1.36.* -y
systemctl enable --now kubelet # 这条命令出现报错的话不用管

# 查看版本号
kubectl version

我的版本是 1.36.4:

接下来是下载镜像,如果小版本号不同,那么下面的命令需要修改小版本号:

bash 复制代码
# 下载镜像
kubeadm config images pull \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version 1.36.4
# 注意小版本号,另外,如果机器在国外,那么可以把 --image-repository 参数去掉,下面的命令也是如此

接下来是配置主节点:

bash 复制代码
# K8s 的初始化命令只能在第一个主节点执行,并且只能执行一次,IP地址要改成第一个主节点的IP地址
kubeadm init --apiserver-advertise-address 192.168.174.129   --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket "unix:///var/run/containerd/containerd.sock" --kubernetes-version 1.36.4
# 注意小版本号

如果出现下面的界面,说明初始化成功:

上面的界面还会出现配置 kubectl 的命令(橙色框)和添加工作节点的命令(红色框),我们把配置 kubectl 的命令复制下来,输入到主节点:

bash 复制代码
# 配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

输入 kubectl get node 如果显示的是下面的内容,说明配置正确:

接下来是配置工作节点,在前面配置主节点时,会出现添加工作节点的命令(红色框),我们复制下来,在工作点解输入

bash 复制代码
kubeadm join 192.168.174.129:6443 --token c2tu4d.0cdb01wju43q913j \
	--discovery-token-ca-cert-hash sha256:65f7bb6aa34c0a9dda98b4aa5d5c5c6f2b2665d7486adbaa4031ea8a92a98a44

出现下面的界面,说明添加成功:

在主节点可以输入 kubectl get nodes 查看各个集群有哪些节点,分别承担什么角色,node 单数复数都可以:

工作节点也可以配置 kubectl ,但不建议,这个命令最好只在主节点配置。

2.3 K8s 必备组件的安装

bash 复制代码
git clone https://gitee.com/dukuan/k8s-ha-install.git
cd k8s-ha-install/
git checkout manual-installation-v1.36.x # 分支版本要和 K8s 版本相对应
cd single/
kubectl  apply -f .

输入 kubectl get po -n kube-system 查看组件的启动情况,后台启动需要时间,所以如果当前没有启动(即 STATUS 还没到 Running),可以过个几分钟再输入一次:

下面的界面是所有组件都启动后的状态:

接下来输入 kubectl get node,可以看到此时各个节点的状态都变成 Ready 了:

使用 kubectl top node 查看节点资源使用情况:

2.4 图形化界面的使用

(1)Dashboard

bash 复制代码
# 查看 dashboard 的服务
kubectl get svc -n kubernetes-dashboard

# 获取 dashboard 的管理员密钥(默认两个小时有效期)
kubectl create token admin-user -n kube-system

在浏览器中输入 https://192.168.174.129:31233,然后输入token:

如果想延长有效期,可以添加参数 duration:

bash 复制代码
kubectl create token admin-user -n kube-system --duration=365h

登录进入后是下面的界面:

可以切换命名空间查看 Pods,Pods 是什么先不用管:

(2) KRM

终端输入:kubectl get svc -n krm

80开头,不需要加密,浏览器输入 http://192.168.174.129:32215,账号和密码都是 admin:

登录后是下面的样子:

初学者图形化界面尽量少用,要尽量使用 kubectl,即原生 k8s 操作,因为我们要学的就是这个。

2.5 快速上线与删除一个服务

拿到镜像后,给服务创建一个名字,例如 counter

bash 复制代码
kubectl create deployment counter --image=registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1

创建了服务后,系统会创建一个 Pod,用来管理容器,可以通过 kubectl get po 查询。

查询:

bash 复制代码
kubectl get deployment
# 或者 kubectl get deploy

暴露服务,让集群外的机器也能访问到:

bash 复制代码
kubectl expose deployment counter --port 80 --type NodePort 

查看服务:kubectl get svc

可以在集群外,通过 http://192.168.174.129:31779 访问服务。

编辑:

bash 复制代码
kubectl delete deploy counter

删除:

bash 复制代码
kubectl delete deploy counter

出现下面界面,说明成功删除:

相关推荐
听风3471 小时前
Arch Linux 包管理 TUI 工具集
linux·服务器·archlinux
Interview Aid1121 小时前
Akuna OA 题目拆解|三题思路复盘
linux·运维·算法·面试·职场和发展
qq21084629531 小时前
Ubuntu 磁盘空间清理实战:从 Docker 到 VirtualBox 的完整指南
linux·ubuntu·docker
小无名呀1 小时前
Docker的使用
运维·docker·容器
张洛闻Eren1 小时前
云原生k8s【第五课】:资源配额与限制
运维·数据库·云原生·kubernetes·k8s·github
zhangjw341 小时前
第43篇:微服务网关:Spring Cloud Gateway,统一接口入口
微服务·云原生·架构
MNLoser2 小时前
AI agent开发——LangGraph接入持久化
linux·人工智能·windows·python
智码看视界2 小时前
Day58-K8s部署Spring Boot微服务:ConfigMap+Secret+HPA
spring boot·微服务·云原生·kubernetes·k8s·hpa
啦啦啦啦啦zzzz2 小时前
升序链表的定时器
linux·服务器·网络·数据结构·c++·链表