【环球报资讯】kubernetes就绪探针使用
假设我们有一个应用程序,它需要一段时间来初始化并准备好接收流量。我们可以使用就绪探针来确保容器已准备好接收流量后才将其暴露给外部服务。
(相关资料图)
我们首先创建一个Deployment对象来运行应用程序。Deployment对象将自动创建一个副本集(ReplicaSet),并在其中运行指定数量的Pod。我们将使用nginx镜像作为应用程序的示例。
apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deploymentspec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx-container image: nginx ports: - containerPort: 80 readinessProbe: httpGet: path: / port: 80在上面的示例中,我们创建了一个名为nginx-deployment的Deployment对象,并指定了需要运行3个Pod副本。每个Pod都运行一个名为nginx-container的容器,该容器使用nginx镜像,并在80端口上监听流量。我们还将就绪探针配置为使用httpGet方法,向容器的/路径发送HTTP GET请求来检查容器是否已准备好接收流量。
我们可以通过kubectl命令检查Deployment的状态:
kubectl get deployment nginx-deployment输出应该类似于:
NAME READY UP-TO-DATE AVAILABLE AGEnginx-deployment 3/3 3 3 10s上面的输出显示了Deployment中有3个Pod副本,所有的副本都已准备好,可以接收流量。
接下来,我们可以创建一个Service对象来暴露Deployment中的Pod给外部服务。Service对象将使用负载均衡器将流量分配给Deployment中的Pod。
apiVersion: v1kind: Servicemetadata: name: nginx-servicespec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer在上面的示例中,我们创建了一个名为nginx-service的Service对象,它将负责将流量分配给Deployment中的Pod。我们将type属性设置为LoadBalancer,这将自动为Service对象创建一个外部负载均衡器。
我们可以通过kubectl命令检查Service对象的状态:
kubectl get service nginx-service输出应该类似于:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-service LoadBalancer 10.0.111.157 203.0.113.10 80:30549/TCP 10s上面的输出显示了Service对象的一些基本信息,包括CLUSTER-IP、EXTERNAL-IP和端口信息。
现在,我们可以使用EXTERNAL-IP和端口信息来访问我们的应用程序。但在我们开始访问应用程序之前,我们需要确保它已准备好接收流量。我们可以使用kubectl describe命令来检查Pod的状态:
kubectl describe pod 输出应该类似于:
Name: nginx-deployment-7d6ff77df6-f7m6kNamespace: defaultPriority: 0Node: minikube/192.168.99.107Start Time: Mon, 31 May 2021 16:10:53 +0300Labels: app=nginx pod-template-hash=7d6ff77df6Annotations: Status: RunningIP: 172.17.0.4IPs: Controlled By: ReplicaSet/nginx-deployment-7d6ff77df6Containers: nginx-container: Container ID: docker://3d7df1c0d93fc7e97467a35c2e82d26134b6bfbca6f9cb6d82e57e65dcb61990 Image: nginx Image ID: docker-pullable://nginx@sha256:95202e0d007bbd2edcad2b8eae1d2e6966efadfca6b7c6f9e57d71d06ef42b6f Port: 80/TCP Host Port: 0/TCP State: Running Started: Mon, 31 May 2021 16:11:05 +0300 Ready: False Restart Count: 0 Readiness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-vh2lm (ro)Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: kube-api-access-vh2lm: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: DownwardAPI: trueQoS Class: BestEffortNode-Selectors: Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 47s default-scheduler Successfully assigned default/nginx-deployment-7d6ff77df6-f7m6k to minikube Normal Pulled 45s kubelet Container image "nginx" already present on machine Normal Created 45s kubelet Created container nginx-container Normal Started 45s kubelet Started container nginx-container 输出显示了Pod中的nginx容器的状态。我们可以看到,容器的Readiness状态为False,这意味着它还没有准备好接收流量。我们还可以看到,容器的Readiness状态为False,这意味着它还没有准备好接收流量。我们还可以看到Readiness探针的详细信息,它会定期调用容器的/healthz端点以检查容器是否已准备好接收流量。
在这种情况下,我们的Readiness探针定义了一个HTTP GET请求,它将在容器的80端口上调用/healthz端点。如果该请求成功,则容器被认为是“就绪”的。
现在我们需要添加一个就绪探针来确保容器已准备好接收流量。在Kubernetes中,我们可以使用以下方式定义就绪探针:
HTTP GET探针:向容器发送一个HTTP GET请求,以检查容器是否已准备好接收流量。TCP Socket探针:尝试连接到容器的指定端口,以检查容器是否已准备好接收流量。Exec探针:在容器中执行指定的命令,并检查命令的退出状态以确定容器是否已准备好接收流量。在本例中,我们将使用HTTP GET探针。下面是一个包含就绪探针的更新后的Pod定义:
apiVersion: v1kind: Podmetadata: name: nginx labels: app: nginxspec: containers: - name: nginx image: nginx ports: - containerPort: 80 readinessProbe: httpGet: path: /healthz port: 80 initialDelaySeconds: 5 periodSeconds: 10在这个更新的Pod定义中,我们添加了一个名为readinessProbe的字段,并在其中定义了HTTP GET探针。探针将在容器的80端口上调用/healthz端点,并在初始延迟5秒后每10秒执行一次。
现在,我们使用kubectl apply命令将更新的Pod定义应用于Kubernetes集群:
kubectl apply -f pod.yaml如果我们再次运行kubectl describe pod命令,我们应该看到容器的Readiness状态已更改为True:
Name: nginxNamespace: defaultPriority: 0Node: minikube/192.168.99.107Start Time: Mon, 31 May 2021 16:10:53 +0300Labels: app=nginxAnnotations: Status: RunningIP: 172.17.0.4IPs: Controlled By: Containers: nginx: Container ID: docker://d96f8e1536c5feca2d79bfb13aebc5e47e5a6c5dd5d5b68a904a8110e32fbaec Image: nginx Image ID: docker-pullable://nginx@sha256:95202e0d007bbd2edcad2b8eae1d2e6966efadfca6bf772bd0eeb695c2d17c5b Port: 80/TCP Host Port: 0/TCP State: Running Started: Mon, 31 May 2021 16:11:04 +0300 Ready: True Restart Count: 0 Readiness: http-get http://:80/healthz delay=5s timeout=1s period=10s #success=1 #failure=3 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-x4rrz (ro)Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: default-token-x4rrz: Type: Secret (a volume populated by a Secret) SecretName: default-token-x4rrz Optional: falseQoS Class: BestEffortNode-Selectors: Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents: 现在我们可以确认容器已经准备好接收流量,Readiness探针定期调用/healthz端点以确保容器仍然是就绪的。
关键词:
下一篇:最后一页
- 知识 所谓的东东是什么意思
- 知识 山东曹县是什么梗
- 徐州荣凯为南京荣盛置业提供不超过11亿元担保
- 天房发展收上交所问询函 包含转让吉利大厦44.81%股权事项
- 合景泰富回应整售写字楼:公司正常计划,并非为筹资
- 美好置业:延期至6月28日前回复深交所问询函
- 青岛公积金新政:首套住房贷款额度最高可达80万元
- 杭州:无房职工家庭公积金贷款购房最高可贷120万元
- 我爱我家全资持股上海相寓企业集团 后者注册资本2.5亿
- 龙湖集团副总裁温介邦已离职 此前兼任工程安全管理团队负责人
-
碧桂园拟以现金要约回购今年到期的6.834亿美元票据
6月15日晚间,碧桂园发布公告称,公司计划以现金要约购买于2022年到期的尚未赎回4 75%优先票据。公告显示,上述票据在新交所上市,将于6月2
-
万科连续12个交易日回购约9.61亿元股份
6月15日,万科企业(02202 HK)发布翌日披露报表。于2022年6月15日,万科回购86 6万股A股,回购价格为17 75-17 99元,共耗资约1545 8万元。5
-
我爱我家:太和先机质押2.25亿股股份 占总股本9.55%
6月14日,我爱我家发布关于公司控股股东所持部分股份质押的公告。公告显示,为办理股票质押式回购交易进行融资,西藏太和先机投资管理有限
-
1-5月房屋新开工面积51628万平方米 下降30.6%
6月15日,国家统计局发布房地产数据显示,1-5月份,房屋新开工面积51628万平方米,下降30 6%。其中,住宅新开工面积37782万平方米,下降31
-
1-5月全国房地产开发投资52134亿元 同比下降4%
6月15日,国家统计局发布房地产数据显示,1-5月份,全国房地产开发投资52134亿元,同比下降4%。其中,住宅投资39521亿元,下降3%。
-
1-5月商品房销售面积50738万平方米 同比下降23.6%
6月15日,国家统计局发布房地产数据显示,1-5月份,商品房销售面积50738万平方米,同比下降23 6%;其中,住宅销售面积下降28 1%。商品房销售
-
1-5月房地产开发企业到位资金60404亿元 同比下降25.8%
6月15日,国家统计局发布房地产数据显示,1-5月份,房地产开发企业到位资金60404亿元,同比下降25 8%。其中,国内贷款8045亿元,下降26 0%;
-
女童不慎掉入20米深井 18岁小姨三次下井成功营救
陕西一女童不慎掉入20米深井 18岁小姨三次下井成功营救 中新网西安12月28日电 (记者 梅镱泷)记者28日从陕西消防了解到,近日,该
-
云南清水河边检站查获走私玉石和玉石毛料65公斤
中新网临沧12月28日电 (徐媛 雷珍玉)记者28日从云南清水河出入境边防检查站获悉,该站近日在清水河口岸查获一起利用货车藏匿走私玉石
-
新疆现代“织女”巧手织就幸福生活
中新社乌鲁木齐12月28日电 (苟继鹏 张尚坤)“我的爸爸、妈妈、姐姐都是纺织工人,受他们影响,2020年10月,我大学毕业后也应聘到一
X 关闭
我爱我家:太和先机质押2.25亿股股份 占总股本9.55%
1-5月房屋新开工面积51628万平方米 下降30.6%
1-5月全国房地产开发投资52134亿元 同比下降4%
1-5月商品房销售面积50738万平方米 同比下降23.6%
1-5月房地产开发企业到位资金60404亿元 同比下降25.8%
X 关闭
重庆公积金怎么转移?线下线上在哪里办理? 通讯
每日动态!2023世界义乌人大会集中签约30个重大项目,计划总投资409亿元
每堂课都“干货”满满!这些社区“小记者”开启“超广角视野”
华润置地(01109)与华网数据订立平台及营销服务框架协议
2023年4月29日广西壮族自治区籼米批发价格行情