Kubernetes部署与运维01 Debian 12部署

282 阅读10分钟

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

Kubernetes部署与运维v3.png

整体规划

为方便后续内容学习,先行安装Debian 12,后续将利用VMware Workstation Pro基于该虚拟机进行克隆,生成新的虚拟机,以达到实验的目的。

虚拟机名称软件环境IP地址主机名域名内存
K8s_Debian12.08_BaseDebian 12.08192.168.152.3debasedebase.rz2GB

理论知识

本系列文档主要用于学习目的,为便于读者尽可能接近真实工作环境,使用自己电脑,甚至是笔记本电脑学习,因此,需要系统规划,尽可能降低内存的使用。

本系列文档所涉及到的示例,均在Thinkpad X280笔记本电脑中实现,其硬件配置如下:

硬件规格
CPUIntel Core i7-8850U 4核8线程
内存16GB

目前绝大多数笔记本均满足该硬件条件,请确保读者使用的硬件条件等于或高于8GB内存。

基础环境配置信息:

软件版本
OSWindows 11
VMware Workstation Pro17.6.1 build-24319023
MobaXtermProfessional Edition v24.0

学习Kubernetes,操作系统可以使用CentOSUbuntuDebianLinux发行版。考虑到Ubuntu一直在强推snap包管理,以及更新较为频繁,而CentOSCentOS 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,选择菜单文件->新建虚拟机

Pasted image 20250127143453.png

在新建虚拟机过程中,出于简化篇幅的目的,对于各步骤中保持默认选项的,不在本文档中给出,直接"下一步"即可。

2)在安装客户机操作系统页面,选择稍后安装操作系统(S)

Pasted image 20250127143550.png

3)在选择客户机操作系统页面,选择Debian 12.x 64位

Pasted image 20250127144116.png

4)在命名虚拟机页面,输入虚拟机名称K8s_Debian12.08_Base,该名称主要便于用户记忆,可根据需求自行改为所需名称:

Pasted image 20250127144243.png

5)在指定磁盘容量页面,设置最大磁盘大小(GB)36.0

Pasted image 20250127144432.png

6)后续步骤均采用VMware Workstation Pro默认配置即可。创建完成后,中会显示创建的K8s_Debian12.08_Base虚拟机,点击编辑虚拟机设置

Pasted image 20250127144800.png

7)设置虚拟机的ISO映像文件,通过浏览按钮选择之前下载好的debian-12.8.0-amd64-netinst.iso文件:

Pasted image 20250127144855.png

8)为虚拟机设置禁用侧通道缓解,在选项页面,将高级->为启用了Hyper-V的主机禁用侧通道缓解(S)置为开启状态:

Pasted image 20250127144956.png

该步骤为可选步骤,建议开启。若用户上无该选项,也是正常的。笔者在自己的笔记本电脑上开启了Hpyer-V,大部分初学读者如果没有开启过Hpyer-V或使用过WSL2,则均应该没有该选项。

Debian安装

【实践01-Debian12.08系统安装】

在虚拟机中安装Debian12.08最小化系统,为后续学习Kubernetes提供基础操作系统。

1)点击开启此虚拟机,启动之前创建的虚拟机K8s_Debian12.08_Base

Pasted image 20250127152521.png

2)在开机引导菜单中,选择第一项Graphical Install

Pasted image 20250127145212.png

在安装过程中,出于简化篇幅的目的,对于各步骤中保持默认选项的,不在本文档中给出,直接回车或点击Continue即可。

3)在Set up users and passwords页面,为便于学习与记忆,设置Root password123456

Pasted image 20250127145652.png

4)在Set up users and passwords页面,创建新用户,设置用户名全称为rz

Pasted image 20250127145806.png

5)在Set up users and passwords页面,为之前创建的用户rz设置密码123456

Pasted image 20250127145910.png

6)在Partition disks页面,对是否将分区方案写入磁盘,选择Yes

Pasted image 20250127150023.png

7)在Configure the package manager页面,Debian的安装源国家选择China

Pasted image 20250127150320.png

8)在Configure the package manager页面,Debian安装源选择为清华安装源:

Pasted image 20250127150421.png

用户也可以根据实际情况选择其他安装源。

9)在Software selection页面,设置安装的软件,本系统采用最小化安装,因此仅需要SSH serverstandard system utilities两个软件包即可:

Pasted image 20250127151617.png

10)在Install the GRUB boot loader页面,设置boot loader安装位置为/dev/sda

Pasted image 20250127151901.png

11)安装过程的最后,在Finish the installation页面,点击Continue,重启系统:

Pasted image 20250127152107.png

12)重启系统后,在系统引导页面,默认第一项即可,直接回车:

Pasted image 20250127152151.png

VMware Workstation Pro的虚拟机中,命令行模式的虚拟机无鼠标,此时可以同时按下Ctrl + Alt键,释放鼠标。

13)将虚拟机K8s_Debian12.08_Base关机,选择菜单虚拟机(M)->电源(P)->关闭客户机(D)

Pasted image 20250127152335.png

14)至此,系统安装完成。点击菜单虚拟机(M)->快照(N)->拍摄快照(T)

Pasted image 20250127152627.png

15)输入快照名称系统安装完成,用户也可根据实际需要改为自己所需快照名称:

Pasted image 20250127152717.png

强烈建议遵照本部分给出的快照名称输入。因为在学习过程中会多次拍摄快照,避免随意性的快照名。

16)拍摄快照之后,在虚拟机详细信息的快照部分,则显示为刚刚拍摄的快照名称系统安装完成。至此Debian安装完成。

Pasted image 20250127152816.png

远程登录配置

【实践02-Debian系统远程登录配置】

使用PowerShell中的ssh命令和MobXterm工具远程登录Debian12.08

1)虽然可以直接在VMware Workstation Pro的虚拟机中使用Linux操作系统,但是不便于代码的复制与粘贴。此外,日常运维与使用的大部场景中,也需要通过远程登录的方式来与系统进行交互。因此,本部分讲重点讲解远程登录。启动虚拟机K8s_Debian12.08_Base

Pasted image 20250127153016.png

2)使用用户名rz、密码123456登录:

Pasted image 20250127153243.png

3)使用ip addr命令查看虚拟机Debian12.08_BaseIP地址,以获取远程登录的IP地址信息:

Pasted image 20250127153427.png

ens33所对应的IP地址192.168.152.144即为虚拟机K8s_Debian12.08_BaseIP地址。

4)可以使用PowerShell自带的SSH客户端,或MobaXterm等专用SSH工具登录。在Windows 11中,可使用PowerShellssh命令远程登录:

> 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

Pasted image 20250127153757.png

输入虚拟机K8s_Debian12.08_BaseIP地址192.168.152.144,用户名rz

Pasted image 20250127153938.png

输入用户rz的密码123456

Pasted image 20250127154031.png

Linux系统命令行下输入的密码一般均不显示,甚至连*都不显示,以加强系统安全性。

6)登录后的欢迎界面如下:

Pasted image 20250127154118.png

后续操作,全部假定在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

根据本文档最初【整体规划】,设置静态IP192.168.152.3。读者的IP地址,非常可能不是192.168.152开头的,保持前三位数值不变,只更改IP地址的最后一位为规划的(全示例中为3)即可。 在VMware Workstation Pro中,默认网关一般最后一位为2。可以通过VMware Workstation Pro菜单编辑(E)->虚拟网络编辑器(N)的对话框中查看默认网关信息:

Pasted image 20250127155612.png

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

Pasted image 20250127160254.png

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命令提供lllal别名,开启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、目录树结构查看工具treeWeb服务请求工具curlWeb压测工具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