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

pod生命周期,pod控制器service

一:pod-demo.yml

apiVersion: v1    #  <string>
kind: Pod         #  <string>
metadata:         # <Object>对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)name: pod-demonamespace: default#namespace: myapp-nslabels:           # <map[string]string>  映射数据不能加- 不是列表app: myapptier: frontend
spec:   #   <Object>containers:  #  <[]Object> 对象列表用-引导  对象数组  数组用-引导- name: myappimage: ikubernetes/myapp:v1ports:         #<[]Object>- name: http          # <string>containerPort: 80   #<integer>- name: httpscontainerPort: 443- name: busyboximage: busybox:latestcommand:     # 列表  <[]string>      #替换docker中的entrypoint。- "/bin/sh" - "-c"- "sleep 3600"

二:端口 port

kubectl edit svc myapp-svc
type:NodePort
80:30636/TCPports:- nodePort: 32000    #pod 端口  不定义为随机。port: 800          #集群内访问端口。svc内部端口protocol: TCPtargetPort: 80     #容器端口selector:run: nginx-podsessionAffinity: Nonetype: NodePort     #ClusterPort

三:标签labels: key=value

​ kubectl get pods -l app #显示拥有app标签的Pod

​ kubectl get pods -l run=client

​ kubectl label pods client release=canary #增加标签

​ kubectl label pods client release=stable --overwrite #强行修改标签

四:标签选择器

​ 等值关系:

​ kubectl get pods --show-labels -l release=canary

​ kubectl get pods --show-labels -l release=stable,run

​ 集合关系:in

​ KEY in (VALUE1,VALUE2,VALUE3)

​ kubectl get pods --show-labels -l “release in (canary,beta)”

​ KEY notin (VALUE1,VALUE2,VALUE3)

​ kubectl get pods --show-labels -l “release notin (canary,beta)”

​ 选择器

​ matchLabels: 直接给定键值

​ matchExpressions: 基于给定的表达式来定义标签选择器{key:“KEY”,“OPERATOR”,values:[VAL1,VALU2,…]}

​ OPERATOR: In, NotIn, values字段值必须为非空列表

​ Exists, NotExists values字段必须为空列表

​ nodeSelector <map[string]string>

​ annotations: 资源注解。区别与lables在于 不能挑选资源对象。仅用于为对象提供元数据。

五: pod的生命周期 liveness probe /rediness probe差别。

​ post start --------> run -------->pre stop

​ main container----------------------------------------

​ post start ---->liveness probe /rediness probe------>pre stop

​ livense probe # 存活状态检测

​ rediness probe # 就绪状态检测 判定进程否提供服务 目标不同。 1/1 0/1

​ 1. ExecAction 自定义命令

​ 2. TCPSocketAction 端口命令 tcp端口发命令

​ 3. HTTPGet http 服务请求 应用层get请求。

pod状态:pending 挂起 。条件不满足。调度未完成。

​ running 运行状态

							 Failed,........suceesed   Unknow

​ 创建pod: etcd -----

​ 容器重启策略:

​ Aways :pod中的容器挂了直接重启

​ OnFailure : 重启策略

​ Never: 从不重启

​ Default: Aways

​ pod结束时 会向Pod所有的容器发送stop信号。宽限期。30s。过后重新发送强行这终止信号。

​ exec-demo.yml

apiVersion: v1
kind: Pod 
metadata:name: liveness-exec-pod
spec:containers:- name: liveness-exec-containerimage: busybox:latestcommand:- "/bin/sh"- "-c"- "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy;sleep 3600"livenessProbe:              #exec:command:- "test"- "-e"- "/tmp/healthy"initialDelaySeconds: 2           #  第一次探测延时时间 2秒 。periodSeconds: 5						# 第二次探测间隔的时间 5秒

livenss-httpget.yaml

apiVersion: v1
kind: Pod 
metadata:name: liveness-httpget-pod
spec:containers:- name: liveness-httpget-containerimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80livenessProbe:httpGet:port: http path: /index.htmlinitialDelaySeconds: 2           #  第一次探测延时时间 2秒 。periodSeconds: 5            # 第二次探测间隔的时间 5秒

六:lifecycle 启动后钩子 终止前钩子

​ postStart #启动后执行

​ preStop #结束前执行

​ exec

​ httpGet

​ tcpSocket

poststart-demo.yml

apiVersion: v1
kind: Pod
metadata:name: poststart-pod
spec:containers:- name: busybox-httpdimage: busybox:latestimagePullPolicy: IfNotPresentlifecycle:postStart:          #exec:command:- "/bin/sh"- "-c"- "mkdir -p /data/web/; echo 'homepate' >> /data/web/html.index"  # 首先执行command:         #  不能强依赖postStart的结果。  两条命令不能相互依赖结果 无法确定哪个先执行- "/bin/sh"- "-c" - "sleep 3600"

八:pod控制器。

1.ReplicaSet () ReplicationController

  1. Deployment: 工作与ReplicaSet之上的。 扩缩容。

  2. DaemonSet : 确定每个节点运行一个。 后台守护进程。系统级应用。 支持滚动更新。

  3. Job : 任务是否完成。只能执行一次性作业。

  4. Cronjob:

  5. StatefulSet : 有状态应用。

    1.rs.yml

    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:name: myapp
    spec:replicas: 2selector:matchLabels:          #  匹配Pod标签app: myapprelease: canarytemplate:metadata:name: myapp-pod    #  pod名称。无用。可不定义。labels:           #   pod标签app: myapp      release: canaryenvironment: qaspec:containers:- name: myapp-containerimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80strategy:          #更新策略   金丝雀发布 。rollingUpdate:maxSurge: 1           #  最大只能多1个。maxUnavailable: 0     #  可以有几个不可用。0个 
    

    service与pod控制器无关。lables取决于pod标签。

    Deployment更新策略;

    ​ canary版本 金丝雀

    kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v2 && kubectl rollout pause deployment myapp-deploy #更新1个后暂停更新

    kubectl rollout status deployment myapp-deploy #查看滚动了几个

    kubectl rollout resume deployment myapp-deploy #继续上一次的滚动更新。

    kubectl rollout history deployment myapp-deploy

kubectl rollout undo deployment myapp-deploy --to-revision=5


deploy-myapp.yml

apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deploy
spec:strategy:rollingUpdate:maxSurge: 1maxUnavailable: 0replicas: 5selector:matchLabels:app: myapprelease: canarytemplate:metadata:labels:app: myapprelease: canaryspec:containers:- name: myappimage: ikubernetes/myapp:v2ports:- name: httpcontainerPort: 80

redis-deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: default
spec:replicas: 1selector: matchLabels:app: redisrole: logstortemplate:metadata:labels:app: redisrole: logstorspec:containers:- name: redisimage: redis:4.0-alpineports:- name: rediscontainerPort: 6379

filebeat-daemonset.yml

apiVersion: apps/v1
kind: DaemonSet
metadata:name: filebeat-dsnamespace: default
spec:selector: matchLabels:app: filebeatrelease: stabletemplate:metadata:labels:app: filebeatrelease: stablespec:containers:- name: filebeatimage: ikubernetes/filebeat:5.6.5-alpineenv:- name: REDIS_HOSTvalue: redis.default.svc.cluster.local- name: REDIS_LOG_LEVELvalue: info

kubectl explain pods.spec.hostNetwork #共享宿主机的网络空间。

九、Service

iptables -vnL -t nat

ClusterIP

NodePort

LoadBalancer 云环境

资源记录:SVC_NAME.NS_NAME.DOMAIN.LTD

​ redis.default.svc.cluster.local

redis-svc.yml

apiVersion: v1
kind: Service
metadata:name: redis
spec:clusterIP: 10.97.97.97type: ClusterIPports:- port: 6369targetPort: 6379selector:app: redisrole: logstor
  ports:- nodePort: 32000    #pod 端口  不定义为随机。  尽量不要指定port: 800          #集群内访问端口。svc内部端口  protocol: TCPtargetPort: 80     #容器端口  目标端口 必须指定selector:run: nginx-podsessionAffinity: Nonetype: NodePort     #ClusterPort

$$
ports:

  • nodePort: 32000 #pod 端口 不定义为随机。
    port: 800 #集群内访问端口。svc内部端口
    protocol: TCP
    targetPort: 80 #容器端口
    selector:
    run: nginx-pod
    sessionAffinity: None
    type: NodePort #ClusterPort
    $$

spec:sessionAffinity:ClientIP 连接追踪

无头服务:clusterIP: None . 不能是Nodeport

dig -t A redis.default.svc.cluster.local. @10.96.0.10

apiVersion: v1
kind: Service
metadata:name: app-myapp
spec:type: ClusterIPclusterIP: "None"    #无头服务ports:- port: 80targetPort: 80selector:app: myapprelease: canary 

相关文章:

pod生命周期,pod控制器service

一&#xff1a;pod-demo.yml apiVersion: v1 # <string> kind: Pod # <string> metadata: # <Object>对象&#xff1a;键值对的集合&#xff0c;又称为映射&#xff08;mapping&#xff09;/ 哈希&#xff08;hashes&#xff09; / 字…...

SAP FICO 深入讲解会计凭证

SAP系统在数据处理&#xff0c;无论是业务处理&#xff0c;还是财务处理都会产生大量的凭证&#xff0c;无论是什么凭证&#xff0c;最终的反映形式就是 会计凭证。 1.凭证原则Code 每笔记账都一直以凭证形式存储&#xff0c;每一凭证都作为前后一致的单位保留在系统中&#xf…...

LeetCode 2341. 数组能形成多少数对

【LetMeFly】2341.数组能形成多少数对 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-number-of-pairs-in-array/ 给你一个下标从 0 开始的整数数组 nums 。在一步操作中&#xff0c;你可以执行以下步骤&#xff1a; 从 nums 选出 两个 相等的 整数从 nums…...

PHPStorm常用快捷键

alt 1 左侧项目结构树隐藏或者显示&#xff0c;这两个组合键的使用可以切换“项目结构树”和当前打开文件之间的焦点。 alt 2 隐藏或者显示 Favorites Ctrl Shift F12 切换到最大编辑器窗口&#xff0c;隐藏其他所有的工具窗口。例如项目结构树、Favorites、Terminal等。…...

【基于腾讯云的远程机械臂小车】

【基于腾讯云的远程机械臂小车】1. 项目来源1.1 项目概述1.2 系统结构1.3 设计原理2. 硬件搭建2.1 CH32V307开发板2.2 Arduino mega25602.3 富斯I6遥控器2.4 机械臂小车2.5 ESP8266 MCU2.5.1 ESP8266 MCU介绍2.5.2 腾讯云固件烧录3. 软件设计3.1 两种控制方式3.1.1 富斯I6遥控机…...

兼职任务平台收集(一)分享给有需要的朋友们

互联网时代&#xff0c;给人们带来了很大的便利。信息交流、生活缴费、足不出户购物、便捷出行、线上医疗、线上教育等等很多。可以说&#xff0c;网络的时代会一直存在着。很多人也在互联网上赚到了第一桶金&#xff0c;这跟他们的努力和付出是息息相关的。所谓一份耕耘&#…...

MarkDown中公式的编辑

MarkDown中公式的编辑生成目录积分插入编号常见希腊字母大小写分式括号求和积分连乘根式三角函数运算符集合运算箭头逻辑运算符约等于向量绝对值申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计1077字&…...

解决jupyter以及windows系统中pycharm编译器画图的中文乱码问题大全

一、jupyter环境下中文乱码问题解决 我们在jupyter的notebook中使用matplotlib画图的时候&#xff0c;经常性的会遇见一些中文乱码显示□的情况,如下所示: 在此&#xff0c;网上给出的方法大多是以下的解决方法&#xff1a; import matplotlib.pyplot as pltplt.rcParams[fo…...

06 OpenCV 阈值处理、自适应处理与ostu方法

1 基本概念 CV2中使用阈值的作用是将灰度图像二值化&#xff0c;即将灰度图像的像素值根据一个设定的阈值分成黑白两部分。阈值处理可以用于图像分割、去除噪声、增强图像对比度等多个领域。例如&#xff0c;在物体检测和跟踪中&#xff0c;可以通过对图像进行阈值处理来提取目…...

RFC7519规范-JWT - json web token

简介 什么是JWT(JSON Web Token) 在介绍JWT之前&#xff0c;我们先来回顾一下利用token进行用户身份验证的流程&#xff1a; 客户端使用用户名和密码请求登录服务端收到请求&#xff0c;验证用户名和密码验证成功后&#xff0c;服务端会签发一个token&#xff0c;再把这个to…...

移动机器人设计与实践课程大纲

MiR移动机器人参考资料&#xff1a;图一 西北工业大学-课程平台图二 清华大学出版社-移动机器人目前&#xff0c;基本都是双一流大学开设此类课程&#xff0c;并且都是至少3-4学分&#xff0c;16学时/学分&#xff0c;48-64学时。(⊙﹏⊙)&#xff0c;难办了。咱这只有&#xf…...

Lesson 7.2 Mini Batch K-Means与DBSCAN密度聚类

文章目录一、Mini Batch K-Means 算法原理与实现二、DBSCAN 密度聚类基本原理与实践1. K-Means 聚类算法的算法特性2. DBSCAN 密度聚类基本原理3. DBSCAN 密度聚类的 sklearn 实现除了 K-Means 快速聚类意外&#xff0c;还有两种常用的聚类算法。&#xff08;1&#xff09; 是能…...

11.Dockerfile最佳实践

Dockerfile 最佳实践 Docker官方关于Dockerfile最佳实践原文链接地址&#xff1a;https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ Docker 可以通过从 Dockerfile 包含所有命令的文本文件中读取指令自动构建镜像&#xff0c;以便构建给定镜像。 …...

【企业云端全栈开发实践-1】项目介绍及环境准备、Spring Boot快速上手

本节目录一、 项目内容介绍二、Maven介绍2.1 Maven作用2.2 Maven依赖2.3 本地仓库配置三、Spring Boot快速上手3.1 Spring Boot特点3.2 遇到的Bug&#xff1a;spring-boot-maven-plugin3.3 遇到的Bug2&#xff1a;找不到Getmapping四、开发环境热部署一、 项目内容介绍 本课程…...

5-HT2A靶向药物|适应症|市场销售-上市药品前景分析

据世界卫生组织称&#xff0c;抑郁症是一种多因素疾病&#xff0c;影响全球约3.5 亿人。中枢神经系统最广泛的单胺 - 血清素 (5-HT) 被认为在这种情况的病理机制中起着至关重要的作用&#xff0c;并且神经递质的重要性被“血清素假说”提升&#xff0c;将抑郁症的存在联系起来 …...

HTTPS协议原理---详解

目录 一、HTTPS 1.加密与解密 2.我们为什么要加密&#xff1f; 3.常见加密方式 ①对称加密 ②非对称加密 4.数据摘要 5.数字签名 二、HTTPS的加密方案 1.只是用对称加密​ 2.只使用非对称加密 3.双方都使用非对称加密 4.非对称加密&#xff0b;对称加密 中间人攻…...

Pytest学习笔记

Pytest学习笔记 1、介绍 1.1、单元测试 单元测试是指在软件开发当中&#xff0c;针对软件的最小单位&#xff08;函数&#xff0c;方法&#xff09;进行正确性的检查测试 1.2、单元测试框架 测试发现&#xff1a;从多个py文件里面去找到我们测试用例测试执行&#xff1a;按…...

Fuzz概述

文章目录AFL一些概念插桩与覆盖率边和块覆盖率afl自实现劫持汇编器clang内置覆盖率反馈与引导变异遗传算法fork server机制AFL调试准备AFL一些概念 插桩与覆盖率 边和块 首先&#xff0c;要明白边和块的定义 正方形的就是块&#xff0c;箭头表示边&#xff0c;边表示程序执行…...

区块链知识系列 - 系统学习EVM(四)-zkEVM

区块链知识系列 - 系统学习EVM(一) 区块链知识系列 - 系统学习EVM(二) 区块链知识系列 - 系统学习EVM(三) 今天我们来聊聊 zkEVM、EVM 兼容性 和 Rollup 是什么&#xff1f; 1. 什么是 Rollup rollup顾名思义&#xff0c;就是把一堆交易卷&#xff08;rollup&#xff09;起来…...

Leetcode.2341 数组能形成多少数对

题目链接 Leetcode.2341 数组能形成多少数对 Rating : 1185 题目描述 给你一个下标从 0 开始的整数数组 nums。在一步操作中&#xff0c;你可以执行以下步骤&#xff1a; 从 nums选出 两个 相等的 整数从 nums中移除这两个整数&#xff0c;形成一个 数对 请你在 nums上多次执…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...