kubernetes就绪探针使用-每日速看
2023-05-01 13:44:38 来源:腾讯云
假设我们有一个应用程序,它需要一段时间来初始化并准备好接收流量。我们可以使用就绪探针来确保容器已准备好接收流量后才将其暴露给外部服务。
我们首先创建一个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端点以确保容器仍然是就绪的。
关键词:
为你推荐
kubernetes就绪探针使用-每日速看
奋斗的背影 平凡而伟大 全球热消息
今日最新!国铁南宁局今日预计发送旅客48万人次
免费坐地铁!浙江宁波拉动假日经济有妙招
五一档首日票房2.95亿 全球微头条
世界今日报丨宁德时代又出王炸,发布新款凝聚态电池,成功突破动力电池天花板
电脑桌面东西怎么卸载_电脑桌面东西都没了_天天微资讯
世界观热点:世纪华通一季报:第一季度单季净利润同比增107.53%
消火栓型号规格snw65-1(消火栓型号规格) 环球快看
疯狂猜成语_亚猜一成语
2023年五一档总票房破7亿
世界快播:广州海珠公安:广州塔景区已启动临时交通管制,其他社会车辆请注意绕行
武铁信号工获全国五一劳动奖章:手握8项国家专利,被称为“民间发明家” 速递
乌将领:乌在战败后将成最强大国家事件简单介绍
全国公路水路今日预计发送旅客3250万人次
文明旅游在行动 | 垃圾不落地 景美人更美
每日热门:沿着齐长城游山东|惊险刺激的高空玻璃栈道 你敢挑战吗
天天要闻:采用最新家族风格,中期改款标致2008实车图曝光
“最火”五一_挤爆的不只是淄博 全球热点评
天天讯息:2023款丰田RAV4荣放上市,共推出14款配置,是你的菜吗?
推荐内容
- kubernetes就绪探针使用-每日速看
- 奋斗的背影 平凡而伟大 全球热消息
- 今日最新!国铁南宁局今日预计发送旅客48万人次
- 免费坐地铁!浙江宁波拉动假日经济有妙招
- 五一档首日票房2.95亿 全球微头条
- 世界今日报丨宁德时代又出王炸,发布新款凝聚态电
- 电脑桌面东西怎么卸载_电脑桌面东西都没了_天天微
- 世界观热点:世纪华通一季报:第一季度单季净利润
- 消火栓型号规格snw65-1(消火栓型号规格) 环球快看
- 疯狂猜成语_亚猜一成语
- 2023年五一档总票房破7亿
- 世界快播:广州海珠公安:广州塔景区已启动临时交
- 武铁信号工获全国五一劳动奖章:手握8项国家专利
- 乌将领:乌在战败后将成最强大国家事件简单介绍
- 全国公路水路今日预计发送旅客3250万人次
- 文明旅游在行动 | 垃圾不落地 景美人更美
- 每日热门:沿着齐长城游山东|惊险刺激的高空玻璃
- 天天要闻:采用最新家族风格,中期改款标致2008实
- “最火”五一_挤爆的不只是淄博 全球热点评
- 天天讯息:2023款丰田RAV4荣放上市,共推出14款配
- 环球港五五折团购券、徐家汇最高1000元消费券、珠
- 我的世界隐藏基地建筑教程(我的世界隐藏基地)
- 观焦点:初具规模!这个“国之重器”建成后将产生
- 世界观点:什么是更年期多大年龄_什么是更年期
- 精选!cs1 5在对战平台怎么联网_cs1 6多特
- 世界简讯:女性左腹部隐隐作痛是什么原因_左腹部隐
- 东床是什么意思_东床
- 天天头条:警方悬赏20万通缉安徽淮南李孔利_资料
- 世界看点:方寸西藏-魏克集邮珍品选_关于方寸西藏
- 环球关注:C视频|世界体育舞蹈节官宣回归 点
- 「海通策略」盈利拐点渐现——22年及23Q1财报点评
- 1年挽回损失6300多万元!漯河两级法院全力保护企
- 天天热消息:“五一”小长假首日全国铁路预计发送
- 长三角一体化示范区“五五购物节”启动 展现绿色
- 联美控股:各业务板块发展向好 基本面持续稳健
- 天天观速讯丨北京警方发布“五一”期间大型活动安
- 世界观速讯丨今日广州白云职业技术学院招生电话(
- 人民车评:汽车行业新时代是自主品牌的新起点
- 五洲新春(603667)2022年报及23Q1季报点评:公司业
- 天天看点:文化过线专业排名的院校 艺术生文化分
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
中新网通辽10月18日电 (记者 张林虎)18日,记者从内蒙古自治区通辽市奈曼旗公安局获悉,国家一级保护动物--梅花鹿误入当地村民羊群,
-
中新网杭州10月18日电 (王题题 胡燕婕)云天收夏色,浅秋正渐浓。10月18日,浙江杭州市西湖游船有限公司推出的惠民多站点“西湖环湖游
-
中新网福州10月18日电 (记者 龙敏 王东明)福州市晋安区官方18日晚间通报,18日14时47分,晋安区岳峰镇化工路爱摩轮商业广场项目摩天
-
中新网兰州10月18日电 (闫姣 艾庆龙 吉翔)“红山白土头,黄河向西流。”不少人疑问,天下黄河向东流,为何甘肃永靖县这段黄河却向西
-
中新网北京10月18日电 《清华城市健康设施指数》18日在北京发布。报告成果显示,城市健康设施指数领先城市以中心城市和东部沿海城市