摘要:
最近在学习了解k8s,将学习动手的过程记录下。首先需要一个集群环境,便使用virtualbox模拟集群环境;
由于centos停更(改为滚动更新的Stream版),所以系统采用Rocky Linux (9.3)。
下面是对Rocky Linux的介绍,摘选自Rocky Linux的百度百科。
Rocky Linux是一个开源、社区拥有和管理、免费的企业Linux发行版,提供强大的生产级平台。旨在与RHEL(Red Hat Enterprise Linux) 100%兼容。可作为CentOS停止维护(改为滚动更新的Stream版)后,RHEL的下游Linux操作系统替代方案,并继承了原CentOS的开源免费特点。
从Rocky Linux的官方网站下载对应的镜像iso文件,下载Minimal版本,大约1.6G左右。
下载页面如下图
使用VirtualBox创建虚拟机并安装Rocky Linux系统
k8s对机器有要求,建议最低2vCPU,内存的话笔者设置的3G,硬盘100G。
笔者这里准备3台虚拟机,1台用于部署k8s集群的master节点,另外2台作为node节点。对对于需要3台虚拟机,可以装好一台然后通过virtualbox的clone功能来创建另外2台(clone的过程中生成新的网卡MAC地址)。
因为是集群环境,需要环境中的每台机器网络互通,并且还能访问外网。访问外网,此处使用NAT(网络地址转换)模式,集群内部的机器,使用Host-only模式。virtualbox全局对网络的设置如下图; dhcp配置与否,都可以,反正后续会把集群中的机器的ip设置成静态的。
安装过程很简单,此处就不截图展示了。
安装完之后
关闭防火墙
1 | [root@master ~]# systemctl status firewalld # Active显示running代表防火墙开启状态 |
设置hostname
需要保证集群中的每台机器的hostname都不一样。
1 | [root@master ~]# hostnamectl set-hostname master #master 为主机名 |
关闭swap
1 | [root@master ~]# swapoff -a # 关闭swap,临时 |
关闭selinux
1 | [root@master ~]# setenforce 0 # 关闭selinux |
或者通过修改/etc/selinux/config文件,将SELINUX的值改为disabled
配置静态ip地址,以便于集群中机器的通信。
在Rocky9中,丢弃使用了传统的network 而使用新的NetworkManager管理方式,较之前的版本配置方式有所不同
先查看当前网卡的相关信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 [root@master ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:9a:9d:14 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
valid_lft 86056sec preferred_lft 86056sec
inet6 fe80::a00:27ff:fe9a:9d14/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:1a:1d:86 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.102/24 brd 192.168.56.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe1a:1d86/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@master ~]#
找到virtualbox的host-only网卡对应的名字是enp0s8,然后进行设置静态ip
1 [root@master ~]# vim /etc/NetworkManager/system-connections/enp0s8.nmconnection
将[ipv4]下的内容修改为如下:
1 | [ipv4] |
重启网卡配置:
1 | nmcli c reload |
重新通过ip addr查看ip地址是否设置成功;
其他2台机器按照同样的流程进行配置。注意ip地址和主机名
开启ipv4转发
此项非必须,后续rancher相关操作时会用到,所以此处一起设置了
1 | [root@master ~]# cat /proc/sys/net/ipv4/ip_forward #查看是否开启 ipv4 转发,结果为 1 则是已开启。 |
或者直接编辑/etc/sysctl.conf文件,在文件中添加net.ipv4.ip_forward=11
2[root@master ~]# vim /etc/sysctl.conf
[root@master ~] sysctl -p # 重新加载配置
配置好3台机器的网络信息后,可在3台机器上通过ping命令互相ping查看通讯是否正常。
笔者这里3台机(192.168.56.102、192.168.56.103、192.168.56.104)配置好的结果如下图:
安装docker
对3台机器进行docker安装。Rocky Linux兼容了Centos,所以安装docker的方法和Centos一致。详细过程可参考docker官网地址:https://docs.docker.com/engine/install/centos
Set up the repository 设置添加docker仓库
Install the yum-utils package (which provides the yum-config-manager utility) and set up the repository.
1 | [root@master ~]# yum install -y yum-utils |
Install Docker Engine 安装docker引擎
注: 自2024年6月起,docker官方地址已经完全被墙了,国内安装docker需要添加国内的docker仓库源了
1 | [root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo // 阿里镜像源 |
yum安装包指定版本的命令
yum install [package-name]-[version].[architecture] // 如:yum install docker-ce-27.2.0
1 | [root@master ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 安装docker |
为了后续下载镜像时方便,可以将docker镜像仓库地址设置为阿里云的镜像仓库,如下:
1
2
3
4 [root@master ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] // xxxx替换为自己的镜像仓库地址
}
重启docker
1 | [root@master ~]# systemctl daemon-reload |
注: 自2024年6月起,国内各大docker镜像仓库都不能访问了,拉取镜像需要科学上网;Docker容器和守护进程运行在一个隔离的环境中,默认情况下不会继承主机系统的代理设置,所以需要对其进行设置;docker代理分为docker-client的代理和docker-daemon的代理;
client的代理可直接在/etc/docker/daemon.json文件中直接配置:1
2
3
4
5
6
7
8
9{
"proxies": {
"default": {
"httpProxy":"",
"httpsProxy":"",
"noproxy"; "localhost,127.0.0.1,.example.com"
}
}
}
daemon的代理需要在系统服务中进行配置:
创建一个 Docker 配置文件(如果不存在),并在其中添加代理设置1
2[root@master ~]# mkdir /etc/systemd/system/docker.service.d
[root@master ~]# vim /etc/systemd/system/docker.service.d/proxy.conf
在文件中添加以下内容:1
2
3
4[Service]
Environment="HTTP_PROXY=http://proxy_server:port"
Environment="HTTPS_PROXY=http://proxy_server:port"
Environment="NO_PROXY=localhost,127.0.0.1"
重启docker即可
1 | [root@master ~]# systemctl daemon-reload |