这里写目录标题
- 1 RockyLinux 的下载安装
- 1.1 RochyLinux 的下载
- 1.2 创建虚拟机
- 1.3 RockyLinux 的安装
- 1.4 使用 Xshell 链接虚拟机
- 1.5 安装两台工作节点
- 1.6 系统配置
- (1)基本配置
- (2)替换源镜像
- (3)安装必备工具
- (4)系统升级和内核升级
- 1.7 虚拟机拍快照
- 2 K8s 的安装
- 2.1 Runtime 的安装
- 2.2 K8s 的安装
- 2.3 K8s 必备组件的安装
- 2.4 图形化界面的使用
- (1)Dashboard
- (2) KRM
- 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 分区会导致集群性能下降,所以也需要关闭:
# 关闭防火墙systemctl disable--nowfirewalld systemctl disable--nowdnsmasq# 会报错:Failed to disable unit: Unit file dnsmasq.service does not exist.不用管他# 关闭 SELINUXsetenforce0sed-i's#SELINUX=enforcing#SELINUX=disabled#g'/etc/sysconfig/selinuxsed-i's#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config# 关闭swap分区,如果前面安装系统的时候,把swap分区去掉了,那这一步可以省略swapoff-a&&sysctl-wvm.swappiness=0sed-ri'/^[^#]*swap/s@^@#@'/etc/fstab可以只复制一次,然后把命令同时贴到多个虚拟机中,只需要提前在 Xshell 打开会话,然后在其中一个会话中右击——发送键输入到所有会话:
后续粘贴命令到这个会话,也会自动复制到其他会话中。
(2)替换源镜像
接下来替换镜像源,因为我们在国内,
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)安装必备工具
yuminstallwgetjq psmiscvimnet-tools telnet yum-utils device-mapper-persistent-data lvm2git-y(4)系统升级和内核升级
# 系统升级dnf update-y# 导入 ELERPO keyrpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org# 安装 ELERPO 源dnfinstall-yhttps://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm# 升级内核sudodnf--enablerepo=elrepo-kernelinstall-y\kernel-ml\kernel-ml-core\kernel-ml-modules\kernel-ml-modules-extra\kernel-ml-devel# 更改内核的启动顺序,使用最新的内核启动系统grubby --set-default0# 重启reboot1.7 虚拟机拍快照
配置完成后输入sudo shutdown -h now,
拍快照的目的是为了能迅速恢复,假如你后续做了其他设置,下载了很多东西,某天你想清空,想恢复回来,就可以通过快照恢复:
2 K8s 的安装
2.1 Runtime 的安装
# 配置 Docker 源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装 containerdyuminstallcontainerd.io-y# 配置内核cat<<EOF|sudotee/etc/modules-load.d/containerd.confoverlay br_netfilter EOFsudomodprobe overlaysudomodprobe br_netfiltercat<<EOF|sudotee/etc/sysctl.d/99-kubernetes-cri.confnet.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOFsudosysctl--system接下来创建 containerd 的配置文件
# 创建配置文件所在目录sudomkdir-p/etc/containerd# 导出默认配置containerd config default|sudotee/etc/containerd/config.toml# 修改默认配置sed-i's#SystemdCgroup = false#SystemdCgroup = true#g'/etc/containerd/config.tomlsed-i's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'/etc/containerd/config.tomlsed-i's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'/etc/containerd/config.tomlsed-i's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'/etc/containerd/config.toml# 启动Containerdsystemctl daemon-reload systemctlenable--nowcontainerd在终端输入ctr plugin ls,看看 containerd 是否可用,主要看 overlayfs 和 cri 是否 ok,如果不是 ok,那就问AI:
2.2 K8s 的安装
学习过程中,推荐安装最新版的 K8s,我们可以去官网查询当前最新版本是哪一版:
目前最新的是1.36,那我们就安装1.36的版本,如果最新的版本不是 1.36了,那么下面的命令需要修改版本号:
# 配置 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# 安装 K8syuminstallkubeadm-1.36.* kubelet-1.36.* kubectl-1.36.*-ysystemctlenable--nowkubelet# 这条命令出现报错的话不用管# 查看版本号kubectl version我的版本是 1.36.4:
接下来是下载镜像,如果小版本号不同,那么下面的命令需要修改小版本号:
# 下载镜像kubeadm config images pull\--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version1.36.4# 注意小版本号,另外,如果机器在国外,那么可以把 --image-repository 参数去掉,下面的命令也是如此接下来是配置主节点:
# K8s 的初始化命令只能在第一个主节点执行,并且只能执行一次,IP地址要改成第一个主节点的IP地址kubeadm init --apiserver-advertise-address192.168.174.129 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket"unix:///var/run/containerd/containerd.sock"--kubernetes-version1.36.4# 注意小版本号如果出现下面的界面,说明初始化成功:
上面的界面还会出现配置 kubectl 的命令(橙色框)和添加工作节点的命令(红色框),我们把配置 kubectl 的命令复制下来,输入到主节点:
# 配置 kubectlmkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config输入kubectl get node如果显示的是下面的内容,说明配置正确:
接下来是配置工作节点,在前面配置主节点时,会出现添加工作节点的命令(红色框),我们复制下来,在工作点解输入
kubeadmjoin192.168.174.129:6443--tokenc2tu4d.0cdb01wju43q913j\--discovery-token-ca-cert-hash sha256:65f7bb6aa34c0a9dda98b4aa5d5c5c6f2b2665d7486adbaa4031ea8a92a98a44出现下面的界面,说明添加成功:
在主节点可以输入kubectl get nodes查看各个集群有哪些节点,分别承担什么角色,node 单数复数都可以:
工作节点也可以配置 kubectl ,但不建议,这个命令最好只在主节点配置。
2.3 K8s 必备组件的安装
gitclone https://gitee.com/dukuan/k8s-ha-install.gitcdk8s-ha-install/gitcheckout manual-installation-v1.36.x# 分支版本要和 K8s 版本相对应cdsingle/ kubectl apply-f.输入kubectl get po -n kube-system查看组件的启动情况,后台启动需要时间,所以如果当前没有启动(即 STATUS 还没到 Running),可以过个几分钟再输入一次:
下面的界面是所有组件都启动后的状态:
接下来输入kubectl get node,可以看到此时各个节点的状态都变成 Ready 了:
使用kubectl top node查看节点资源使用情况:
2.4 图形化界面的使用
(1)Dashboard
# 查看 dashboard 的服务kubectl get svc-nkubernetes-dashboard# 获取 dashboard 的管理员密钥(默认两个小时有效期)kubectl create token admin-user-nkube-system在浏览器中输入https://192.168.174.129:31233,然后输入token:
如果想延长有效期,可以添加参数 duration:
kubectl create token admin-user-nkube-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
kubectl create deployment counter--image=registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1创建了服务后,系统会创建一个 Pod,用来管理容器,可以通过kubectl get po查询。
查询:
kubectl get deployment# 或者 kubectl get deploy
暴露服务,让集群外的机器也能访问到:
kubectl expose deployment counter--port80--typeNodePort查看服务:kubectl get svc
可以在集群外,通过http://192.168.174.129:31779访问服务。
编辑:
kubectl delete deploy counter删除:
kubectl delete deploy counter出现下面界面,说明成功删除: