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

Kubernetes1.28-单Master集群部署

一、 服务器环境及初始化

1、架构分析

集群角色主机名操作系统IP地址
masterk8s-masterOpenEuler24.03192.168.166.128
nodek8s-node1OpenEuler24.03192.168.166.129
nodek8s-node2OpenEuler24.03192.168.166.130

2、初始化

所有节点都需要初始化!

2.1、清空Iptales默认规则及关闭防火墙

iptables -t nat -F
iptables -t filter -F
systemctl disable --now firewalld

2.2、关闭SELINUX

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 

2.3、关闭Swap交换空间

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab 

2.4、设置主机名

hostnamectl set-hostname k8s-masterhostnamectl set-hostname k8s-node1hostnamectl set-hostname k8s-node2

2.5、编写hosts文件

vim /etc/hosts
cat <<EOF >> /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.166.128    k8s-master
192.168.166.129    k8s-node1
192.168.166.130    k8s-node2
EOF###拷贝到node节点
scp /etc/hosts 192.168.166.129:/etc
scp /etc/hosts 192.168.166.130:/etc

2.6、设置内核参数

注意:安装完成docker-ce并启动之后方可设置!

vim /etc/sysctl.conf
cat <<EOF >> /etc/sysctl.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFmodprobe br_netfilter
sysctl net.bridge.bridge-nf-call-ip6tables=1
sysctl net.bridge.bridge-nf-call-iptables=1sysctl -p

二、安装Docker环境

所有节点都需要安装!

1、安装Docker

1.1、配置阿里源

[root@localhost yum.repos.d]# 
cat <<EOF >> /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com//docker-ce/linux/centos/9/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

1.2、安装docker

yum install -y docker-ce

1.3、启动docker

systemctl enable --now docker

2、安装cri-docke

下载地址:https://github.com/Mirantis/cri-dockerd/releases

yum install -y libcgroup
rpm -ivh cri-dockerd-0.3.8-3.el8.x86_64.rpm

三、安装kubeadm和kubectl

所有节点都需要安装!

1、配置yum源

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

2、安装

yum install -y kubelet kubeadm kubectl

3、设置kubectl开机自启动

systemctl enable kubelet && systemctl start kubelet

4、启动kubeadm和kubectl命令补齐功能

source <(kubeadm completion bash)
source <(kubectl completion bash)echo -e "source <(kubeadm completion bash)\nsource <(kubectl completion bash)" >>  /root/.bashrc 
source /root/.bashrc

四、部署Master节点

在k8s-master节点执行下述命令:

kubeadm init --apiserver-advertise-address=192.168.166.128 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.15 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --cri-socket=unix:///var/run/cri-dockerd.sock
命令解析:--apiserver-advertise-address:指定 API Server 监听的 IP 地址。如果没有设置,则将使用默认的网络接口。--image-repository:指定镜像仓库地址。默认值为“registry.k8s.io”,但该仓库在中国无法访问,因此这里指定阿里云仓库。--kubernetes-version:指定 Kubernetes 版本。--pod-network-cidr:指定 Pod 网络的 CIDR 地址范围。--service-cidr:指定 Service 网络的 CIDR 地址范围。--cri-socket:指定 kubelet 连接容器运行时的 UNIX 套接字文件。

执行命令后,kubeadm 会执行一系列任务,具体如下:

[preflight]:该阶段执行一系列检查,验证当前系统环境是否满足 Kubernetes 的安装要求,包括:CPU 和内存是否满足最低要求。网络是否正常。操作系统版本是否满足要求。容器运行时是否可以连接。内核参数是否正确配置。下载所需的容器镜像。[certs]:生成 Kubernetes 组件所需的 HTTPS 证书和密钥,并将其存储到“/etc/ kubernetes/pki”目录中。[kubeconfig]:生成 kubeconfig 文件,其中包含 API Server 地址、客户端证书等信息,并将其存储在“/etc/kubernetes”目录中。[kubelet-start]:生成 kubelet 配置文件“/var/lib/kubelet/config.yaml”并启动 kubelet服务。[control-plane]:为 kube-apiserver、kube-controller-manager 和 kube-scheduler 创建静态 Pod 资源文件,并将其存储到“/etc/kubernetes/manifests”目录中。[etcd]:为 etcd 创建静态 Pod 资源文件,并将其存储在“/etc/kubernetes/manifests”目录中。[wait-control-plane]:等待 kubelet 从目录“/etc/kubernetes/manifest”中以静态 Pod的形式启动 Master 组件。[apiclient]:检查 Master 组件是否健康。[upload-config]:将 kubeadm 配置存储在 ConfigMap 对象中。[kubelet]:将 kubelet 配置存储在 ConfigMap 对象中。[upload-certs]:提示用户跳过证书上传。[mark-control-plane]:给 Master 节点添加标签和污点。[bootstrap-token]:生成引导令牌,供 Node 节点在加入集群时使用。[kubelet-finalize]:更新 kubelet 配置文件(/etc/kubernetes/kubelet.conf)。[addons]:安装 CoreDNS 和 kube-proxy 插件。

出问题后,集群还原

kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock

注意保存证书文件

每个人的证书是不一致的,注意查看自己的证书。

为本人输出指令后得到:
kubeadm join 192.168.166.128:6443 --token 5rmwwf.ocgwzx6evxwvcaet \--discovery-token-ca-cert-hash sha256:cf77f1977c11d90758acb6dc6546e922ab21fe76a87385b7ce412fb0c22f142a 

配置管理集群文件

mkdir -p $HOME/.kube
cd /root/.kube
cp /etc/kubernetes/admin.conf ./config###查看集群状态
kubectl get nodes

五、部署node节点

分别在k8s-node1和k8s-node2中执行:

kubeadm join 192.168.166.128:6443 --token uz36v1.szquumxe2nq58abq \--discovery-token-ca-cert-hash sha256:bfa0dc7f33c37616cdb76b20eaf92ef900c03bd35b59be120ce80afb5b00a5d1 --cri-socket=unix:///var/run/cri-dockerd.sock借由master 主机凭证
kubeadm join 192.168.166.128:6443 --token uz36v1.szquumxe2nq58abq \--discovery-token-ca-cert-hash sha256:bfa0dc7f33c37616cdb76b20eaf92ef900c03bd35b59be120ce80afb5b00a5d1 --cri-socket=unix:///var/run/cri-dockerd.sock

查看集群状态:

[root@k8s-master ~]# kubectl get nodes 
NAME         STATUS     ROLES           AGE     VERSION
k8s-master   NotReady   control-plane   2d16h   v1.28.15
k8s-node1    NotReady   <none>          2d16h   v1.28.15
k8s-node2    NotReady   <none>          2m14s   v1.28.15

目前看到的是NotReady状态,是由于没有安装网络插件的原因。ROLES角色一栏显示“none”,可以通过一下命令修改角色名称:

kubectl label node k8s-master node-role.kubernetes.io/master=master
kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker
kubectl label node k8s-node2 node-role.kubernetes.io/worker=worker

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

相关文章:

  • 【Vue中key属性的技术分析】
  • 智能装配线cad【8张】三维图+设计说明书
  • 安卓Fragmnet的生命周期
  • 【5】Transformers快速入门:Transformer 是啥?
  • 【接口自动化】-11-接口加密签名 全局设置封装
  • Android领域驱动设计与分层架构实践
  • TF-IDF:信息检索与文本挖掘的统计权重基石
  • 开源生态认证体系介绍
  • 当 GitHub 宕机时,我们如何协作?
  • 机器学习-集成学习(EnsembleLearning)
  • Linux 可执行程序核心知识笔记:ELF、加载、虚拟地址与动态库
  • MLOps(机器学习运维)LLMOps(大语言模型运维)介绍(通过自动化、标准化和协作优化模型的开发、部署、监控和维护流程)
  • Ubuntu与Rocky系统安装Java全指南
  • 【门诊进销存出入库管理系统】佳易王医疗器械零售进销存软件:门诊进销存怎么操作?系统实操教程 #医药系统进销存
  • 湖北手机基站数据分享
  • 当“超级高速“遇见“智能大脑“:5G-A×AI如何重塑万物智联时代
  • 双椒派E2000D开发板Linux环境配置指南
  • WireShark:非常好用的网络抓包工具
  • 【工具】通用文档转换器 推荐 Markdown 转为 Word 或者 Pdf格式 可以批量或者通过代码调用
  • 淘宝化妆品
  • Day52 Java面向对象07 类与对象总结
  • 第五章 树与二叉树
  • 腾讯云iOA:全面提升企业办公安全与效率的智能解决方案
  • 什么时候用WS(WebSocket),什么使用用SSE(Server-Sent Events)?
  • HTTP 协议详解:深入理解 Header 与 Body!
  • 【前端Vue】log-viewer组件的使用技巧
  • 有趣的 npm 库 · json-server
  • frp 实现内网穿透实战教程
  • CANopen Magic调试软件使用
  • 1 JQ6500语音播报模块详解(STM32)