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

成都app定制开发武汉百度快照优化排名

成都app定制开发,武汉百度快照优化排名,淘宝客网站如何让做,政府网站群建设方案1.探针 deployment pod控制器 如果创建一个pod 如果销毁了 那就是销毁了 deployment 创建可以定义几个pod 或者 怎么创建pod 按照我们要求去创建 kubernetes 提供了一个 负载均衡 更简化的 操作 service service 创建的时候需要我们指定一个东西 就是我们标签选择器…

1.探针

 

deployment pod控制器 

如果创建一个pod 如果销毁了 那就是销毁了  

deployment 创建可以定义几个pod 或者 怎么创建pod 

按照我们要求去创建

kubernetes 提供了一个 负载均衡 更简化的 操作

service 

service 创建的时候需要我们指定一个东西 就是我们标签选择器 

label 标签选择 label app=myapp

就绪探测

如果 pod 内部的 C 不添加就绪探测,默认就绪。如果添加了就绪探测, 只有就绪通过以后,才标记修改为就绪状态。当前 pod 内的所有的 C 都就绪,才标记当前 Pod 就绪

成功:将当前的 C 标记为就绪

 失败:静默

 未知:静默

或者服务没准备好,并且是下线的状态,他不采取动作,也就是他和存活探测不一样的点是,他不会杀死容器,而是单纯的控制容器加入或者退出负载均衡的这么一个机制

那这个就绪探测,可以理解为专门给服务提供上线和下线的作用,服务准备好了,他提供服务上线,服务没准备好,他提供下线,

2.怎么删除pod

kubectl delete pod [pod名]

--all 可以删除当前资源的所有pod

3.小实验

apiVersion: v1
kind: Pod
metadata:name: pod-1namespace: defaultlabels:app: myapp
spec:containers:- name: myapp-1image: wangyanglinux/myapp:v1.0
apiVersion: v1
kind: Pod
metadata:name: pod-2namespace: defaultlabels:app: myappversion: v1
spec:containers:- name: myapp-1image: wangyanglinux/myapp:v1.0
kubectl create -f 1.pod.yaml
kubectl create -f 2.pod.yaml

1.创建service

kubectl create svc myapp

这样他会有一个默认值 ,那么它默认就回去匹配 app=myapp的标签的pod 所以service的名字 建议不要乱写

所以我们执行下面的命令

kubectl create svc clusterip myapp --tcp=80:80

用户只需要访问 10.5.251.92:80端口 就可以负载均衡访问 后台两个 pod里80端口对应的两台服务器

 service 名字叫 myapp 默认匹配标签 app=myapp 的pod

负载均衡的方式下访问我们的pod

这个获取主机名其实是pod名 默认为主机名

我们再加一个pod 这个app改成 test 看看service还能负载均衡到这个主机名吗

没有办法匹配 pod-3 

4.就绪探测

1.基于httpGet方式

apiVersion: v1
kind: Pod
metadata:name: readiness-httpget-podnamespace: defaultlabels:app: myappenv: test
spec:containers:- name: readiness-httpget-containerimage: wangyanglinux/myapp:v1.0imagePullPolicy: IfNotPresentreadinessProbe:httpGet:port: 80path: /index1.htmlinitialDelaySeconds: 1periodSeconds: 3

imagePulPolicy: 镜像拉取策略 如果本地存在 就不会去远程拉取镜像 而是本地直接使用

readinessProbe: 代表就绪探测

方案 

通过 http请求的 Get 方法 访问 80端口 下的 /index1.html  注意当前镜像下是没有这个文件的 所以访问不通

initialDelaySeconds: 延迟检测时间 1秒以后的探测 

periodSeconds :每三秒一次的间隔做重复探测  比如第一次我失败了 那我三秒再测一次 直到成功

该pod虽然再running 但是 未就绪 因为就绪探针不通过 

虽然 它由 app=myapp 的标记  已经被我们service匹配了 但是

始终没有出现 就是因为 就绪探针没有通过 不会负载均衡给用户去使用未就绪的 pod 即使标签匹配在 service的子集

这就是我们就绪探针存在的意义

 想要恢复就绪 

我们进入容器去添加这么一个文件

kubectl exec -it readiness-httpget-pod  -- /bin/bash

将“” 字符串 写入 index1.html 文件中 不存在就创建出来 

 echo "jmj daociyiyou" >> index1.html

 退出当前容器 

exit
kubectl get pod

启动了

 

正常被负载均衡里面访问

 2.基于EXEC方式

apiVersion: v1
kind: Pod
metadata:name: readiness-exec-podnamespace: default
spec:containers:- name: readiness-exec-containerimage: wangyanglinux/tools:busyboximagePullPolicy: IfNotPresentcommand: ["/bin/sh","-c","touch /tmp/live ; sleep 60; rm -rf /tmp/live; sleep 3600"]readinessProbe:exec:command: ["test","-e","/tmp/live"]initialDelaySeconds: 1periodSeconds: 3

定义命令: command: 创建 /tmp/live  休眠60秒 递归删除 /tmp/live 再休眠 3600秒

readinessProbe 就绪探测

test -e 加路径 :判断路径下的文件存不存在 如果存在代表就绪通过

经过60 秒后 文件被删除 然后发送就绪探测的时候 文件就不存在了  就绪就不通过了

新版的就绪探测 是从开始 到容器死亡 都一直重复去做

kubectl create -f 5.pod.yaml
kubectl get pod -w 

代表监视看pod状态

发现60 秒后进入未就绪 是因为 我们60秒就把文件删除了 所以就绪探测检测到文件不存在了 就标记为未就绪

 3.基于TCP Check 方式

apiVersion: v1
kind: Pod
metadata:name: readiness-tcp-podnamespace: default
spec:containers:- name: readiness-tcp-containerimage: wangyanglinux/myapp:v1.0readinessProbe:initialDelaySeconds: 1periodSeconds: 3tcpSocket:port: 80

timeoutSeconds 超时时间 1秒 

tcp 检测 端口 是 80 端口

只有当前应用的 80端口 能和我 TCP 连接 成功 那么代表就绪探测成功 ,否则就是失败

不常用 因为如果把里面的进程杀死 就代表 这个容器本身就会死 所以我们不常用

5.存活探针 livenessProbe

kubectl get pod pod-1 -o yaml

 

[root@k8s-master01 6]# kubectl get pod pod-1 -o yaml
apiVersion: v1
kind: Pod
metadata:annotations:cni.projectcalico.org/containerID: 5652c8888a94c29892490e163738d9ceffe0a662b948abe3f8fee2b3bd8cb522cni.projectcalico.org/podIP: 10.244.85.200/32cni.projectcalico.org/podIPs: 10.244.85.200/32creationTimestamp: "2025-03-10T12:28:40Z"labels:app: myappname: pod-1namespace: defaultresourceVersion: "110369"uid: 0478da02-c28d-4852-882c-bdad5cad9870
spec:containers:- image: wangyanglinux/myapp:v1.0imagePullPolicy: IfNotPresentname: myapp-1resources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /var/run/secrets/kubernetes.io/serviceaccountname: kube-api-access-wf2dfreadOnly: truednsPolicy: ClusterFirstenableServiceLinks: truenodeName: k8s-node01preemptionPolicy: PreemptLowerPrioritypriority: 0restartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}serviceAccount: defaultserviceAccountName: defaultterminationGracePeriodSeconds: 30tolerations:- effect: NoExecutekey: node.kubernetes.io/not-readyoperator: ExiststolerationSeconds: 300- effect: NoExecutekey: node.kubernetes.io/unreachableoperator: ExiststolerationSeconds: 300volumes:- name: kube-api-access-wf2dfprojected:defaultMode: 420sources:- serviceAccountToken:expirationSeconds: 3607path: token- configMap:items:- key: ca.crtpath: ca.crtname: kube-root-ca.crt- downwardAPI:items:- fieldRef:apiVersion: v1fieldPath: metadata.namespacepath: namespace
status:conditions:- lastProbeTime: nulllastTransitionTime: "2025-03-11T11:14:06Z"status: "True"type: PodReadyToStartContainers- lastProbeTime: nulllastTransitionTime: "2025-03-10T12:28:40Z"status: "True"type: Initialized- lastProbeTime: nulllastTransitionTime: "2025-03-11T11:14:06Z"status: "True"type: Ready- lastProbeTime: nulllastTransitionTime: "2025-03-11T11:14:06Z"status: "True"type: ContainersReady- lastProbeTime: nulllastTransitionTime: "2025-03-10T12:28:40Z"status: "True"type: PodScheduledcontainerStatuses:- containerID: docker://2d7d387b24baf5155244a6a001afa4e45101558281a1eed832bfe5d07a04bfeaimage: wangyanglinux/myapp:v1.0imageID: docker-pullable://wangyanglinux/myapp@sha256:77d7ec4cd4c00f79304ee9e53ca3d72e0aba22fbaf7a86797528649e3fc66e41lastState:terminated:containerID: docker://85cc85a7ae1abd19ec04688fee7202616bb976e85b77d6cd2e16ed79cadaca6bexitCode: 0finishedAt: "2025-03-11T11:10:06Z"reason: CompletedstartedAt: "2025-03-10T12:28:41Z"name: myapp-1ready: truerestartCount: 1started: truestate:running:startedAt: "2025-03-11T11:14:05Z"hostIP: 192.168.72.12hostIPs:- ip: 192.168.72.12phase: RunningpodIP: 10.244.85.200podIPs:- ip: 10.244.85.200qosClass: BestEffortstartTime: "2025-03-10T12:28:40Z"

当前资源对象存储在kubernetes 集群里的具体的默认参数信息

这么多东西 我们定义的时候没写这么多啊 ,但是很多的都是默认值

重启策略 

restartPolicy:Always  只要容器死了不管是以 0的方式死亡 还是非0的方式死亡 我都会进行重建动作

 1.基于 exec 的方式

apiVersion: v1
kind: Pod
metadata:name: liveness-exec-podnamespace: default
spec:containers:- name: liveness-exec-containerimage: wangyanglinux/tools:busyboximagePullPolicy: IfNotPresentcommand: ["/bin/sh","-c","touch /tmp/live ; sleep 60; rm -rf /tmp/live;sleep 3600"]livenessProbe:exec:command: ["test","-e","/tmp/live"]initialDelaySeconds: 1periodSeconds: 3

重启了 又开始等待60秒 删除 然后又会重建

2.基于HTTP Get 方式

apiVersion: v1
kind: Pod
metadata:name: liveness-httpget-podnamespace: default
spec:containers:- name: liveness-exec-containerimage: wangyanglinux/tools:busyboximagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80livenessProbe:httpGet:path: /index.htmlport: 80initialDelaySeconds: 1periodSeconds: 3timeoutSeconds: 1

ports 对于单独一个pod 定义是毫无意义 的 因为 在这个容器 内网 80端口都是能够互相访问通的

只要我们进入容器吧 index.html 删除 如果它启动能恢复的话 说明我们的猜测是真的

把我踢掉了 

因为容器没有通过存货探测

我们重新进入容器 发现容器里面 已经没有我们之前建的.back 而是原始镜像里默认目录 ,说明它重新创建了容器

 在node02 运行

 

结构 

k8s_容器名_pod名_命名空间_MD5值_重启次数

 当容器损坏的时候 我们能利用 重启策略来达到一个 自愈的机制

3.基于TCP check方式

apiVersion: v1
kind: Pod
metadata:name: liveness-tcp-pod
spec:containers:- name: liveness-tcp-containerimage: wangyanglinux/myapp:v1.0livenessProbe:initialDelaySeconds: 5timeoutSeconds: 3tcpSocket:port: 80

一般不用

探测地址 就是 localhost  也就是本地的pod地址

存活探测保证了 pod运行 一定是能让用户访问的 除非你的存活探测设置的有问题

6.启动探针 startupProbe 

如果不定义启动探针,那存活探针和就绪探针的执行时机将不确定 ,可能导致容器还没起来 ,就检测为不存活又被杀死重建 所以启动探针很重要

 

apiVersion: v1
kind: Pod
metadata:name: startupprobe-1namespace: default
spec:containers:- name: myapp-containerimage: wangyanglinux/myapp:v1.0imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80readinessProbe:httpGet:port: 80path: /index2.htmlinitialDelaySeconds: 1periodSeconds: 3startupProbe:httpGet:path: /index1.htmlport: 80failureThreshold: 30periodSeconds: 10

 

把就绪探测的条件满足 ,但是发现还是未就绪 是因为,启动探测未成功 不会执行就绪探测

我们把启动探测满足了 

 就绪了

7.钩子

 分为启动后钩子 和关闭前钩子 

但是启动后钩子其实是在初始化之后启动之前运行的 别搞混了

并且启动钩子还有可能在启动钩子命令还没有执行完成 我们的容器启动命令就开始执行了

但是关闭前钩子 一定是关闭前钩子执行完了 才执行容器关闭信号

1.基于exec的方式

apiVersion: v1
kind: Pod
metadata:name: lifecycle-exec-pod
spec:containers:- name: lifecycle-exec-containerimage: wangyanglinux/myapp:v1lifecycle:postStart:exec:command: ["/bin/sh", "-c", "echo postStart > /usr/share/message"]preStop:exec:command: ["/bin/sh", "-c", "echo preStop > /usr/share/message"]

看到我们启动后钩子 已经把字符串写进文件里了

 

执行脚本 循环看这个文件内容  开启另一个终端来让 关闭前钩子执行

 

 将pod杀死

发现 关闭前钩子执行了

2.基于HTTPGET方式

开启一个测试webServer服务

docker run -it --rm -p 1234:80 wangyanglinux/myapp:v1.0
apiVersion: v1
kind: Pod
metadata:name: lifecycle-httpget-podlabels:name: lifecycle-httpget-pod
spec:containers:- name: lifecycle-httpget-containerimage: wangyanglinux/myapp:v1.0ports:- containerPort: 80lifecycle:postStart:httpGet:host: 192.168.72.11path: index.htmlport: 1234preStop:httpGet:host: 192.168.72.11path: hostname.htmlport: 1234

 

后置请求

 8.关于preStop的延伸话题

如果30秒没退出 那么kubernetes将会发出 -9 级别的强制杀死

 可以通过上面关键字定义我的容忍信息 也可以通过 --grace-period 定义覆盖pod 中的配置

9.终极整合实验

 

apiVersion: v1
kind: Pod
metadata:name: lifecycle-podlabels:app: lifecycle-pod
spec:containers:- name: busybox-containerimage: wangyanglinux/tools:busyboxcommand: ["/bin/sh","-c","touch /tmp/live ; sleep 600; rm -rf /tmp/live; sleep 3600"]livenessProbe:exec:command: ["test","-e","/tmp/live"]initialDelaySeconds: 1periodSeconds: 3lifecycle:postStart:httpGet:host: 192.168.72.11path: index.htmlport: 1234preStop:httpGet:host: 192.168.72.11path: hostname.htmlport: 1234- name: myapp-containerimage: wangyanglinux/myapp:v1.0livenessProbe:httpGet:port: 80path: /index.htmlinitialDelaySeconds: 1periodSeconds: 3timeoutSeconds: 3readinessProbe:httpGet:port: 80path: /index1.htmlinitialDelaySeconds: 1periodSeconds: 3initContainers:- name: init-myserviceimage: wangyanglinux/tools:busyboxcommand: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']- name: init-mydbimage: wangyanglinux/tools:busyboxcommand: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']

我们发现没有起来 是因为 初始化容器检测 没有对应的service 域名解析 所以初始化不成功

kubectl create svc clusterip myservice --tcp=80:80

创建一个 service 类型 为 clusterip --tcp=80:80 访问这个域名的80端口 会负载均衡访问这个service所揽住的 pod 的容器内部 80端口

这时候我们第一个初始化容器通过了

kubectl create svc clusterip mydb --tcp=80:80

 

pod进入初始化状态

 

存活探针给杀了 

这时候它又被重新创建了 ,但是由于由 就绪探针 没有 index1.html 所以无法变成就绪了

启动后钩子执行了 

 

但是如果是存活探针杀死的 容器他不会执行 preStop 钩子

 

http://www.dtcms.com/wzjs/500722.html

相关文章:

  • 上海做网站的的公司百度指数如何分析数据
  • wordpress用户站点金泉网做网站多少钱
  • 网站代码预览器淘宝关键词优化
  • 如何做简单视频网站杭州关键词优化平台
  • 长沙网站建设联系电话搜狗站长工具综合查询
  • 专注东莞微信网站建设免费友情链接网站
  • 最近高清免费资源苏州百度快照优化排名
  • 浙江省城乡与住房建设厅网站东莞网络推广培训
  • c2c网站功能模块设计哪家竞价托管专业
  • 南昌做网站设计技能培训班有哪些课程
  • wordpress做物流网站网站生成app工具
  • 网站建设团队拓客最有效方案
  • 个人备案可以做盈利网站吗域名注册需要什么条件
  • 哈尔滨做网站哪好广州各区风险区域最新动态
  • 政务网站建设的方向网络舆情分析报告模板
  • 宝安商城网站建设南京做网站的公司
  • 网站备案文件照片企业网站seo平台
  • 怎么做网站建设作业搜索引擎营销的特点包括
  • vs如何做网站茂名网站建设制作
  • 郑州做企业网站哪家好软文优化
  • 淮安做网站杨凯seo技术外包公司
  • 建网站平台安全性长春做网络优化的公司
  • 微信营销 网站建设微信公众号推广
  • 贵阳优化网站建设百度搜索热词查询
  • 做网站花钱么天猫店铺申请条件及费用
  • 怎么做租房网站正规的微信推广平台
  • wordpress禁用保存草稿北京seo相关
  • wordpress 用户反馈揭阳百度seo公司
  • 怎么看网站是不是h5做的百度贴吧官网app下载
  • 专业的培训网站建设市场营销策略