Kubernetes集群安装

1.下载iKuai

从官方网站下载 https://www.ikuai8.com/component/download,由于是实验学习环境,这里选择 32位的 ISO 下载

2.配置虚拟机

 

 

点击编辑虚拟机设置,进入到虚拟机配置窗口,然后为ikuai虚拟机再添加一块 NAT 网络模式的网卡。同时将虚拟机的 CD/DVD 关联到 ikuai 的镜像文件。开启虚拟机,进入该界面,选择“1.将系统安装到硬盘1 sda”

 系统安装完成后会出现以下界面。

 接着配置一定的 IP 信息,我们选择“2、设置LAN/WAN地址”,即在请输入菜单编号后输入2后回车,

输入 0 来设置 LAN1 的地址,输入好后回车,根据示例来输入lan1地址,如192.168.110.200/255.255.255.0.

配置完成后按q退出到控制台菜单,再次输入q,锁定控制台 

系统安装好后,打开浏览器,输入http://192.168.110.200就可访问 ikuai 的控制页面了。默认用户名和密码都是 admin,输入后即可登录成功。
点击左边菜单中网络设置,然后再点击“内外网设置”,提示当前网卡是虚拟机提供的性能比较弱。关闭提示框后将页面向下滚动到最后。此时可以看到内网网口已经变绿了,代表内网网口正在工作中。将鼠标移动到图标上就会弹出设备信息。
另一个外网网口是灰色的,鼠标移动到图标上会提示空闲接口,未绑定网卡。我们点击这个外网网口图标,进入到配置窗口。然后点击选择网卡后面的下拉列表,选择eth1。然后点击绑定”按钮进入到如下配置页面。
接入方式选择“DHCP(动态获取),让它动态为我们分配外网访问所需要的 IP 地址等信息。然后将页面向下滚动到最后,点击保存按钮完成配置。然后我们再点击内外网设置菜单,并将页面向下滚动,就可以看到外网网口也变成绿色了。至此,ikuai 路由器就已经安装好了,并且可以为我们 kubernetes 集群各主机提供网络的访问能力。

3.系统环境准备

3.1 安装系统

这里使用的是一台 4 核心CPU4G内存,两块网卡(第一块为仅主机模式,第二块为 NAT 模式),磁盘空间为 100GB Redhat 9.5 系统。

3.2 初始化环境

3.2.1 配置本地仓库
[root@k8s-m1~]#vi /etc/yum.repos.d/yum.repo
[root@k8s-m1~]#cat /etc/yum.repos.d/yum.repo 
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0

# 设置自动挂载
[root@k8s-m1~]#vi /etc/fstab
[root@k8s-m1~]#cat /etc/fstab
...
/dev/sr0    /mnt    iso9660    defaults    0  0 

#3.验证挂载
[root@k8s-m1~]#systemctl daemon-reload 
[root@k8s-m1~]#mount -a
[root@k8s-m1~]#df -h /mnt
3.2.2 关闭防火墙和selinux
[root@k8s-m1~]#systemctl disable --now firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".

# 永久关闭selinux
[root@k8s-m1~]#sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 临时关闭
[root@k8s-m1~]#setenforce 0
3.2.3 安装基本软件
[root@k8s-m1~]#dnf install net-tools nfs-utils vim wget curl bash-completion device-mapper-persistent-data psmisc ipvadm -y
3.2.4 开启路由转发
[root@k8s-m1~]#echo'net.ipv4.ip_forward=1'>>/etc/sysctl.conf 
[root@k8s-m1~]#sysctl-p
net.ipv4.ip_forward=1

 4.集群准备

4.1 配置master节点

4.1.1 修改仅主机网卡
[root@k8s-m1~]#ls /etc/NetworkManager/system-connections/
ens160.nmconnection    ens192.nmconnection
[root@k8s-m1~]#nmcli c m ens160 ipv4.method manual ipv4.addresses 192.168.110.11/24 ipv4.dns"223.5.5.5 8.8.8.8" ipv4.gateway 192.168.10.200 connection.autoconnect yes
[root@k8s-m1~]#nmcli c up ens160
Connection successfully activated (D-Busactivepath: /org/freedesktop/NetworkManager/ActiveConnection/4)
4.1.2 配置主机映射
[root@k8s-m1~]#cat > /etc/hosts <<EOF 
192.168.110.11 k8s-m1 m1
192.168.110.12 k8s-n1 n1
192.168.110.13 k8s-n2 n2
EOF

 4.2 配置Node1节点

克隆一台 k8s-2 虚拟机,用作 Kubernetes 集群的 Node01 节点,然后做如下配置。

4.2.1 修改主机名以及仅主机网卡
[root@k8s-m1~]#hostnamectl hostname k8s-n1 
[root@k8s-m1~]#exit

[root@k8s-n1~]#ls /etc/NetworkManager/system-connections/
ens160.nmconnection    ens192.nmconnection
[root@k8s-n1~]#nmcli c m ens160 ipv4.method manual ipv4.addresses 192.168.110.12/24 ipv4.dns"223.5.5.5 8.8.8.8" ipv4.gateway 192.168.10.200 connection.autoconnect yes
[root@k8s-n1~]#nmcli c up ens160
Connection successfully activated (D-Busactivepath: /org/freedesktop/NetworkManager/ActiveConnection/4)
4.2.2 配置主机映射
[root@k8s-n1~]#cat > /etc/hosts <<EOF 
192.168.110.11 k8s-m1 m1
192.168.110.12 k8s-n1 n1
192.168.110.13 k8s-n2 n2
EOF

4.3 配置Node1节点

克隆一台 k8s-2 虚拟机,用作 Kubernetes 集群的 Node02 节点,然后做如下配置。

4.2.1 修改主机名以及仅主机网卡
[root@k8s-m1~]#hostnamectl hostname k8s-n2
[root@k8s-m1~]#exit

[root@k8s-n2~]#ls /etc/NetworkManager/system-connections/
ens160.nmconnection    ens192.nmconnection
[root@k8s-n2~]#nmcli c m ens160 ipv4.method manual ipv4.addresses 192.168.110.13/24 ipv4.dns"223.5.5.5 8.8.8.8" ipv4.gateway 192.168.10.200 connection.autoconnect yes
[root@k8s-n2~]#nmcli c up ens160
Connection successfully activated (D-Busactivepath: /org/freedesktop/NetworkManager/ActiveConnection/4)
4.2.2 配置主机映射
[root@k8s-n2~]#cat > /etc/hosts <<EOF 
192.168.110.11 k8s-m1 m1
192.168.110.12 k8s-n1 n1
192.168.110.13 k8s-n2 n2
EOF

5. 搭建Kubernetes集群

5.1 安装docker

5.1.1 添加docker源
dnf install yum-utils -y
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo
5.1.2 安装、配置docker
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 配置docker
cat > /etc/docker/daemon.json <<EOF
{
    "default-ipc-mode": "shareable",
    "data-root": "/data/docker",
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "50"
    },
    "insecure-registries": ["https://harbor.registry.com"],
    "registry-mirrors":[
        "https://docker.m.daocloud.io",
        "https://docker.1ms.run",
        "https://func.ink",
        "https://docker.hlmirror.com",
        "https://docker.imgdb.de",
        "https://docker-0.unsee.tech",
        "https://docker.rainbond.cc",
        "https://lispy.org",
        "https://docker.xiaogenban1993.com",
        "https://mirror.ccs.tencentyun.com"
    ]
}
EOF
5.1.3 启动docker
systemctl enable --now docker

5.2 安装CRI

5.2.1 下载cri-docker,解压文件并设可执行权限
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.17/cri-dockerd-0.3.17.amd64.tgz

tar -xf cri-dockerd-0.3.17.amd64.tgz

# 复制文件到指定/usr/bin目录
cp cri-dockerd/cri-dockerd /usr/bin/

# 设置文件可执行权限
chmod +x /usr/bin/cri-dockerd

5.2.2 配置cri-docker
cat > /usr/lib/systemd/system/cri-docker.service <<EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket

[Service]
Type=notify
#ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.10
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.k8s.io/pause:3.10
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
EOF
5.2.3 配置cri-docker套接字
cat > /usr/lib/systemd/system/cri-docker.socket <<EOF
[Unit]
Description=CRI Docker socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF
5.2.4 启动cri-docker服务
systemctl daemon-reload
systemctl enable --now cri-docker 
systemctl is-active cri-docker

5.3 安装Kubernetes

5.3.1 配置Kubernetes仓库

1、添加kubernetes源

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.33/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.33/rpm/repodata/repomd.xml.key
EOF

2、安装kubernetes并启动服务

dnf install -y kubelet kubeadm kubectl
systemctl enable --now kubelet
5.3.2 初始化主节点
kubeadm init --apiserver-advertise-address=192.168.110.11 \
--kubernetes-version=1.33.2 \
--service-cidr=10.10.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all \
--cri-socket unix:///var/run/cri-dockerd.sock
5.3.3 创建.kube目录
[root@k8s-m1~]#mkdir -p $HOME/.kube
[root@k8s-m1~]#cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
[root@k8s-m1~]#chown $(id-u):$(id-g) $HOME/.kube/config
5.3.4 增加工作节点
# node节点做
kubeadm join 192.168.110.11:6443 --token egpvao.no3qu2uxydekdkvr \
    --discovery-token-ca-cert-hash sha256:be9c5fcc15759cf559ecc5c169307ac001d2c753c7fe9bb6acbfbbf4508ecfa3 \
    --cri-socket unix:///var/run/cri-dockerd.sock

5.4 部署网络插件

5.4.1 下载配置文件
#1.下载配置文件
[root@k8s-m1~]#curl https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/calico-typha.yaml-ocalico.yaml
5.4.2 修改配置文件

修改配置文件calico.yaml文件中的- name:CALICO_IPV4POOL_IPIP的value为Off,- name:CALICO_IPV4POOL_CIDR的value为"10.244.0.0/16"

5.4.3 上传镜像文件

为master节点和node三个节点分别上传calico镜像文件并解压。

# 1. master01 节点
[root@k8s-m1 ~]# ls
g calico-v3.30.2.tar calico.yaml
# 2. node01 节点
[root@k8s-n1 ~]# ls
anaconda-ks.cfg calico-v3.30.2.tar
# 3. node02 节点
[root@k8s-n2 ~]# ls
anaconda-ks.cfg calico-v3.30.2.tar

# 1. master01 节点
[root@k8s-m1 ~]# tar -xvf calico-v3.30.2.tar
cni:v3.30.2.tar.gz
kube-controllers:v3.30.2.tar.gz
node:v3.30.2.tar.gz
typha:v3.30.2.tar.gz
[root@k8s-m1 ~]# ls
anaconda-ks.cfg calico.yaml kube-controllers:v3.30.2.tar.gz
typha:v3.30.2.tar.gz
calico-v3.30.2.tar cni:v3.30.2.tar.gz node:v3.30.2.tar.gz

# 2. node01 节点
[root@k8s-n1 ~]# tar -xvf calico-v3.30.2.tar
cni:v3.30.2.tar.gz
kube-controllers:v3.30.2.tar.gz
node:v3.30.2.tar.gz
typha:v3.30.2.tar.gz
[root@k8s-n1 ~]# ls
anaconda-ks.cfg cni:v3.30.2.tar.gz node:v3.30.2.tar.gz
calico-v3.30.2.tar kube-controllers:v3.30.2.tar.gz typha:v3.30.2.tar.gz

# 3. node02 节点
[root@k8s-n2 ~]# tar -xvf calico-v3.30.2.tar
cni:v3.30.2.tar.gz
kube-controllers:v3.30.2.tar.gz
node:v3.30.2.tar.gz
typha:v3.30.2.tar.gz
[root@k8s-n2 ~]# ls
anaconda-ks.cfg cni:v3.30.2.tar.gz node:v3.30.2.tar.gz
calico-v3.30.2.tar kube-controllers:v3.30.2.tar.gz typha:v3.30.2.tar.gz
5.4.4 安装网络插件
[root@k8s-master01 ~]# kubectl apply -f calico.yaml

此时集群的各个节点状态已经转变为ready。

[root@k8s-m1 ~]# kubectl get node
NAME  STATUS  ROLES AGE VERSION
k8s-m1 Ready control-plane 3h27m v1.33.0
k8s-n1 Ready <none> 3h14m v1.33.0
k8s-n2 Ready <none> 3h14m v1.33.0

集群搭建完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值