当前位置: 首页 > news >正文

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.tgztar -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

集群搭建完毕。

http://www.dtcms.com/a/277974.html

相关文章:

  • Codeforces Round 1032 (Div. 3)(A-G)
  • 嵌入式 Linux开发环境构建之安装 Samba
  • Wireshark的安装和基本使用
  • C语言---自定义类型(上)(结构体类型)
  • Vue Router 完全指南:从入门到实战,高效管理前端路由
  • C++高频知识点(十二)
  • 【LeetCode数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
  • 通信原理与USRP :PSK的调制解调(BPSK、QPSK、16PSK) 文本、图片
  • Struts2框架对重定向URL处理不当导致的OGNL注入漏洞(s2-057)
  • 【LeetCode 热题 100】105. 从前序与中序遍历序列构造二叉树——(解法二)O(n)
  • SSE连接错误机制处置
  • lvs负载均衡实操模拟
  • docker高级管理——Compose容器编排与私有仓库
  • 基于YOLOv11的无人机目标检测实战(Windows环境)
  • 小程序部分pai
  • 深度剖析:自定义线程安全 ppp::function 实现 vs std::function
  • 黑洞是什么?
  • 苍穹外卖Day3
  • python kivy 打包apk
  • 基于手势识别完成ESP32C3控制8位继电器实现智能鱼缸整体方案设计
  • “找到一个或多个多重定义的符号“(LNK2005 或 LNK1169)
  • JAVA 反射总结
  • 开源工具DeepFilterNet:实时语音降噪
  • SQL的初步学习(二)(以MySQL为例)
  • 第四章 城市给水排水处理厂站工程
  • 双向链表:前后遍历的艺术
  • 动态规划题解_将一个数字表示成幂的和的方案数【LeetCode】
  • 高压空气冲击炮cad【3张】三维图+设计说明书
  • Python 学习之路(十)--常见算法实现原理及解析
  • 智慧公安信息化建设解决方案PPT(63页)