【Kubernetes k8s】(两万字超详细)Ubuntu-22.04搭建 k8s-1.30.1集群,开启Dashboard-2.7.0、部署ingress-nginx-1.10.1

Ubuntu-22.04搭建 k8s-1.30.1集群,开启Dashboard-v2.7.0(以及Token不生成的问题)、部署ingress-nginx-1.10.1

引言

最近在研究分布式计算,想将分布式计算都容器化,使用 k8s 来调度,所以从0开始学 k8s ,这是我遇到坑后百度、查资料一点一点总结的搭建过程,贴在这方便以后自己找,也希望对你能有所帮助,后续我会不定时更新这篇博客的内容

*** 特别注意:当 k8s 集群 init 了以后的 kubectl 命令最好都等上一步的命令执行完了再进行下一步操作,不要抢着执行,随时看 Pod 的状态 kubectl get pods -A ,只要还有一个没有 Running 就不要着急下一步

2024-09-06实测v1.31.0也可用本文的方式搭建

一、系统环境准备

*** 以下在所有节点上都要做

Ubuntu-22.04 版本,CentOS 操作核心是一样的,只是命令不同罢了。

1、关闭 swap

官方要求关闭swap,虚拟内存相关,因为 Kubernetes 无法读取虚拟内存相关的数据,开启这个可能会导致 Kubernetes 的内存问题

要想永久关,得先解除程序占用,临时关闭 swap

swapoff -a

修改配置文件永久关闭,注释这个文件:

vi /etc/fstab

中的关于 swap 的那一行,如图,注释掉它:

在这里插入图片描述

2、关闭 SELinux

Ubuntu 没有这个东西可以不管,CentOS 执行:

sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

然后重启系统即可。SELinux 是系统安全方面的,如果你懂怎么弄可以自己配置 SELinux 就不用关,很麻烦,所以大家基本都关了的

3、关闭防火墙

需要关闭防火墙,因为节点之间要互相通信,开防火墙容易出问题

ufw disable
# 或者
systemctl disable --now ufw
4、设置时区(根据自己的时间情况可选)

因为关系到集群机器之间的通信,需要一个时间同步大家的行为。设置为上海时区

timedatectl set-timezone Asia/Shanghai

重启时间同步服务

systemctl restart systemd-timesyncd.service

看一下时间对不对:

timedatectl status
# 或者
date
5、修改 /etc/hosts(可选) 、/etc/hostname(可选但建议)

这个是为了后面填地址的时候方便,不用填IP地址,直接填名字就行

修改 hosts 文件,将自己的IP地址和主机名填进去:

echo "192.168.10.10 k8s-master" | sudo tee -a /etc/hosts

其他节点的你想填也填进去

修改 hostsname 文件,两种办法,一种是 hostnamectl 命令,一种是直接修改文件,修改文件的方式:

echo "k8s-master" | sudo tee /etc/hostname # 不同的节点改不同的名字

修改完主机名文件后最好重启一次ssh终端或系统

6、开启流量转发

开这个的原因是让各个主机承担起网络路由的角色,因为后续还要安装网络插件,要有一个路由器各个 Pod 才能互相通信。执行:

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF

应用参数:

sudo sysctl --system

查看是否开启成功:

sysctl net.ipv4.ip_forward

没错的话会看到结果:

net.ipv4.ip_forward = 1 # 开启成功
7、其他相关知识(不重要)
Ⅰ、IP地址固定以及网络相关知识

你有可能想固定机器的IP地址,编辑/etc/netplan下的xxx.yaml文件,如果只有一张网卡,就只有一个文件,如果有多张网卡根据网卡名来,wifi网卡的文件名也带有wifi字样。以下是一个有线网卡的固定IP例子,根据你的需求改就行:

network:
  ethernets:
    ens33: # 要固定的网卡名
      dhcp4: false # false是关闭自动获取地址,true是开启
      addresses:
        - 192.168.10.10/24 # 你要固定的IP地址
      gateway4: 192.168.10.1 # 网关地址
      nameservers:
        addresses: # DNS地址,可以有多个
          - 223.5.5.5 # 阿里DNS
          - 8.8.8.8 # 谷歌DNS
  version: 2

改完文件后应用更改:

netplan apply

验证是否成功,执行:

ip a # 查看所有网卡以及对应的IP地址

我看到评论区有关于网络的提问,我来粗俗简单的解释一下IP网段以及/数字的问题,详细的去学习网络相关的知识:

如果你有一个子网是192.168.1.0网段,那么它的子网掩码就是255.255.255.0,缩写就是/24,那么这个子网可分配的IP地址就是从192.168.1.1开始到192.168.1.254结束,共254个IP地址。

如果你的机器很多,那么这254个地址不够用,可以提升网络,我们将之前的192.168.1.0子网再提升一下,变成192.168.0.0网段,它的子网掩码就是255.255.0.0,缩写就是/16,可分配地址是从192.168.1.1开始到192.168.255.254结束,共65536个IP地址,这下就够用了。

那为什么是/24/16呢,你可以理解为x.x.x.x,四个x,一x个占8位,我们刚才用到的192.168.1.0,只将192.168.1.x分配给主机,所以是第24位。同样的192.168.0.0可分配的地址就是192.168.x.x就是16位,192.x.x.x就是8


二、安装 containerd 运行时环境

*** 以下在所有节点上都要做

Kubernetes-1.24 版本移除了 dockershim 的支持,所以之前的先安装 docker 再安装 Kubernets 的方式已经不可行了,可能会导致 Kubelet 报错退出,所以我们要先安装 containerd 运行时环境。这时可能就有人问了,安装 Docker 时不是带有 containerd 了吗,你说得对,安装 Docker 时确实是 apt install -y docker-ce docker-ce-cli containerd.io ,确实安装了 containerd ,但是这是 Dockercontainerd 啊,这么安装的 containerd 是由 Docker 管理的,k8s 无法管理,所以就会导致报错,踩过的坑啊。

运行时环境除了containerd以外还有CRI-OMirantis Container RuntimeDocker Engine,但我们用containerd就行,其他的运行时安装请参阅官方手册

安装containerd有两种方式:

1、下载最新二进制文件安装

这种方式虽然麻烦,但是可以安装最新版的containerd,具体操作:

Ⅰ、安装runc客户端

因为我们是手动安装containerd,所以也得手动安装run

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值