k8s学习笔记(一)
configMap
一般用来存储配置信息
创建configMap
从文件中获取信息创建:kubectl create configmap my-config --from-file=/tmp/k8s/user.txt
直接指定信息:
kubectl create configmap my-config01 --from-literal=key1=config1 --from-literal=key2=config2
ymal文件创建
ConfigMap的使用
为什么使用: 1,复用配置文件,可以启动多个nginx的pod,共同使用同一个pod
2,便于修改,维护
如何使用:
1 将ConfigMap中的数据设置为容器的环境变量
定义configmap
kubectl create configmap my-config05 --from-literal=key1=123
2 configmap挂载
案例将名为my-config的cm挂载到pod中的/etc/config目录下,可以进入容器查看
注意:subPath: nginx.cong #如果mountPath挂载目录之前有数据,需要在下面加上subPath,表示不会覆盖原有数据。换句话说就是指定某个文件挂载,而不是挂载全部
secret
与configmap类似
探针
种类
livenessProbe
readynessProbe
startupProbe(1.16新引入)
探测方法
ExecAction(执行命令,正确返回0,错误返回非0)、
HttpGet(访问htttp页面,正确则显示正常,错误则会在svc中的endpoints中删除对应的pod,直至下次检查成功
TcpSocket: 通过TCP 连接来检查容器的状态。它通常用于检查容器内部的 TCP 服务是否可以正常连接。
livenessProbe
exec
[root@master day07]# cat liveness-exec.yml
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec-001
spec:
containers:
- name: liveness
image: nginx
args: #定义容器启动时执行的命令
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
livenessProbe: #指定livess检查
exec: #指定检查方式为执行命令
command:
- cat
- /tmp/healthy #命令成功返回0,失败返回非0,并杀死,重启
initialDelaySeconds: 5 #在容器启动后多久开始进行首次 liveness 检查,这里是 5 秒
periodSeconds: 5 #定义 liveness 检查的执行周期,每隔 5 秒钟执行一次。
pod状态为running时,此时exec进入pod中删除/usr/nginx/html/下面的index.html,使用describe 查看pod状态会显示错误,过一会重启后有显示正常(重启pod会自动创建新的container,index.htm存在)
tcpsocket
[root@master day07]# cat liveness-tcp.yml
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: nginx
ports:
- containerPort: 80
livenessProbe:
tcpSocket:
port: 88 #定义检查端口88是否可用15s后检测失败,容器重启
initialDelaySeconds: 15
periodSeconds: 20
rc
(ReplicationController),老版本使用,将来(1.6版本)被禁用,不支持热更新
ReplicationController 确保在任何时候都有特定数量的 Pod 副本处于运行状态。 换句话说,ReplicationController 确保一个 Pod 或一组同类的 Pod 总是可用的。
RC通过spec.replicas
字段设置期望的Pod副本数,并通过spec.template
定义Pod的模板,包括容器和标签等信息,它不支持滚动更新或灰度发布
首先通过rc创建三个pod,基于nginx镜像,标签lables为app=nginx,副本数为3
查看pod状态
删除pod,测试rc是否可以维持pod个数
再次查看pod
发现pod数量不变,但是IP和node节点发生变化
rs
(replicasets)
相当于是rc的升级
RC通过spec.replicas
字段设置期望的Pod副本数,并通过spec.template
定义Pod的模板,包括容器和标签等信息
deployment
实际上是对rs的封装和升级,通过 ReplicaSet 来管理 Pod 的副本集。
供了对Pod副本集部署和更新的声明式配置,支持滚动更新、回滚和版本控制等功能
Deployment通过spec.replicas
字段设置期望的Pod副本数,并通过spec.template
定义Pod的模板,与RC和RS类似。不同之处在于,Deployment还支持spec.strategy
字段,用于定义更新策略,例如滚动更新的速率和暂停条件,
其中deployment.spec.strategy.rollingUpdate下的两个重参数
maxSurge:在滚动更新期间可以创建的额外的 Pod 的最大数量或百分比,可以是一个值或百分比
maxUnavailable:滚动更新期间可以创建的额外的 Pod 的最大数量或百分比,值或百分比
deploy的更新与回滚
更新
原理,通过修改image的版本不同,curl -I ip:端口显示的nginx版本不同
查看pod创建情况,这里的镜像版本为最新
测试版本,版本为1.21.5
版本的回滚,指定版本为1.16.1
直接vim编辑配置文件修改即可
把image: nginx修改为image: nginx1.16.1,保存退出
kubectl apply -f deploy-pod.yml
此时再次测试,实现通过deployment回滚版本
版本升级与回滚类似,vim修改镜像版本即可,完成后保存退出
执行kubectl apply -f deploy-pod.yml
service
service有4中类型 ExternalName, ClusterIP, NodePort, and LoadBalancer,默认为Cluster,配置好之后只能在k8s集群内部访问,NodePort可以在集群外部访问
NodePort
此时可以在浏览器上输入192.168.199.149:32054,成功访问nginx,150,151也可以
ClusterIP
创建service
kubectl apply -f service.yml
查看svc
服务发现
service会自动通过lables发现可用的pod节点,并把节点的ip加入到endps列表中
查看svc的endpoint,把符合条件的三个pod加入到列表中
删除pod,测试service是否能自动发现新创建的pod
查看endpoints,发现service的自动发现服务正常
负载均衡
查看pod情况
为了测试负载均衡,这里修改nginx服务的html配置文件,以达到负载均衡效果
查看service
测试负载均衡
相关文章:

k8s学习笔记(一)
configMap 一般用来存储配置信息 创建configMap 从文件中获取信息创建:kubectl create configmap my-config --from-file/tmp/k8s/user.txt 直接指定信息: kubectl create configmap my-config01 --from-literalkey1config1 --from-literalkey2confi…...
自学前端——JavaScript篇
JavaScript 什么是JavsScript JavaScript是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果,增加用户与网页的交互性。 作为一种客户端语言,JavaScript可以直接嵌入HTML,并在浏览器中执行。 与HTML和CSS不…...
高考毕业季--浅谈自己感想
随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里,计算机科学与技术、人工智能、网络安全、软件工程等专业一…...

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程
遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…...
【Android面试八股文】Kotlin内置标准函数let的原理是什么?
确实,let 函数在 Kotlin 中被广泛使用,特别是在处理可空类型或者需要在对象上执行一系列操作后返回结果的场景中非常有用。 let 函数的源代码 /*** Calls the specified function [block] with `this` value as its argument and returns its result.** For detailed usage i…...
网工面试总结1
网工还是要基本会ACL、ISIS、OSPF、MPLS、QOS、GVRP、VRRP、FW、BGP、STP、IV4\6、WLAN、路由策略、策略路由、LACP等都或多或少要知道,常见的哪怕没有实战,要在ensp、cisco中练过! OSPF邻居故障,你认为是哪些原因?或者…...

[stm32]密码锁
[stm32]密码锁 需要资料的请在文章末尾获取~ 01描述 使用原件:stm32f103c8t6最小系统板x1,0.96寸OLED显示屏四角x1,4x4矩阵按键x1; 键位对应图: 1, 2, 3, 4------------- 1 2 3 4 5&am…...
优化yarn在任务执行时核数把控不准确的问题
核数不准这个事情是个概率问题,如果你碰见了,只能说你有点非欧,本质上是因为集群配置问题,默认时yarn不会去精准把控任务的核数,因为默认的资源计算方式是用实际内存去估算核数,这就导致如果大家配置任务时…...

2024年,收付通申请开通流程
大家好,今天咱们来聊聊关于APP场景中开通微信收付通的一些实用小窍门。在如今的移动互联网时代,很多商家都选择通过APP来提供服务和产品,因此如何在APP中顺利集成微信收付通功能,让用户能够轻松完成支付,就显得尤为重要…...

Django使用django-apscheduler实现定时任务
定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。 我在这里使用的 django-apscheduler库来实现定时任务。 一、安装 django-apscheduler pip install django-apscheduler二、在项目的setting.py…...
python数据分析:修改数据
在 Python 中进行数据分析时,通常使用 pandas 库来处理和修改数据。以下是一个完整的示例,展示如何使用 pandas 库读取数据、修改数据并保存结果。 1. 安装并导入必要的库 首先,确保你已经安装了 pandas 库。如果没有安装,可以使…...

【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)
热门高效的免费实用类API是当今开发者们追逐的宝藏。这些API提供了各种热门功能和服务,能够帮助开发者轻松地为应用程序增添实用性和吸引力。无论是人脸识别、自然语言处理、机器学习还是图像处理,这些热门高效的免费API提供了强大的功能和高效的性能&am…...
日语 11 12
11. 若者の意識 わかもの いしき 新作 新作 新作 新作 新作 しんさく 公開 公開 公開 公開 公開 こうかい 映像 映像 映像 映像 映像 えいぞう 人気 人気 人気 人気 人気 にんき 来週 来週 来週 来週 来週 らいしゅう 外国 外国 外国 外国 外…...

STM32程序启动过程
(1)首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈顶地址(32位),第二个表项是复位中断服务入口地址; (2)然后执行复位中断&…...

天才简史——Diederik P. Kingma与他的Adam优化器
一、了解Diederik P. Kingma 发生日期:2024年6月18日 前几日,与实验室同门一同前往七食堂吃饭。饭间,一位做随机优化的同门说他看过一篇被引18w的文章。随后,我表示不信,说你不会数错了吧,能有1.8w次被引都…...

两个src案例分享
案例一 文前废话:某天正在刷着**社区的帖子,欣赏着漂亮的小姐姐,突然间评论区的一条评论引起了我的注意,类似于下面这样 这种评论在html标签中代码格式是<a>这是文字</a>这样的 同时评论区XSS漏洞的高发区,想着可能会有操作点 一、发布一个标题有js语句的贴子 二…...

宕机了, redis如何保证数据不丢?
前言 如果有人问你:"你会把 Redis 用在什么业务场景下?" 我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。…...

太速科技-基于XCVU9P+ C6678的100G光纤的加速卡
基于XCVU9P C6678的100G光纤的加速卡 一、板卡概述 二、技术指标 • 板卡为自定义结构,板卡大小332mmx260mm; • FPGA采用Xilinx Virtex UltralSCALE 系列芯片 XCVU9P; • FPGA挂载4组FMC HPC 连接器; • 板载4路QSPF,每路数据速…...

Maven:一个下载jar依赖失败的问题解决方案
内部的一个jar包已经上传到了私服上,在私服管理端也能看到该jar包的完整信息,但是springboot项目引入该jar包发现死活下载不下来,报错如图: 从该错误信息中可以看到,找不到服务名是xxl-job这个的,我们要找的…...
Java 枚举的基本使用
一、枚举的概述 java 枚举(Enum)是一种特殊的数据类型,它允许你定义一组命名的常量。在 Java 中,枚举被实现为类,并且继承自 java.lang.Enum 类。枚举的使用可以提供类型安全、可读性强、易于理解的代码。 (1) 枚举的…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...