k8s(5)
目录
使用Kubeadm安装k8s集群:
初始化操作:
每台主从节点:
升级内核:
所有节点安装docker :
所有节点安装kubeadm,kubelet和kubectl:
修改了 kubeadm-config.yaml,将其传输给其他master节点,先完成所有master节点的镜像拉取:
修改controller-manager和scheduler配置文件:
部署dashboard:
使用Kubeadm安装k8s集群:
环境准备:2主2从
master01,02:192.168.233.10,192.168.233.20
node01,02:192.168.233.30,192.168.233.40
负载均衡器:192.168.233.50,192.168.233.60
注意事项:
master节点cpu核心数要求大于2
最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳
学会一个版本的 高可用部署,其他版本操作都差不多
宿主机尽量升级到CentOS 7.9
内核kernel升级到 4.19+ 这种稳定的内核
部署k8s版本时,尽量找 1.xx.5 这种大于5的小版本(这种一般是比较稳定的版本)
初始化操作:
每台主从节点:
systemctl stop firewalld
systemctl disable firewalld

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

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

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

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

hostnamectl set-hostname master01
hostnamectl set-hostname master02
hostnamectl set-hostname node01
hostnamectl set-hostname node02




vim /etc/hosts
192.168.233.10 master01
192.168.233.20 master02
192.168.233.30 node01
192.168.233.40 node02


cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOFsysctl --system

yum -y install ntpdate
ntpdate ntp.aliyun.com


crontab -e
*/30 * * * * /usr/sbin/ntpdate ntp.aliyun.com &> /dev/null
![]()


升级内核:



[elrepo]
name=elrepo
baseurl=https://mirrors.aliyun.com/elrepo/archive/kernel/el7/x86_64
gpgcheck=0
enabled=1

升级所有节点内核:
yum install -y kernel-lt-devel kernel-lt

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

设置默认启动内核
grub2-set-default 0

修改内核参数:
vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited

重启:
reboot


ulimit -a

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

所有节点安装docker :
yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce docker-ce-cli containerd.io

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "500m", "max-file": "3"
}
}
EOF


systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service


docker info | grep "Cgroup Driver"

所有节点安装kubeadm,kubelet和kubectl:
定义kubernetes源:
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

配置Kubelet使用阿里云的pause镜像:
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2"
EOF

开机自启kubelet:
systemctl enable --now kubelet

在负载均衡器上部署nginx和keepalived(跟二进制安装的一样):

在 master01 节点上设置集群初始化配置文件:
kubeadm config print init-defaults > /opt/kubeadm-config.yaml

修改内容:


可选,有则添加,没有则用自带的local模块:
external:
endpoints:
- https://192.168.233.10:2379
- https://192.168.233.20:2379
caFile: /opt/etcd/ssl/ca.pem
certFile: /opt/etcd/ssl/server.pem
keyFile: /opt/etcd/ssl/server-key.pem

podSubnet: "10.244.0.0/16"
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs

修改了 kubeadm-config.yaml,将其传输给其他master节点,先完成所有master节点的镜像拉取:
scp kubeadm-config.yaml master02:/opt/

kubeadm config images pull --config /opt/kubeadm-config.yaml


master01 节点进行初始化:
kubeadm init --config kubeadm-config.yaml --upload-certs | tee kubeadm-init.log



配置 kubectl:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config



修改controller-manager和scheduler配置文件:
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml




systemctl restart kubelet

初始化后会生成 etc/kubernetes/目录下文件:

其他节点也如此操作:
若初始化失败,进行的操作
kubeadm reset -f
ipvsadm --clear
rm -rf ~/.kube
再次进行初始化
master节点对接:
kubeadm join 192.168.233.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:4b0444f7df160c2ae1515225cb4746c21ff7ce11099fc8540d63f333d93657d8 \
--control-plane --certificate-key 7be247a882d02fce65b7d6d224d29dbadc7c378299d8b50539f237657fa3cebf



node 节点加入集群:
kubeadm join 192.168.233.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:4b0444f7df160c2ae1515225cb4746c21ff7ce11099fc8540d63f333d93657d8


部署网络插件:


将文件传给master:




部署dashboard:
在 master01 节点上操作上传 recommended.yaml 文件到 /opt/目录中:

创建service account并绑定默认cluster-admin管理员集群角色:
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

访问即可。
相关文章:
k8s(5)
目录 使用Kubeadm安装k8s集群: 初始化操作: 每台主从节点: 升级内核: 所有节点安装docker : 所有节点安装kubeadm,kubelet和kubectl: 修改了 kubeadm-config.yaml,将其传输给…...
【服务器数据恢复】ext3文件系统下硬盘坏道掉线的数据恢复案例
服务器数据恢复环境: 一台IBM某型号服务器上有16块FC硬盘组建RAID阵列。上层linux操作系统,ext3文件系统,部署有oracle数据库。 服务器故障&检测: 服务器上跑的业务突然崩溃,管理员发现服务器上有2块磁盘的指示灯…...
Sentinel 动态规则扩展
一、规则 Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则: 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较直观,…...
UE5 UE4 自定义插件自动开启关联插件(plugin enable)
在我们自己编写UE4、UE5的插件时,常常需要开启相关联的插件进行功能编写。 例如:UE4/5 批量进行贴图Texture压缩、修改饱和度_ue4批量修改纹理大小-CSDN博客 而让插件使用者每次使用时,依次进行开启其他相关联插件确实有些麻烦。 如何只需要…...
Android摄像头横屏的时候_人脸预览横向显示_问题解决---Android原生开发工作笔记164
在Android系统的平板中发现一个问题,我们做的一个Android程序,横屏的时候,摄像头在上面, 然后这个时候程序中的一个人脸预览页面,横向手持平板,摄像头在上面,但是这个时候预览的摄像头画面却是很像头像朝左,也是横过来的. private int getCameraOrientation(int cameraId) {Ca…...
网络安全防御保护 Day6
深度检测技术 DFI(深度包检测技术):主要针对完整的数据包(数据包分片,分段需要重组),之后对 数据包的内容进行识别。 DPI(深度流检测技术):一种基于流量…...
自动驾驶消息传输机制-LCM
需要用到LCM消息通讯,遂研究下。 这里写目录标题 1 LCM简介2. LCM源码分析3 LCM C教程与实例3.1 安装配置及介绍3.2 创建类型定义3.3 初始化LCM3.4 发布publish一个消息3.5 订阅和接收一个消息3.6 LCM进程间通讯3.7 注意事项?3.7.1 当数据结构定义的是数…...
架构设计实践:熟悉架构设计方法论,并动手绘制架构设计图
文章目录 一、架构设计要素1、架构设计目标2、架构设计模式(1)分而治之(2)迭代式设计 3、架构设计的输入(1)概览(2)功能需求 - WH分析法(3)质量 - “怎么”分…...
【推荐算法系列十六】:协同过滤
文章目录 参考原理基于邻域的协同过滤算法基于用户的协同过滤(User-Based Collaborative Filtering)基于内容的协同过滤 基于模型的协同过滤算法 扩展优缺点 参考 推荐系统之神经协同过滤 原理 基于邻域的协同过滤算法 基于邻域的协同过滤算法又包括…...
linux动态库加载相关
linux下动态库搜索规则 (1)编译目标代码时指定的动态库搜索路径,也就是RPATH; (2)环境变量LD_LIBRARY_PATH指定的动态库搜索路径; (3)配置文件/etc/ld.so.conf中指定的动态库搜索路径;配置完毕后需运行ldconfig命令生效; (4)默…...
python 基础绘图函数 实例
简介 在 Python 中,有许多用于绘图的库。以下是一些常用的 Python 绘图库及其基本绘图函数的简要介绍: Matplotlib: matplotlib.pyplot.plot(x, y): 绘制线图。matplotlib.pyplot.scatter(x, y): 绘制散点图。matplotlib.pyplot.bar(x, height): 绘制条…...
28. 找出字符串中第一个匹配项的下标(力扣LeetCode)
文章目录 28. 找出字符串中第一个匹配项的下标题目描述暴力KMP算法 28. 找出字符串中第一个匹配项的下标 题目描述 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。…...
1 开源鸿蒙OpenHarmony niobe407 STM32F407IGT6芯片轻型系统全量源码4.1版本下载流程
开源鸿蒙OpenHarmony niobe407 STM32F407IGT6芯片轻型系统全量源码4.1版本下载流程 作者将狼才鲸日期2024-02-27 一、前景提要 如果通过DevEco Marketplace网站获取下载源码的话,不全,有些板子下不到;OpenHarmony开发板列表,官方…...
洛谷C++简单题小练习day21—梦境数数小程序
day21--梦境数数--2.25 习题概述 题目背景 Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。 题目描述 Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0…9&#x…...
LabVIEW高精度闭式微小型循环泵性能测试
LabVIEW高精度闭式微小型循环泵性能测试 开发了一套基于LabVIEW的高精度闭式微小型循环泵性能测试系统,旨在通过先进的测试技术和虚拟仪器技术,对微小型循环泵的性能进行精确测量和分析,从而优化泵的设计和性能,提高其在航空、机…...
同局域网共享虚拟机(VMware)
一、前言 首先我们先来了解下 VMware 的三种网络模式桥接模式、NAT模式、仅主机模式,网络类型介绍详情可以参考下我之前的文档 Linux系统虚拟机安装(上)第三章 - 第9步指定网络类型。了解三种网络模式的原理之后,再来剖析下需求&…...
docker学习快速入门
目录 Linux下安装docker配置阿里云镜像加速docker命令部署安装Tomcat、ES容器数据卷DockerFiledocker网络制作tomcat镜像Redis集群部署SpringBoot微服务打包docker镜像拓展 什么是Docker Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例。服务…...
大语言模型LLM推理加速:LangChain与ChatGLM3-6B的推理加速技术(LLM系列11)
文章目录 大语言模型LLM推理加速:LangChain与ChatGLM3-6B的推理加速技术(LLM系列11)引言LangChain框架下的推理优化LangChain的核心理念与功能特点分布式计算与知识图谱集成优化推理路径实例分析:使用链式查询与缓存机制提升模型推…...
GSVA -- 学习记录
文章目录 1.原理简介2. 注意事项3. 功能实现代码实现部分 4.可视化5.与GSEA比较 1.原理简介 Gene Set Variation Analysis (GSVA) 基因集变异分析。可以简单认为是样本数据中的基因根据表达量排序后形成了一个rank list,这个rank list 与 预设的gene setsÿ…...
基于Springboot的旅游网管理系统设计与实现(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的旅游网管理系统设计与实现(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...
Arduino UNO变身迷你信号发生器:基于MCP4725 DAC的正弦波/三角波生成全攻略
Arduino UNO与MCP4725 DAC打造迷你信号发生器实战指南 在电子制作和音频实验领域,信号发生器是不可或缺的基础工具。传统台式信号发生器虽然功能强大,但价格昂贵且体积庞大。本文将展示如何用Arduino UNO搭配MCP4725 DAC模块,打造一个成本不到…...
别再死磕COE文件了!Vivado里用$readmemb/h给RAM上电初始化的正确姿势(附避坑指南)
Vivado中RAM初始化的终极方案:告别COE文件,掌握$readmemb/h的正确用法 在FPGA开发中,RAM初始化是个看似简单却暗藏玄机的环节。许多开发者都曾陷入这样的困境:按照官方文档和主流教程使用COE文件初始化IP核,结果上电后…...
Android Profiler 内存分析实战:从卡顿溯源到泄漏定位
1. Android Profiler内存分析器入门指南 第一次打开Android Studio的Profiler面板时,很多开发者都会被那些跳动的曲线和复杂的数据搞得一头雾水。记得我刚接触内存分析时,盯着那些上上下下的折线图看了半天,完全不知道从何下手。其实Android …...
SQLite JDBC 驱动:Java 生态中的原生数据库访问架构深度解析
SQLite JDBC 驱动:Java 生态中的原生数据库访问架构深度解析 【免费下载链接】sqlite-jdbc SQLite JDBC Driver 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-jdbc SQLite JDBC 驱动为 Java 应用提供了访问 SQLite 数据库的标准 JDBC 接口࿰…...
深入GStreamer插件生态:从good、bad、ugly到libav,如何为你的项目选对‘轮子’
深入GStreamer插件生态:从good、bad、ugly到libav,如何为你的项目选对‘轮子’ 在多媒体开发领域,GStreamer以其灵活的管道架构和丰富的插件生态著称。但面对good、bad、ugly和libav四大插件集,开发者常陷入选择困境:是…...
cmu15445 2025fall lec13 Query Execution Pt.1
lec13 Query Execution Pt1目前已经基本实现了基础模块(排序,aggregation,join),接下来就是如何把这些东西整合到一起来执行查询intro从query plan 里细化了 1 pipeline:一系列算子的序列,元组在他们之间连续流动,不需要中间存储 …...
STT错误排查手册:10个常见问题解决方案与性能调优终极指南
STT错误排查手册:10个常见问题解决方案与性能调优终极指南 【免费下载链接】stt Voice Recognition to Text Tool / 一个离线运行的本地音视频转字幕工具,输出json、srt字幕、纯文字格式 项目地址: https://gitcode.com/gh_mirrors/stt/stt STT&a…...
LightOnOCR-2-1B与VSCode开发环境配置指南
LightOnOCR-2-1B与VSCode开发环境配置指南 1. 开发环境准备 在开始使用LightOnOCR-2-1B进行文档识别开发之前,我们需要先配置一个高效的VSCode开发环境。这个模型是一个10亿参数的端到端视觉语言模型,专门用于将PDF、扫描件和图像转换为结构化的文本内…...
egergergeeert开源可部署实践:本地化图像生成规避数据外泄风险
egergergeeert开源可部署实践:本地化图像生成规避数据外泄风险 1. 产品概述 egergergeeert 是一套面向图像创作场景的文生图解决方案,支持通过自然语言描述直接生成各类视觉内容。该工具特别适合需要快速产出概念图、插画草图、角色设计等创意工作的场…...
可学习上采样方法改进YOLOv5特征图恢复:从原理到实战全解析
摘要 YOLOv5作为经典的单阶段目标检测算法,在特征金字塔网络中采用最近邻插值进行上采样,该方法虽然计算高效但不可学习,限制了特征恢复的质量。本文提出使用可学习上采样方法(Carafe、DySample、IndexNet等)替代传统插值,通过引入空间感知的上采样核预测机制,显著提升…...
