一、 服务器环境及初始化

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.pswp.cn/news/918476.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918476.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918476.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用pyqt5实现可勾选的测试用例界面

目录 界面 代码 python有哪些自动化测试的库和html的报告的库可以和这个软件结合使用的 **一、自动化测试核心库** **二、HTML报告生成库** **三、其他实用工具** **与您的工具结合建议** 参考 界面 代码 import sys import time import random from PyQt5.QtWidgets import (…

C语言变量的声明和定义有什么区别?

定义&#xff1a;定义&#xff1a;为变量分配地址和存储空间声明&#xff1a;不分配地址和存储空间一个变量可以在多个地方声明&#xff0c;但是只在一个地方定义。加入extern修饰的是变量的声明&#xff0c;说明此变量将在文件或在文件后面部分定义。1.变量声明作用&#xff1…

imx6ull-驱动开发篇20——linux互斥体实验

目录 实验程序编写 修改设备树文件 LED 驱动修改 mutex.c 测试mutexApp.c Makefile 文件 运行测试 在之前的文章里&#xff0c;我们学习了&#xff1a;驱动开发篇16——信号量与互斥体。 本讲实验里&#xff0c;我们来使用互斥体mutex实现 LED 灯互斥访问的功能&#x…

[4.2-2] NCCL新版本的register如何实现的?

文章目录1->2->31. ncclRegisterP2pIpcBuffer2. ncclIpcLocalRegisterBuffer(..., 1, 0,...)3. ipcRegisterBuffer(..., regRecord,..., isLegacyIpc)4. p2pProxyRegister()1->2->3 1. ncclRegisterP2pIpcBuffer 在enqueue.cc内的调用是&#xff1a; NCCLCHECK(…

在idea中git切换分支,但是我的文件没add,没commit

这是一个很悲伤的故事&#xff0c;我朋友一个下午写了4个小时的代码&#xff0c;差不多10多个类&#xff0c;都在切换分支的时候。IDEA发现有冲突&#xff0c;然后就要resolve conflict&#xff0c;发现自己不知道怎么操作&#xff0c;就点了abort & rollback。然后所有代码…

GPFS api

一、核心命令行 API&#xff08;mm 命令集&#xff09; GPFS 最基础且常用的接口是命令行工具集&#xff08;以mm为前缀&#xff09;&#xff0c;用于文件系统的创建、配置、管理和监控。这些命令可直接在终端执行&#xff0c;也可通过脚本&#xff08;如 Shell、Python&#…

虚拟机一站式部署Claude Code 可视化UI界面

前言 最近&#xff0c;强大的 AI 编码助手 Claude Code 在开发者社区中迅速走红&#xff0c;凭借其出色的代码生成和理解能力赢得了广泛赞誉。然而&#xff0c;其纯粹基于命令行的交互方式&#xff0c;对于许多习惯了图形化界面的开发者&#xff0c;尤其是新手而言&#xff0c…

网站IP被劫持?三步自建防护盾

一、劫持检测实战&#xff08;Python脚本&#xff09; import requests import socket import ssldef check_hijacking(domain):try:# 获取真实DNS解析real_ip socket.gethostbyname(domain)# 本地发起请求验证response requests.get(f"https://{domain}", timeout…

SQL Server从入门到项目实践(超值版)读书笔记 23

第三篇 核心应用篇在本章中&#xff0c;将通过案例示范学习SQL Server数据库的一些核心应用。例如&#xff0c;SQL Server视图的使用、游标的应用、存储过程的应用、索引的应用、触发器的应用、SQL Server事务与锁的应用等。学完本篇&#xff0c;读者将对SQL Server数据库的管理…

功能测试中常见的面试题-一

一、基础概念与理论题什么是软件测试&#xff1f;它的目的是什么&#xff1f;回答&#xff1a; 软件测试是通过人工或自动化手段&#xff0c;运行或评估软件系统&#xff0c;以验证它是否满足规定的需求、识别实际结果与预期结果之间的差异&#xff0c;并评估软件产品质量的过程…

LINUX88 变量:命令定义;普通数组定义(复);declare -i /-x

问题 [codesamba ~]$ array3(ls axel-2.4) [codesamba ~]$ echo $array3 API [codesamba ~]$ ls axel-2.4 API CHANGES conn.o gui README tcp.o axel conf.c COPYING http.c ru.mo text.c axel.1 …

数字IC后端PPA优化| Timing一致性调整方法和Module Region规划方法

Q1:直播课经常讲到一致性&#xff0c;这个一致性的话一般是指place&#xff0c;CTS和PT的derating time&#xff0c;uncertainty和transition吗&#xff0c;我大概知道innovus的uncertainty设置要比PT里面高一点&#xff0c;但具体设计时这几部分的大小应该是一个什么样的关系或…

电子电气架构 --- 软件定义汽车的驱动和挑战

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

机器学习——10 支持向量机SVM

1 支持向量机 1.1 故事引入看下图左边&#xff0c;蓝色和红色的点混在一起&#xff0c;这就像一堆数据&#xff0c;没办法用一条简单的直线把它们分开。再看下图右边&#xff0c;有一条直线把蓝色和红色的点分开&#xff0c;这就是SVM在找的“决策边界”&#xff0c;它能把不同…

若以微服务部署踩坑点

windows docker desktop 部署nacos mysql1、docker部署nacosdocker pull nacos/nacos-server:v2.4.3docker启动命令 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privilegedtrue --network bridge -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMm…

Lua基础+Lua数据类型

Lua基础 Lua介绍 特点&#xff1a;轻量、小巧。C语言开发。开源。 设计的目的&#xff1a;嵌入到应用程序当中&#xff0c;提供灵活的扩展和定制化的功能。 luanginx&#xff0c;luaredis。 环境安装 windows上安装lua&#xff1a; 检查机器上是否有lua C:\Users\cpf>lua lu…

基于VuePress2开发文档自部署及嵌入VUE项目

最近在搞前端开发帮助文档&#xff0c;转了一圈发现Vue提供了一个高性能的、Vue驱动的静态网站生成框架-VuePress。VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容&#xff08;如文档、博客等&#xff09;&#xff0c;然后 VuePress 会生…

Flask初步学习

文章目录一、初识Flask1.1 Pycharm修改环境配置1.2 运行第一个flask项目1.3 获取数据请求1.3.1 动态路由参数一、初识Flask 1.1 Pycharm修改环境配置 file——settings——project——python Interpreter——add interpreter——add local interpreter 1.2 运行第一个fla…

word的正则替换

word查看选中了几行 word替换掉空行 替换空行 按下 “Ctrl H” 组合键打开 “查找和替换” 对话框&#xff0c;在 “查找内容” 框中输入 “pp”&#xff0c;“^p” 代表段落标记&#xff0c;两个 “^p” 表示连续的两个段落标记&#xff0c;即空行。在 “替换为” 框中输入 “…

Spring Framework源码解析——DisposableBean

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl一、概述 DisposableBean 是 Spring 框架中用于定义 Bean 销毁时回调行为的核心接口之一。它提供了一个标准化的钩子方法 destroy()&#xff0c;允许 Bean 在容器关闭或作用域…