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

杭州兼职网站建设网页设计素材图片免费

杭州兼职网站建设,网页设计素材图片免费,广州网站排名推广公司,呼伦贝尔网站建设Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending#xff1a;挂起#xff0c;apiserver创建了pod资… Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending挂起apiserver创建了pod资源对象已存入etcd中但它尚未被调度完成或者仍处于从仓库下载镜像的过程中running运行中pod已经被调度到某节点并且所有容器都已经被kubelet创建完成complet成功pod中所有容器都已经成功终止并且不会重启failed失败pod中所有容器都已经终止了并且至少有一个容器是因为失败终止的即容器以非0状态退出或者被系统禁止unknown未知apiserver无法正常获取到pod对象的状态信息通常是由于无法与所在工作节点的kubelet通信所致 初始化容器 k8s的初始化容器initContainer优先级都是高于主容器container的。无论容器写在初始化容器前还是写在初始化容器后会最先执行的都是初始化容器。只有初始化容器执行成功后才可以启动主容器。初始化容器的应用场景应该是多pod。比如mysql和业务分开两个pod。此时业务pod添加初始化容器初始化容器执行telnet检查mysql是否启动了。若mysql启动则业务pod启动否则业务pod等待mysql启动。 初始化容器是在pod主容器启动之前要运行的容器主要是做一些主容器的前置工作它具有两大特征 初始化容器必须运行完成直至结束若某初始化容器运行失败那么kubernetes需要重启它直到成功完成初始化容器必须按照定义的顺序执行当且仅当前一个成功之后后面的一个才能运行 案例 apiVersion: v1 kind: Pod metadata:name: pod-initcontainernamespace: bubble-dev spec:containers:- name: main-containerimage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80initContainers:- name: mysqlimage: busybox:1.30 command: [ /bin/sh,-c,sleep 40;] - name: redisimage: busybox:1.30busybox:1.30启动成功之后会立即停止通过使用command命令40S之后这个容器才会停止 启动主容器main-container必须等待初始化容器mysql和redis启动并运行成功之后才可以启动 vi pod-initcontainer.yaml cat pod-initcontainer.yaml kubectl create ns bubble-dev kubectl create -f pod-initcontainer.yaml[rootmaster ~]# kubectl describe pods -n bubble-dev Name: pod-initcontainer Namespace: bubble-dev Priority: 0 Node: node1/192.168.102.160 Start Time: Thu, 12 Jan 2023 10:44:14 -0500 Labels: none Annotations: none Status: Running IP: 172.17.0.2 IPs:IP: 172.17.0.2 Init Containers:mysql:Container ID: docker://6c41381ade3cb74d93b4b449920a89ce1b534860da4a3803d886389b7873f5c4Image: busybox:1.30Image ID: docker-pullable://busyboxsha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3dPort: noneHost Port: noneCommand:/bin/sh-csleep 40;State: TerminatedReason: CompletedExit Code: 0Started: Thu, 12 Jan 2023 10:44:16 -0500Finished: Thu, 12 Jan 2023 10:44:56 -0500Ready: TrueRestart Count: 0Environment: noneMounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-9bq4c (ro)redis:Container ID: docker://8a504efac19030ab4a266599795e7ad1368f351f48eae8eb45101100aec0dec1Image: busybox:1.30Image ID: docker-pullable://busyboxsha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3dPort: noneHost Port: noneState: TerminatedReason: CompletedExit Code: 0Started: Thu, 12 Jan 2023 10:44:57 -0500Finished: Thu, 12 Jan 2023 10:44:57 -0500Ready: TrueRestart Count: 0Environment: noneMounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-9bq4c (ro) Containers:main-container:Container ID: docker://920298ed4e9f76c825249290078a9a408476df66175e6fc8b9dcdaf25346f324Image: nginx:1.17.9Image ID: docker-pullable://nginxsha256:88ea86df324b03b3205cbf4ca0d999143656d0a3394675630e55e49044d38b50Port: 80/TCPHost Port: 0/TCPState: RunningStarted: Thu, 12 Jan 2023 10:44:58 -0500Ready: TrueRestart Count: 0Environment: noneMounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-9bq4c (ro) Conditions:Type StatusInitialized True Ready True ContainersReady True PodScheduled True Volumes:default-token-9bq4c:Type: Secret (a volume populated by a Secret)SecretName: default-token-9bq4cOptional: false QoS Class: BestEffort Node-Selectors: none Tolerations: node.kubernetes.io/not-ready:NoExecute for 300snode.kubernetes.io/unreachable:NoExecute for 300s Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 4m47s default-scheduler Successfully assigned bubble-dev/pod-initcontainer to node1Normal Pulled 4m46s kubelet, node1 Container image busybox:1.30 already present on machineNormal Created 4m46s kubelet, node1 Created container mysqlNormal Started 4m45s kubelet, node1 Started container mysqlNormal Pulled 4m4s kubelet, node1 Container image busybox:1.30 already present on machineNormal Created 4m4s kubelet, node1 Created container redisNormal Started 4m4s kubelet, node1 Started container redisNormal Pulled 4m3s kubelet, node1 Container image nginx:1.17.9 already present on machineNormal Created 4m3s kubelet, node1 Created container main-containerNormal Started 4m3s kubelet, node1 Started container main-container我们可以分析出Pod中首先启动并运行的是mysql容器mysql容器运行成功后redis容器开始启动并运行完成运行后主容器才开始启动。 钩子函数 k8s在主容器启动之后和停止之前提供了两个钩子函数 post-start容器创建之后执行(相关命令)如果失败了则会自动重启容器容器创建后立即执行注意由于是异步执行它无法保证一定在ENTRYPOINT之前运行。如果失败容器会被杀死并根据RestartPolicy决定是否重启pre-stop容器终止之前执行(相关命令) 例如杀死进程等容器终止前执行常用于资源清理。执行完成之后容器将成功终止如果失败容器同样也会被杀死。在其完成之前会阻塞删除容器的操作 钩子的回调函数支持三种方式Exec命令、TCPSocket、HTTPGet Exec命令 spec:containers:- name: main-containerimage: nginx:1.17.1lifecycle:postStart:exec: # 容器创建之后执行(相关命令)修改nginx页面command: [/bin/sh,-c,echo honey /usr/share/nginx/html/index.html]preStop:exec: # 容器停止之后执行停止nginx服务command: [/usr/sbin/nginx,-s,quit ]TCPSocket spec:containers:- name: main-containerimage: nginx:1.17.1lifecycle:postStart:tcpSocket:port: 8080HTTPGet spec:containers:- name: main-containerimage: nginx:1.17.1lifecycle:postStart:httpGet:path: /init # URI地址port: 80 # 端口号host: 192.168.110.1 # 主机地址scheme: HTTP # 支持的协议http或https案例 apiVersion: v1 kind: Pod metadata:name: pod-hooknamespace: bubble-dev spec:containers:- name: main-containerimage: nginx:1.17.9lifecycle:postStart:exec: # 容器创建之后执行(相关命令)修改nginx页面command: [/bin/sh,-c,echo honey /usr/share/nginx/html/index.html]preStop:exec: # 容器停止之后执行停止nginx服务command: [/usr/sbin/nginx,-s,quit ]容器探测 k8s提供了livenessProbe(可用性探针)和readinessProbe(就绪性探针)对容器的健康性进行检测类似心跳机制。 判断我们的应用实例是否存活如果为宕机状态则自动重启同时如果发现该pod无法接受请求则service不会转发到该pod上执行。 存活探针(可用性探针)用于检测容器实例当前是否处于正常运行的状态如果不是正常运行的状态k8s则会重启容器就绪探针(就绪性探针)用于检测应用实例当前是否可以接收请求如果不能接收请求k8s不会将请求转发到该实例 其实非常好理解livenessProbe 判断容器是否重启、readinessProbe 判断是否路由转发 支持三种探测方式 Exec命令在容器内执行一次命令如果命令执行的退出码为0则认为程序正常否则不正常TCPSocket会尝试访问一个用户指定的容器端口如果能够成功建立连接则认为正常否则认为不正常HTTPGet调用容器内Web系统的url如果http状态码是在200和399之间则认为程序正常否则不正常 Exec命令 apiVersion: v1 kind: Pod metadata:name: pod-execnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80livenessProbe: # 存活探针(可用性探针)exec: # 执行一个查看文件的命令command: [/bin/cat ,/tmp/honey.txt] 我们可以看到由于没有/tmp/honey.txt这个文件执行的查看命令是失败的所以容器一直在进行重新启动操作 如果将命令修改成pwd则不会有问题 apiVersion: v1 kind: Pod metadata:name: pod-execnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80livenessProbe: # 存活探针(可用性探针)exec: # 执行一个pwd的命令command: [/bin/pwd ,/] TCPSocket apiVersion: v1 kind: Pod metadata:name: pod-tcpnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80livenessProbe: # 存活探针(可用性探针)tcpSocket: # 底层会尝试访问容器ip:8080port: 8080将端口号修改成80则不会有问题 apiVersion: v1 kind: Pod metadata:name: pod-tcpnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80livenessProbe: # 存活探针(可用性探针)tcpSocket: # 底层会尝试访问容器ip:80port: 80HTTPGet apiVersion: v1 kind: Pod metadata:name: pod-httpnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80protocol: TCPlivenessProbe:httpGet: # 访问指定的scheme://host:port/pathscheme: HTTP # 支持的协议http或者httpsport: 80 # 端口号path: /honey # URI地址 该地址不存在会报错404将URI地址修改成 / 则不会有问题 apiVersion: v1 kind: Pod metadata:name: pod-httpnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80protocol: TCPlivenessProbe:httpGet: # 访问指定的scheme://host:port/pathscheme: HTTP # 支持的协议http或者httpsport: 80 # 端口号path: / # URI地址探测时间 容器探测的原理本身就是心跳策略 initialDelaySeconds integer # 容器启动后 等待多少秒 开始执行第一次探测 timeoutSeconds integer # 探测超时时间 默认1秒最小1秒 periodSeconds integer # 执行探测的频率默认是10秒最小1秒 failureThreshold integer # 连续探测失败多少次才被认定为失败默认是3最小值是1 successThreshold integer # 连续探测成功多少次才被认定为成功默认是1apiVersion: v1 kind: Pod metadata:name: pod-secondsnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80protocol: TCPlivenessProbe:httpGet: # 访问指定的scheme://host:port/pathscheme: HTTP # 支持的协议http或者httpsport: 80 # 端口号path: /honey # URI地址 该地址不存在会报错404initialDelaySeconds: 10 # 容器启动后10s开始探测 failureThreshold: 2 # 探测2次认为是失败restartPolicy: Never # 设置重启策略为Never 无论状态如何都不会重启重启策略 重启策略有三种 Always出现问题时自动重启该容器默认方式OnFailure容器终止运行且退出码不为0时重启Never不论状态为何都不重启该容器 apiVersion: v1 kind: Pod metadata:name: pod-restartnamespace: bubble-dev spec:containers:- name: nginximage: nginx:1.17.9ports:- name: nginx-portcontainerPort: 80protocol: TCPlivenessProbe:httpGet: # 访问指定的scheme://host:port/pathscheme: HTTP # 支持的协议http或者httpsport: 80 # 端口号path: /honey # URI地址 该地址不存在会报错404restartPolicy: Never # 设置重启策略为Never 无论状态如何都不会重启
http://www.dnsts.com.cn/news/47429.html

相关文章:

  • 微网站如何制作wordpress添加新页面跳转
  • 购物网站建设过程网址导航app大全
  • 社区门户网站建设招标公告用dw6做网站
  • 国内几个做外贸的网站重庆网页设计公司排名
  • 手机网站如何建站织梦免费网站模块
  • 我做的网站怎么打开很慢php企业中英文网站源码
  • 吉林省建设招标网站网站建设流程有哪些
  • 企业网站建设常见问题wordpress嵌入翻译
  • 招标网站开发深圳企业网站建设收费标准
  • 无锡网站建设推荐wordpress 只在首页显示
  • 中仑建设网站98证书兼职网
  • 单片机做网站菏泽网站建设费用
  • 做网站广告送报纸广告大冶网站开发
  • 网站备案域名需要解析到备案服务器吗邢台企业网站建设公司
  • 服务器上如何做网站seo发外链的网站
  • 网站的规划与建设案例分析国外优秀的字体设计网站
  • 软件专业做学校网站论文怎么选题wordpress手动更新
  • wordpress添加分类苏州搜狗关键词优化
  • discuz可以做门户网站么企业app定制开发公司
  • 网站设计论文3000字申请做网站_论坛版主
  • 网站建设明细表莱西网站建设
  • 网站规划与栏目结构诊断青岛网络优化哪家专业
  • 怎样做自己的小说网站安装wordpress主题失败
  • 网站服务器的工作原理川畅联系 做网站多少钱
  • 建德网站建筑装饰装修工程公司
  • 办公室装修设计简约优化seo方案
  • c 微信网站开发中国舆情网
  • 网站建设反馈书模板海宁网站设计
  • 协助别人做网站犯法么126企业邮箱注册申请
  • 亚马逊做qa的网站现在用什么工具做网站好