Kubernetes目前大约每年发布三次,由于迭代速度快,目前市场上绝大部分的教程相对陈旧。更重要的是,从Kubernetes 1.20开始,Kubernetes官方宣布逐步弃用Docker作为容器运行时,并计划在Kubernetes 1.24版本中完全移除对Docker作为容器运行时的支持。这意味着,从Kubernetes 1.24版本开始,将不能使用Docker作为容器运行时来运行Kubernetes节点上的Pods。因此,市场上关于直接使用containerd容器运行时的新版Kubernetes教程几乎没有,更重要的是因为的Kubernetes涉及到镜像需要单独配置才能获取,这无疑拉高了初学者门槛。本教程采用互联网的形式进行发布,便于保持与Kubernetes最新版的同步,尽量自包含,便于读者学习、实践。
关键字:Kubernetes 1.32; containerd; nerdctl; debain 12
整体规划
为方便后续内容学习,先行安装Debian 12,后续将利用VMware Workstation Pro基于该虚拟机进行克隆,生成新的虚拟机,以达到实验的目的。
| 虚拟机名称 | 软件环境 | IP地址 | 主机名 | 域名 | 内存 |
|---|---|---|---|---|---|
K8s_Debian12.08_Base | Debian 12.08 | 192.168.152.3 | debase | debase.rz | 2GB |
理论知识
本系列文档主要用于学习目的,为便于读者尽可能接近真实工作环境,使用自己电脑,甚至是笔记本电脑学习,因此,需要系统规划,尽可能降低内存的使用。
本系列文档所涉及到的示例,均在Thinkpad X280笔记本电脑中实现,其硬件配置如下:
| 硬件 | 规格 |
|---|---|
CPU | Intel Core i7-8850U 4核8线程 |
内存 | 16GB |
目前绝大多数笔记本均满足该硬件条件,请确保读者使用的硬件条件等于或高于8GB内存。
基础环境配置信息:
| 软件 | 版本 |
|---|---|
OS | Windows 11 |
VMware Workstation Pro | 17.6.1 build-24319023 |
MobaXterm | Professional Edition v24.0 |
学习Kubernetes,操作系统可以使用CentOS、Ubuntu或Debian等Linux发行版。考虑到Ubuntu一直在强推snap包管理,以及更新较为频繁,而CentOS从CentOS 9开始便作为Fedora下游发行版、Redhat上游发行版,不再具备稳定性特性。因此,本教程中选择Debian作为底层Linux操作系统,需要的debian镜像为:
- 镜像名:
debian-12.8.0-amd64-netinst.iso - 下载地址:
https://mirrors.tuna.tsinghua.edu.cn/debian-cd/12.8.0/amd64/iso-cd/debian-12.8.0-amd64-netinst.iso
案例实践
前期准备——虚拟机创建
1)启动VMware Workstation Pro,选择菜单文件->新建虚拟机:
在新建虚拟机过程中,出于简化篇幅的目的,对于各步骤中保持默认选项的,不在本文档中给出,直接
"下一步"即可。
2)在安装客户机操作系统页面,选择稍后安装操作系统(S):
3)在选择客户机操作系统页面,选择Debian 12.x 64位:
4)在命名虚拟机页面,输入虚拟机名称K8s_Debian12.08_Base,该名称主要便于用户记忆,可根据需求自行改为所需名称:
5)在指定磁盘容量页面,设置最大磁盘大小(GB)为36.0:
6)后续步骤均采用VMware Workstation Pro默认配置即可。创建完成后,库中会显示创建的K8s_Debian12.08_Base虚拟机,点击编辑虚拟机设置:
7)设置虚拟机的ISO映像文件,通过浏览按钮选择之前下载好的debian-12.8.0-amd64-netinst.iso文件:
8)为虚拟机设置禁用侧通道缓解,在选项页面,将高级->为启用了Hyper-V的主机禁用侧通道缓解(S)置为开启状态:
该步骤为可选步骤,建议开启。若用户上无该选项,也是正常的。笔者在自己的笔记本电脑上开启了
Hpyer-V,大部分初学读者如果没有开启过Hpyer-V或使用过WSL2,则均应该没有该选项。
Debian安装
【实践01-Debian12.08系统安装】
在虚拟机中安装Debian12.08最小化系统,为后续学习Kubernetes提供基础操作系统。
1)点击开启此虚拟机,启动之前创建的虚拟机K8s_Debian12.08_Base:
2)在开机引导菜单中,选择第一项Graphical Install:
在安装过程中,出于简化篇幅的目的,对于各步骤中保持默认选项的,不在本文档中给出,直接回车或点击
Continue即可。
3)在Set up users and passwords页面,为便于学习与记忆,设置Root password为123456:
4)在Set up users and passwords页面,创建新用户,设置用户名全称为rz:
5)在Set up users and passwords页面,为之前创建的用户rz设置密码123456:
6)在Partition disks页面,对是否将分区方案写入磁盘,选择Yes:
7)在Configure the package manager页面,Debian的安装源国家选择China:
8)在Configure the package manager页面,Debian安装源选择为清华安装源:
用户也可以根据实际情况选择其他安装源。
9)在Software selection页面,设置安装的软件,本系统采用最小化安装,因此仅需要SSH server与standard system utilities两个软件包即可:
10)在Install the GRUB boot loader页面,设置boot loader安装位置为/dev/sda:
11)安装过程的最后,在Finish the installation页面,点击Continue,重启系统:
12)重启系统后,在系统引导页面,默认第一项即可,直接回车:
在
VMware Workstation Pro的虚拟机中,命令行模式的虚拟机无鼠标,此时可以同时按下Ctrl + Alt键,释放鼠标。
13)将虚拟机K8s_Debian12.08_Base关机,选择菜单虚拟机(M)->电源(P)->关闭客户机(D):
14)至此,系统安装完成。点击菜单虚拟机(M)->快照(N)->拍摄快照(T):
15)输入快照名称系统安装完成,用户也可根据实际需要改为自己所需快照名称:
强烈建议遵照本部分给出的快照名称输入。因为在学习过程中会多次拍摄快照,避免随意性的快照名。
16)拍摄快照之后,在虚拟机详细信息的快照部分,则显示为刚刚拍摄的快照名称系统安装完成。至此Debian安装完成。
远程登录配置
【实践02-Debian系统远程登录配置】
使用PowerShell中的ssh命令和MobXterm工具远程登录Debian12.08。
1)虽然可以直接在VMware Workstation Pro的虚拟机中使用Linux操作系统,但是不便于代码的复制与粘贴。此外,日常运维与使用的大部场景中,也需要通过远程登录的方式来与系统进行交互。因此,本部分讲重点讲解远程登录。启动虚拟机K8s_Debian12.08_Base:
2)使用用户名rz、密码123456登录:
3)使用ip addr命令查看虚拟机Debian12.08_Base的IP地址,以获取远程登录的IP地址信息:
ens33所对应的IP地址192.168.152.144即为虚拟机K8s_Debian12.08_Base的IP地址。
4)可以使用PowerShell自带的SSH客户端,或MobaXterm等专用SSH工具登录。在Windows 11中,可使用PowerShell的ssh命令远程登录:
> ssh rz@192.168.152.144
The authenticity of host '192.168.152.144 (192.168.152.144)' can't be established.
ED25519 key fingerprint is SHA256:6V5mlcHGCo2FSQ1JBdQwDnrz6dr+thCR+tMkIv1DugQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.152.144' (ED25519) to the list of known hosts.
rz@192.168.152.144's password:
Linux debian 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jan 27 02:32:14 2025
rz@debian:~$ exit
logout
Connection to 192.168.152.144 closed.
ssh rz@192.168.152.144表示,使用以rz用户身份登录到192.168.152.144服务器,最后输入exit退出登录。
5)使用MobaXterm登录。启动MobaXterm,点击MobaXterm工具栏Session:
输入虚拟机K8s_Debian12.08_Base的IP地址192.168.152.144,用户名rz:
输入用户rz的密码123456:
Linux系统命令行下输入的密码一般均不显示,甚至连*都不显示,以加强系统安全性。
6)登录后的欢迎界面如下:
后续操作,全部假定在
MobaXterm中完成。
vim安装
【实践03-Vim安装】
在Debian12.08中安装Vim编辑器。
1)K8s_Debian12.08虚拟机为最小化安装,需要单独安装文本编辑器vim。切换到root身份,密码为123456:
rz@debian:~$ su
Password:
root@debian:/home/rz#
2)安装vim:
root@debian:/home/rz# apt update
root@debian:/home/rz# apt install vim -y
sudo安装与配置
【实践04-sudo安装配置】
在Debian12.08中安装配置sudo。
1)安装sudo:
root@debian:/home/rz# apt install sudo -y
2)配置sudo,将普通用户rz加入到sudo组,使其具备sudo组权限:
root@debian:/home/rz# /sbin/usermod -aG sudo rz
root@debian:/home/rz# groups rz
rz : rz cdrom floppy sudo audio dip video plugdev users netdev
root@debian:/home/rz# exit
exit
rz@debian:~$ newgrp sudo
静态IP配置
【实践05-系统静态IP配置】
根据【整体规划】配置静态IP地址。
1)使用sudo vim命令编辑网络配置文件/etc/network/interfaces,修改如下:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens33
# iface ens33 inet dhcp
iface ens33 inet static
address 192.168.152.3/24
network 192.168.152.0
broadcast 192.168.152.255
gateway 192.168.152.2
根据本文档最初【整体规划】,设置静态
IP为192.168.152.3。读者的IP地址,非常可能不是192.168.152开头的,保持前三位数值不变,只更改IP地址的最后一位为规划的(全示例中为3)即可。 在VMware Workstation Pro中,默认网关一般最后一位为2。可以通过VMware Workstation Pro菜单编辑(E)->虚拟网络编辑器(N)的对话框中查看默认网关信息:
2)重启网络服务:
rz@debian:~$ sudo systemctl restart networking.service
由于所配置的静态
IP地址192.168.152.3与之前IP地址192.168.152.144不一致,重启network服务(networking.service)时,已经登录的SSH用户会掉线。所以在MobaXterm中会中断,这属于正常现象。
3)关闭当前MobaXterm窗口,重新使用新静态IP地址进行登录即可。新建Session,填入新的IP地址192.168.152.3:
4)查看网络服务状态:
rz@debian:~$ systemctl status networking.service
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; preset: en>
Active: active (exited) since Mon 2025-01-27 02:56:37 EST; 6min ago
Docs: man:interfaces(5)
Process: 7205 ExecStart=/sbin/ifup -a --read-environment (code=exited, statu>
Process: 7225 ExecStart=/bin/sh -c if [ -f /run/network/restart-hotplug ]; t>
Main PID: 7225 (code=exited, status=0/SUCCESS)
CPU: 74ms
按
q键退出查看服务状态。
bash配置
【实践06-bash配置】
配置bash,为ls命令提供ll、la和l别名,开启bash命令补全功能。
1)ls命令配置,使用vim编辑~/.bashrc,修改内容如下:
...
# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
...
删除
91-93行的注释
2)使用sudo vim命令编辑/etc/bash.bashrc,启用bash命令补全功能:
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
删除
35-41行的注释
3)加载配置,使生效:
rz@debian:~$ source .bashrc
rz@debian:~$ source /etc/bash.bashrc
安装源配置
【实践07-安装源配置】
配置Debian12的安装源为国内清华大学开源软件镜像站。
1)因为在实验与演示环境中,不需要考虑安全更新,同样也不考虑从源代码进行编辑,为加速每次安装软件与更新速度,注释掉安全源与源码源。使用sudo vim命令编辑/etc/apt/sources.list,修改如下:
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free-firmware
# deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
# deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main non-free-firmware
2)修改完之后,需要执行sudo apt update更新可用软件列表。
允许root远程登录sshd服务配置
【实践08-配置root用户ssh远程登录】
配置root用户可以使用ssh协议远程登录Debian12。
1)在后续使用Kubernetes等场景中,可能会涉及到使用root身份进行远程登录。修改sshd服务配置文件,使用sudo vim命令编辑/etc/ssh/sshd_config,修改如下:
#PermitRootLogin prohibit-password
PermitRootLogin yes
2)加载配置、重启sshd服务,并查看sshd服务状态:
rz@debian:~$ sudo systemctl daemon-reload
rz@debian:~$ sudo systemctl restart sshd
rz@debian:~$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-01-27 03:12:46 EST; 9s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 11340 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
...
主机名配置
【实践09-主机名配置】
根据【整体规划】,配置Debian12系统主机名。
1)配置主机名,此处设置主机名为debase:
rz@debian:~$ sudo hostnamectl set-hostname debase --static
2)使用sudo vim命令编辑/etc/hosts文件,设置域名为debase.rz,修改内容如下:
127.0.0.1 localhost
127.0.1.1 debase
192.168.152.3 debase.rz
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
使用
sudo vim /etc/hosts时会卡顿一段时间,并给出警告信息:sudo: unable to resolve host hub: Name or service not known,是由于此时/etc/hosts内容未做同步变更造成的。
3)重新登录,使主机名生效。
4)使用ping命令,验证主机名与域名:
rz@debase:~$ ping debase
PING debase (127.0.1.1) 56(84) bytes of data.
64 bytes from debase (127.0.1.1): icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from debase (127.0.1.1): icmp_seq=2 ttl=64 time=0.019 ms
^C
--- debase ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1011ms
rtt min/avg/max/mdev = 0.019/0.039/0.060/0.020 ms
rz@debase:~$ ping debase.rz
PING debase.rz (192.168.152.3) 56(84) bytes of data.
64 bytes from debase.rz (192.168.152.3): icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from debase.rz (192.168.152.3): icmp_seq=2 ttl=64 time=0.028 ms
^C
--- debase.rz ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 0.028/0.040/0.052/0.012 ms
使用
Ctrl+C中止ping命令。
常用工具安装
【实践10-常用工具安装】
在后续学习中,会涉及到显示文件内容(batcat命令)、显示目录树状结构(tree命令)、url地址链接命令(curl命令)、web压力测试命令(wrk命令),以及网络工具命令(net-tools相关命令)。需要提前将这部分命令与工具安装准备好。
安装文件内容查看工具batcat、目录树结构查看工具tree、Web服务请求工具curl与Web压测工具wrk:
rz@debase:~$ sudo apt update
rz@debase:~$ sudo apt install bat tree curl wrk net-tools -y
系统时区设置
【实践11-系统时区设置】
Debian12系统安装完成之后,默认时区为US/Eastern,需要将系统时区设置为上海时区。
timedatectl是一个现代的命令行工具,用于查询和更改系统时间和日期设置。设置时区为Asia/Shanghai:
rz@debase:~$ timedatectl
Local time: Mon 2025-01-27 03:32:10 EST
Universal time: Mon 2025-01-27 08:32:10 UTC
RTC time: Mon 2025-01-27 08:32:10
Time zone: US/Eastern (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
rz@debase:~$ sudo timedatectl set-timezone Asia/Shanghai
rz@debase:~$ timedatectl
Local time: Mon 2025-01-27 16:32:35 CST
Universal time: Mon 2025-01-27 08:32:35 UTC
RTC time: Mon 2025-01-27 08:32:35
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
history时间戳配置
【实践12-history时间戳配置】
配置history命令时间戳,记录每次会话中命令及命令执行的时间点,方便查看历史命令。
1)在Linux系统中,默认情况下,Bash shell(以及其他类似的shell,如Zsh)会记录输入的命令历史。然而,这些历史记录默认情况下并不会包含命令执行的时间戳。编辑~/.bashrc文件,添加如下内容到文件尾:
export HISTTIMEFORMAT="%F %T "
将
HISTTIMEFORMAT环境变量设置为包含日期和时间(格式为YYYY-MM-DD HH:MM:SS)的字符串。
2)重新加载配置文件:
rz@debase:~$ source ~/.bashrc
3)使用history命令:
rz@debase:~$ tree ~/
/home/rz/
0 directories, 0 files
rz@debase:~$ history
...
29 2025-01-27 16:36:24 tree ~/
30 2025-01-27 16:36:29 history
每条命令前面有执行时间戳。
收尾工作
1)输入命令sudo poweroff关闭K8s_Debian12.08_Base虚拟机。
2)为K8s_Debian12.08_Base虚拟机拍摄快照系统配置完成,以备后续在克隆时使用。
3)AI时代背景之下,运维将从传统CPU服务器切入到GPU服务器与端边设备,对于运维开发人员,技术玩家而言,也同步需要跟上新的技术栈。本学习内容涉及到的软件包、配置文件等资源,可以直接从百度网盘下载获取:
- 百度网盘分享文件:
Kubernetes1.32 - 链接:
https://pan.baidu.com/s/18XeGQ28BDPjHh8JKj0uZFQ?pwd=6x17提取码:6x17