K8S安装(单master v1.26.2)

k8s集群的架构

1、单master和多node

2、多master和多node(高可用架构)

一、环境规划

名称 操作系统 配置 IP地址
k8s-master Rockylinux9.1 4G/4C/100G 192.168.3.41
k8s-slave1 Rockylinux9.1 4G/4C/100G 192.168.3.42
k8s-slave2 Rockylinux9.1 4G/4C/100G 192.168.3.43

二、角色规划

名称 部署组件
master etcd, kube-apiserver, kube-controller-manager, kubectl, kubeadm, kubelet, kube-proxy, Calico
slave kubectl, kubelet, kube-proxy, Calico

三、组件版本

组件 版本 说明
Rockylinux 9.1
etcd 3.5.6-0 使用容器方式部署,默认数据挂载到本地路径
coredns v1.9.3
kubeadm v1.26.2 1.24以上不支持shim
kubectl v1.26.2
kubelet v1.26.2
Calico v3.25 https://docs.tigera.io/
cri-docker v0.3.1 https://github.com/Mirantis/cri-dockerd/
kubernetes-dashboard v2.7.0 https://github.com/kubernetes/dashboard

四、事先准备

4.1 修改hostname

hostname必须只能包含小写字母、数字、","、"-",且开头结尾必须是小写字母或数字

4.2 设置hosts解析

4.3 确认端口是否开放

如果节点间无安全组限制(内网机器间可以任意访问),可以忽略,否则,至少保证如下端口可通:
k8s-master节点:

​    TCP:6443,2379,2380,60080,60081

​    UDP协议端口全部打开
​  k8s-slave节点:

​    UDP协议端口全部打开

4.4 设置iptables

4.5 关闭swap

4.6 关闭firewalld

4.7 关闭selinux

4.8 修改内核参数

4.8.1 创建内核参数配置文件

4.8.2 加载内核模块

4.8.3 生效参数

4.9 设置yum源

4.9.1 更改yum源为上海交通大学

4.9.2 生成缓存

4.9.3 设置docker源

4.9.4 设置k8s安装源

4.10 安装docker

4.10.1 安装最新版本的docker

4.10.2 配置docker加速

4.10.3 启动docker

五、部署kubernetes

5.1 安装cri-docker

Kubernetes自v1.24版本后移除了对docker-shim的支持,而Docker Engine默认又不支持CRI规范,因而二者将无法直接完成整合。为此,Mirantis和Docker联合创建了cri-dockerd项目,用于为Docker Engine提供一个能够支持到CRI规范的垫片,从而能够让Kubernetes基于CRI控制Docker 。

5.1.1 安装libcgroup

如果没有报错可以不用安装

5.1.2 下载cri-dockerd

5.1.3 安装cri-dockerd

5.1.4 修改cri-docker服务文件

5.1.5 重载服务文件

5.1.6 设置开机自启及启动cri-docker

5.2 安装kubeadm, kubelet 和 kubectl

5.2.1 使用yum安装

5.2.2 查看kubeadm版本

5.2.3 设置kubelet开机启动

六、master节点配置

6.1 安装初始化

出现以下提示,即表示安装初始化成功

6.2 配置kubectl客户端认证

根据安装提示信息提示,需要执行以下命令。

**⚠️注意:**此时使用 kubectl get nodes查看节点应该处于notReady状态,因为还未配置网络插件

若执行初始化过程中出错,根据错误信息调整后,执行kubeadm reset后再次执行init操作即可

6.3 设置master节点是否可调度(可选)

默认部署成功后,master节点无法调度业务pod,如需设置master节点也可以参与pod的调度,需执行:

查看taint状态:

如不想master进行调度,可执行以下命令

查看taint状态:

七、slave节点配置

7.1 安装说明

需要完成第四节及第五节所有的安装项目

7.2 添加slave节点到集群

在每台slave节点,执行如下命令,该命令是在kubeadm init成功后提示信息中打印出来的,需要替换成实际init后打印出的命令。

⚠️注意:

此处命令是6.1安装初始化完毕后生成的命令。

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,可以直接使用命令快捷生成:

安装成功后显示以下提示:

7.3 查看slave节点是否添加成功

八、部署容器网络(CNI)

Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。

8.1 下载YAML

8.2 修改定义Pod网络

下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。

image-20230302154340745

8.3 部署calico

image-20230302154416616

等Calico Pod都Running,节点也会准备就绪。

image-20230302154429579

九、集群验证

9.1 验证集群是否全部Ready

9.2 创建测试服务

9.2.1 创建nginx pod

9.2.2 查看Pod是否成功

9.2.3 测试nginx服务是否正常运行

十、部署Dashboard

Dashboard是官方提供的一个UI,可用于基本管理K8s资源。

项目地址:https://github.com/kubernetes/dashboard

10.1 下载yaml文件

10.2 修改yaml文件

修改Service为NodePort类型 ,并指定访问端口。

image-20230302154945502

image-20230302154852411

10.3 创建Dashboard

10.4 查看运行状态

10.5 访问Dashboard

访问地址:https://Master1IP:30001

image-20230302155126100

如果无法访问使用如下方式查看kubernetes-dashboard状态是否为running

先用kubectl get pods --all-namespaces -owide查看问题pod,然后用kubectl describe pod pod_name -n kube-system来查看日志,一般情况下,我们都是可以通过这个方式来获取到报错原因

10.5 授权访问

创建service account并绑定默认cluster-admin管理员集群角色:

image-20230306095412151

阅读剩余
THE END