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

1.《DevOps》系列K8S部署CICD流水线之部署K8S集群~version1.28.2

架构

服务器IP服务名称硬件配置
192.168.1.100k8s-master8核、16G、120G
192.168.1.101k8s-node18核、16G、120G
192.168.1.102k8s-node28核、16G、120G
192.168.1.103nfs2核、4G、500G

操作系统:Rocky9.3

后续通过K8S部署GitLab、Harbor、Jenkins

一、环境准备

关闭firewalld、selinux、swap

(三台K8S集群服务器同时操作)

#关闭防火墙开机自启

systemctl disable firewalld

 

#关闭防火墙服务

systemctl stop firewalld

 

#临时SELINUX

setenforce 0

 

#修改SELINUX配置文件,以免下次重启系统开启SELINUX

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

 

#临时关闭内存交换

swapoff -a

 

#修改fstab配置文件,以免下次重启系统开启swap

sed -i '/\sswap\s/s/^/#/' /etc/fstab

设置主机名称

(三台K8S集群服务器同时操作)

修改主机名称
hostnamectl set-hostname 主机名称

 
写入hosts配置
cat >> /etc/hosts <<EOF
192.168.1.100 k8s-master
192.168.1.101 k8s-node1
192.168.1.102 k8s-node2
EOF

将桥接的ipv4流量传递到iptables链

(三台K8S集群服务器同时操作)

#生成bridge相关内核参数

modprobe br_netfilter

  

#写入k8s.conf 配置

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
 

#生效

sysctl --system

 

#打开端口转发

echo "net.ipv4.ip_forward = 1"  >> /etc/sysctl.conf

 

#刷新

sysctl -p

同步时间

(三台K8S集群服务器同时操作)

yum install -y chrony

systemctl start chronyd

systemctl enable chronyd

timedatectl set-timezone Asia/Shanghai

二、部署containerd

K8S的1.24版本后续移除了dockershim,k8s绕过docker,直接调用containerd,所以本次部署不用docker,选择部署containerd

(三台K8S集群服务器同时操作)

#先安装yum-utils工具
yum install -y yum-utils  

 

#配置Docker官方的yum仓库,如果做过,可以跳过
yum-config-manager \
    --add-repo \
  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

#安装containerd
yum install containerd.io -y

 

#启动服务
systemctl enable containerd
systemctl start containerd
  
生成默认配置
containerd  config default > /etc/containerd/config.toml 

 

修改配置
sed -i 's@sandbox_image = "registry.k8s.io/pause:3.8"@sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8"@' /etc/containerd/config.toml

 

#改为阿里云镜像地址

sed -i 's@SystemdCgroup = false@SystemdCgroup = true@' /etc/containerd/config.toml

  

#重启containerd服务

systemctl restart containerd

三、配置kubernetes仓库

(三台K8S集群服务器同时操作)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

四、安装kubeadm和kubelet

(三台K8S集群服务器同时操作)

#查看所有版本
yum  --showduplicates list kubeadm

 

#安装1.28.2版本
yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2

 

#启动kubelet服务
systemctl start kubelet.service
systemctl enable kubelet.service

五、设置crictl连接 containerd

(三台K8S集群服务器同时操作)

crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock

六、集群初始化

#Master执行初始化

一定要在master机子上操作以下命令!!!

一定要在master机子上操作以下命令!!!

一定要在master机子上操作以下命令!!!

 

kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.1.100 --kubernetes-version=v1.28.2  --service-cidr=10.15.0.0/16  --pod-network-cidr=10.18.0.0/16

提示:输入命令后初始化比较久,该过程会下载相关东西,保证网络通畅

 

然后初始化完成后,你会看到token,跟下面类似的,先复制保存

 kubeadm join 192.168.1.100:6443 --token 2a6go4.u2fxys0a208s8brv \
        --discovery-token-ca-cert-hash sha256:4f5c4fef972b51fa34735675ee87fa52c5c1855f03e60f33009e8919e5e9ef40

 

#配置权限(不然无法使用kubectl命令操作K8S集群)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

 

#node节点加入master

在两台node节点服务器上输入刚刚master初始化后得到的token

kubeadm join 192.168.1.100:6443 --token 2a6go4.u2fxys0a208s8brv \
        --discovery-token-ca-cert-hash sha256:4f5c4fef972b51fa34735675ee87fa52c5c1855f03e60f33009e8919e5e9ef40

 

然后在master上等待一会再执行查询命令,观察节点是否加入
kubectl get node 
kubectl get pod --all-namespaces

 

成功后会出现node信息
[root@k8s-master ~]# kubectl get node
NAME         STATUS       ROLES             AGE      VERSION
k8s-master  NotReady    control-plane   2d18h     v1.28.2
k8s-node1   NotReady    <none>            2d18h     v1.28.2
k8s-node2   NotReady   <none>             2d18h     v1.28.2

七、配置代理镜像

因为默认的dockerhub地址被屏蔽导致镜像无法拉取,则需要在/etc/containerd/config.toml文件下进行配置代理镜像解决网络问题,如果能科学上网则不用配置代理镜像

#修改配置文件

vim /etc/containerd/config.toml
找到下面这一行mirrors
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
后插入下面这两行
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint=["docker.1panel.live"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
endpoint=["docker.1panel.live"]
 

保存后需要重启containerd

systemctl restart ontainerd

注意:docker.1panel.live代理地址不知道什么时候会出现无法使用,如果配置后还是无法下载镜像,自行去网上寻找新的镜像或者科学上网

 

也可以在别的拉取镜像的机器打包成镜像tar压缩包,分别在node上通过以下命令进行上传镜像

ctr -n k8s.io  image import 镜像压缩包名称 镜像名称:v版本号

八、安装calico网络

master节点上操作

curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O

  

下载完后还需要修改⾥⾯定义 Pod ⽹络(CALICO_IPV4POOL_CIDR),与前⾯ kubeadm init 的 --podnetwork-cidr 指定的⼀样

  
vim calico.yaml
# - name: CALICO_IPV4POOL_CIDR
# value: "192.168.0.0/16"
# 修改为:
- name: CALICO_IPV4POOL_CIDR
  value: "10.18.0.0/16"

 

部署
kubectl apply -f calico.yaml

 

查看
kubectl get pod -A

 

如果calico相关的pod都进入Running状态,则查看node信息

kubectl get pod

 

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   2d18h   v1.28.2
k8s-node1    Ready    <none>          2d18h   v1.28.2
k8s-node2    Ready    <none>          2d18h   v1.28.2

则calico安装成功

此时K8S集群部署成功!!!

 

 

 

 

 

 

 

 

相关文章:

1.《DevOps》系列K8S部署CICD流水线之部署K8S集群~version1.28.2

架构 服务器IP服务名称硬件配置192.168.1.100k8s-master8核、16G、120G192.168.1.101k8s-node18核、16G、120G192.168.1.102k8s-node28核、16G、120G192.168.1.103nfs2核、4G、500G 操作系统&#xff1a;Rocky9.3 后续通过K8S部署GitLab、Harbor、Jenkins 一、环境准备 关…...

c/c++八股文

c基础 一、指针和引用的区别 定义方式: 指针是通过 * 操作符定义的变量,用于存储另一个变量的地址。例如: int* p &x;引用是通过 & 操作符定义的别名,直接引用另一个变量。例如: int& r x; 内存占用: 指针是一个独立的变量,占用一定的内存空间。引用不是独立的…...

Docker配置代理解决pull超时问题

操作系统: CentOS Linux 8 Docker版本: 26.1.3 前置&#xff1a;你需拥有&#x1f431; 1. 配置 proxy.conf 1.1 创建配置文件目录 创建 docker.service.d&#xff0c;进入到 docker.service.d 中打开 proxy.conf (没有文件打开会自动创建)。 注意&#xff1a;每个人的路径可…...

ECharts的特点

ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;由百度团队开源&#xff0c;并于2018年初捐赠给Apache基金会&#xff0c;成为ASF孵化级项目。ECharts提供了直观、生动、可交互、可个性化定制的数据可视化图表&#xff0c;广泛应用于数据分析和展示领域。以下是关于…...

JVM OutOfMemoryError 与 StackOverflowError 异常

目录 前言 堆溢出 虚拟机栈和本地方法栈溢出 方法区溢出 前言 JVM规范中规定, 除了程序计数器之外, 其他的运行时数据区域, 例如堆栈, 方法区, 都会出现OutOfMemoryError异常. 那么到底是怎么样的代码, 才会引起堆溢出, 栈溢出, 或者是方法区的溢出呢? 如果遇到了又该如何…...

linux防火墙学习

Linux 防火墙配置&#xff08;iptables和firewalld&#xff09; Linux 防火墙配置&#xff08;iptables和firewalld&#xff09;_iptables配置文件位置-CSDN博客 Linux查看防火墙状态及开启关闭命令_linux 查看防火墙-CSDN博客...

Java面试篇基础部分- Java中的阻塞队列

首先队列是一种前进后出的操作结构,也就是说它只允许从队列前端进入,从队列后端退出。这个前端和后端看个人如何理解,也就是通常所说的入队和出队,队头和队尾。 阻塞队列和一般队列的不同就在于阻塞队列是可以阻塞的,这里所说的并不是说队列中间或者队头队尾被拦截了,而是…...

Go语言并发编程之Channels详解

并发编程是Go语言的一大特色,而channel(通道)则是Go语言中用于实现并发的核心工具之一。它源于CSP(Communicating Sequential Processes)的概念,旨在让多个goroutine之间能够高效地进行通信和同步。本文将深入探讨channel的用法、原理和最佳实践,通过丰富的示例代码和详…...

【Java集合】LinkedList

概要 LinkedList是用链表结构存储数据的&#xff0c;很适合数据的动态插入和删除&#xff0c;随机访问速度比较慢。另外&#xff0c;他还提供了 List 接口中没有定义的方法&#xff0c;专门用于操作表头和表尾元素&#xff0c;可以当作堆栈、队列和双向队列使用。 链表 链表是…...

大模型之基准测试集(Benchmark)-给通义千问2.0做测评的10个权威测基准测评集

引言 在去年(2023)云栖大会上&#xff0c;阿里云正式发布千亿级参数大模型通义千问2.0。据现场介绍&#xff0c;在10个权威测评中&#xff0c;通义千问2.0综合性能超过GPT-3.5&#xff0c;正在加速追赶GPT-4。以下是通义千问在MMLU、C-Eval、GSM8K、HumanEval、MATH等10个主流…...

解决selenium爬虫被浏览器检测问题

文章目录 专栏导读1.问题解析2.代码解析(Edge/Chrome通用)2.1 设置Edge浏览器选项:2.2 尝试启用后台模式2.3 排除启用自动化模式的标志2.4 禁用自动化扩展2.5 设置用户代理2.6 实例化浏览器驱动对象并应用配置2.7 在页面加载时执行JavaScript代码 3.完整代码&#xff08;可直接…...

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-17

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-17 1. Large Language Models in Biomedical and Health Informatics: A Review with Bibliometric Analysis H Yu, L Fan, L Li, J Zhou, Z Ma, L Xian, W Hua, S He… - Journal of Healthcare …, 2024 生物…...

LLM - 理解 多模态大语言模型(MLLM) 的 幻觉(Hallucination) 与相关技术 (七)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142463789 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 多模态…...

如何在C++中实现RDP协议的屏幕更新功能?

在C++中实现RDP协议的屏幕更新功能涉及多个步骤,包括接收RDP服务器发送的屏幕更新PDU(协议数据单元)、解析这些PDU以获取图像数据,以及将这些图像数据渲染到本地显示设备上。以下是一个简化的流程,指导你如何在C++中处理这一功能: 1. 监听和接收屏幕更新PDU 首先,你的…...

Tornado 是一个 Python 异步网络库和 web 框架

Tornado 是一个 Python 异步网络库和 web 框架&#xff0c;它最初由 FriendFeed 开发&#xff0c;后来被 Facebook 收购并开源。Tornado 因其非阻塞的 I/O 操作和优秀的性能而广受欢迎&#xff0c;特别是在需要处理大量并发连接的应用中。Tornado 的底层实现主要依赖于 Python …...

鹏哥C语言49---第5次作业:选择语句 if 和 switch

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //---------------------------------------------------------------------------------第 5 次作业&#xff1a;选择语句 if 和 switch //-----------------------------------------------------------------1.输…...

通过 Flink 的火焰图定位反压

在 Apache Flink 中&#xff0c;Web UI 提供了丰富的监控工具来帮助用户分析和解决作业性能问题&#xff0c;其中火焰图&#xff08;Flame Graph&#xff09;是用于分析反压问题的一个强有力的工具。反压可能是由于作业中某些算子处理速度过慢&#xff0c;或者资源耗尽导致的。…...

初识爬虫8

1.selenium的作用和工作原理 2. 使用selenium&#xff0c;完成web浏览器调用 # -*- coding: utf-8 -*- # 自动化测试工具&#xff0c;降低难度&#xff0c;性能也降低 from selenium import webdriverdriver webdriver.Edge()driver.get("https://www.itcast.cn/")…...

Unity SRP 可编程渲染管线的基本用法

可编程渲染管线使用教程 SRP 可以处理Canvas为Screen Space - Overlay的渲染 安装插件 首先进入package manager&#xff0c;下载Core RP Lib组件 创建渲染管线 编写渲染管线逻辑脚本 新建脚本取名为MPipeLine&#xff0c;该脚本用于实现渲染管线的处理逻辑 using Unity…...

AutoX.js向后端传输二进制数据

android的JavaScript自动化软件用过Hamibot和AutoX.js 不过在向后端传输二进制数据时都有些限制&#xff0c;不如浏览器前端那么自由。Hamibot的http按文档应该时能支持传字节数组&#xff0c;但是实际上应该还没有支持。AutoX.js的http也是这样&#xff0c;但是AutoX.js还支持…...

lvgl学习笔记--基础对象1

【LVGL学习笔记】&#xff08;三&#xff09;控件使用_学习_煜个头头-GitCode 开源社区 LVGL 基础对象|极客笔记 #include "../../../lv_examples.h"void lv_ex_obj_1(void) {lv_obj_t * obj1;obj1 lv_obj_create(lv_scr_act(), NULL);lv_obj_set_size(obj1, 100, …...

TDengine 在业务落地与架构改造中的应用实践!

前言 在物联网和大数据时代&#xff0c;时序数据的管理和分析变得至关重要。TDengine&#xff0c;作为一款专为时序数据设计的开源数据库&#xff0c;以其卓越的存储和查询效率&#xff0c;成为众多企业优化数据架构的优选。本文将分享我将TDengine成功应用于实际业务的经验&am…...

Python3爬虫教程-HTTP基本原理

HTTP基本原理 1&#xff0c;URL组成部分详解2&#xff0c;HTTP和HTTPS3&#xff0c;HTTP请求过程4&#xff0c;请求&#xff08;Request&#xff09;请求方法&#xff08;Request Method&#xff09;请求的网址&#xff08;Request URL&#xff09;请求头&#xff08;Request H…...

竹云赋能“中国·贵州”全省统一移动应用平台建设,打造政务服务“新引擎”

近日&#xff0c;2024中国国际大数据产业博览会在贵州贵阳圆满落幕。会上&#xff0c;由贵州省政府办公厅牵头建设的“中国贵州”全省统一移动应用平台正式发布&#xff0c;聚焦民生办事、政务公开、政民互动、扁平高效、数据赋能五大模块&#xff0c;旨在打造公平普惠的服务平…...

【MySQL 04】数据类型

目录 1.数据类型分类 2.数值类型 2.1 tinyint 类型 2.2 bit类型 2.3 float类型 2.4decimal 3.字符串类型 3.1 char类型 3.2 varchar类型 4.日期和时间类型 6. enum和set类型 6.1.enum和set类型简介&#xff1a; 6.2.enum和set的一般使用方法 6.3.用数字的方式…...

夹耳式蓝牙耳机哪个牌子最好,教你如何不踩雷

近年来&#xff0c;夹耳式耳机备受众人喜爱。主要原因在于其不入耳的特性&#xff0c;既能保护听力健康&#xff0c;又能让人享受到极致的音乐体验。久而久之&#xff0c;人们对入耳式耳机反而感到不习惯了。然而&#xff0c;一些想要入手夹耳式耳机的小伙伴却犯了难&#xff0…...

亿发零售云解析:新零售破局与年轻群体消费趋势变化

近年来&#xff0c;随着数字化、智能化的快速发展&#xff0c;“新零售”概念逐渐成为商业领域的热门话题。相比传统零售&#xff0c;新零售通过线上与线下的深度融合&#xff0c;利用大数据、人工智能等技术&#xff0c;赋能消费者与品牌之间的互动。尤其在年轻消费群体中&…...

zabbix“专家坐诊”第257期问答

问题一 Q&#xff1a;zabbix5.0监控项里的键值&#xff0c;怎么设置变量值&#xff1f;{#ABC} {$ABC} 都识别不到变量。 A&#xff1a;可以参考一下这个。 问题二 Q&#xff1a;我想问一下用odbc创建监控项&#xff0c;生成了json格式&#xff0c;如何创建一个触发器去判断里面…...

【代码笔记】

1级 第一课——cout /* C01.L01.程序的基本结构、cout语句 杨彦彬 2024.9.23日作业 &#xff08;2024.9.23做&#xff09; */ //调用头文件 #include<bits/stdc.h> //使用标准名字空间 using namespace std; //代码主体 int main(){//输出数字cout<<25;cout<&…...

CentOS上使用Mosquitto实现Mqtt主题消息发布和订阅mqtt主题消息连同时间戳记录到文件

场景 CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载&#xff1a; CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载-CSDN博客 上面介绍了mosquitto的离线安装。 如果业务场景中需要订阅某mqtt主题的消息并将收到消息的时间以…...