您现在的位置是:主页 > news > 党政机关如何建设网站/西安百度竞价开户

党政机关如何建设网站/西安百度竞价开户

admin2025/5/4 17:38:34news

简介党政机关如何建设网站,西安百度竞价开户,中国人做英文网站,西安网页设计pod生命周期/控制器1. pod 生命周期init容器探针2. 控制器Replication Controller和ReplicaSetDeploymentDaemonSetStatefulSetJob与CronJobHPA1. pod 生命周期 init容器 案例:当init容器所监控的service未被配置时,主容器与init容器均无法正常启动 ap…

党政机关如何建设网站,西安百度竞价开户,中国人做英文网站,西安网页设计pod生命周期/控制器1. pod 生命周期init容器探针2. 控制器Replication Controller和ReplicaSetDeploymentDaemonSetStatefulSetJob与CronJobHPA1. pod 生命周期 init容器 案例:当init容器所监控的service未被配置时,主容器与init容器均无法正常启动 ap…

pod生命周期/控制器

  • 1. pod 生命周期
    • init容器
    • 探针
  • 2. 控制器
    • Replication Controller和ReplicaSet
    • Deployment
    • DaemonSet
    • StatefulSet
    • Job与CronJob
    • HPA

1. pod 生命周期

在这里插入图片描述

在这里插入图片描述

init容器

在这里插入图片描述案例:当init容器所监控的service未被配置时,主容器与init容器均无法正常启动

apiVersion: v1
kind: Pod
metadata:name: myapp-podlabels:app: myapp
spec:containers:- name: myapp-containerimage: busyboxpluscommand: ['sh', '-c', 'echo The app is running! && sleep 3600']initContainers:- name: init-myserviceimage: busyboxpluscommand: ['sh', '-c', "until nslookup myservice.default.svc.cluster.local; do echo waiting for myservice; sleep 2; done"]- name: init-mydbimage: busyboxpluscommand: ['sh', '-c', "until nslookup mydb.default.svc.cluster.local; do echo waiting for mydb; sleep 2; done"]#---
#apiVersion: v1
#kind: Service
#metadata:
#  name: myservice
#spec:
#  ports:
#  - protocol: TCP
#    port: 80
#    targetPort: 9376
#---
#apiVersion: v1
#kind: Service
#metadata:
#  name: mydb
#spec:
#  ports:
#  - protocol: TCP
#    port: 80
#    targetPort: 9377

在这里插入图片描述删除pod,取消注释,重新开启之后容器正常运行

在这里插入图片描述

探针

探针 是由 kubelet 对容器执行的定期诊断:

  • ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。
  • TCPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。
  • HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。

每次探测都将获得以下三种结果之一:

成功:容器通过了诊断。
失败:容器未通过诊断。
未知:诊断失败,因此不会采取任何行动。

Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应:

  • livenessProbe:指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其 重启策略 的影响。如果容器不提供存活探针,则默认状态为 Success。

  • readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状态为 Success。

  • startupProbe: 指示容器中的应用是否已经启动。如果提供了启动探测(startup probe),则禁用所有其他探测,直到它成功为止。如果启动探测失败,kubelet 将杀死容器,容器服从其重启策略进行重启。如果容器没有提供启动探测,则默认状态为成功Success

重启策略

PodSpec 中有一个 restartPolicy 字段,可能的值为 Always、OnFailure 和 Never。默认为 Always。

案例,探针检测容器端口以及发布文件,不符合条件时,无法启动容器。

apiVersion: v1
kind: Pod
metadata:name: pod-ex2labels:app: myapp
spec:containers:- name: myappimage: myapp:v1imagePullPolicy: IfNotPresentlivenessProbe:tcpSocket: #监控80端口port: 80 initialDelaySeconds: 1periodSeconds: 3timeoutSeconds: 1readinessProbe:httpGet: #监控发布文件path: /test.html port: 80initialDelaySeconds: 1periodSeconds: 3timeoutSeconds: 1

未存在test.html时,构建pod,不能成功运行pod

在这里插入图片描述在这里插入图片描述
在这里插入图片描述添加需要的文件

kubectl exec pod-ex2  sh -i -t
/ # echo westos> /usr/share/nginx/html/test.html

在这里插入图片描述pod成功进入ready状态

在这里插入图片描述

2. 控制器

Replication Controller和ReplicaSet

官方推荐使用ReplicaSetReplicaSet 支持新的基于集合的选择器需求。ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。
虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、删除和更新的机制。

编写配置文件检验副本建立扩容功能,使用此控制器无法升级或者回滚版本

apiVersion: apps/v1
kind: ReplicaSet
metadata:name: replicaset-example
spec:replicas: 6#12selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v1

副本数目为6时:
在这里插入图片描述修改为12时:
在这里插入图片描述

Deployment

用来创建Pod和ReplicaSet,滚动更新和回滚,扩容和缩容
,暂停与恢复。

vim deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deploymentlabels:app: myapp
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v1 #指定镜像为v1

运行部署,查看容器状态
在这里插入图片描述将镜像改为v2,重新构建pod

        image: myapp:v2 #指定镜像为v2

在这里插入图片描述deployment将会重新建立一个rs控制器用于建立v2的副本,v1的rs不会被丢弃,用于回滚时启用。
在这里插入图片描述在这里插入图片描述

DaemonSet

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。通常在每个节点上运行集群存储 DaemonSet,日志收集 DaemonSet,运行监控 DaemonSet。

apiVersion: apps/v1
kind: DaemonSet
metadata:name: daemonset-examplelabels:k8s-app: zabbix-agent
spec:selector:matchLabels:name: zabbix-agenttemplate:metadata:labels:name: zabbix-agentspec:containers:- name: zabbix-agentimage: zabbix/zabbix-agent

StatefulSet

StatefulSet 是用来管理有状态应用的工作负载 API 对象。实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证

Job与CronJob

Job用于执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束。

Cron Job 创建基于时间调度的 Jobs。一个 CronJob 对象就像 crontab (cron table) 文件中的一行,它用 Cron 格式进行编写,并周期性地在给定的调度时间执行 Job。

#job
$ vim job-example.yaml
apiVersion: batch/v1
kind: Job
metadata:name: pi
spec:template:spec:containers:- name: piimage: perlcommand: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]restartPolicy: NeverbackoffLimit: 4
$ kubectl apply -f job-example.yaml
$ kubectl get pod
NAME       READY   STATUS      RESTARTS   AGE
pi-6phk8   0/1     Completed   0          2m22s
$ kubectl logs pi-6phk8
$ kubectl delete job pi
#cornjob
apiVersion: batch/v1beta1
kind: CronJob
metadata:name: cronjob-example
spec:schedule: "* * * * *"jobTemplate:spec:template:spec:containers:- name: cronjobimage: busyboxargs:- /bin/sh- -c- date; echo Hello from k8s clusterrestartPolicy: OnFailure

HPA

根据资源利用率自动调整service中Pod数量,实现Pod水平自动缩放。