您现在的位置: 首页 环境保护 > > 正文
kubernetes就绪探针使用-世界速看料
发布时间:2023-05-01 14:32:01 来源:腾讯云

假设我们有一个应用程序,它需要一段时间来初始化并准备好接收流量。我们可以使用就绪探针来确保容器已准备好接收流量后才将其暴露给外部服务。

我们首先创建一个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端点以确保容器仍然是就绪的。

标签:

2023年第三届南航创新挑战赛全面开启,腾讯联袂生态助推科技攻关并参与联合主办

2023年4月25日,以创新驱动发展,携手共创未来为主题的第三届南航创新挑战赛报名工作全面启动,本届挑战...

深圳“双创”综合指数连续6年排名第一 创业密度稳居全国第一

双创由众而积厚成势,因创而破茧成蝶。今年5月,在深圳发布的《大众创业、万众创新研究报告(2021)》显示...

一线工作近22年的缉毒警:我知道坏的是毒品不是人性

  “影子”般的缉毒警:一线工作22年,我知道坏的是毒品不是人性  如果我不继续干,别人也要干,缉...

广东肇庆“毒驾连撞5车致1死”肇事司机被批捕

  1月5日14时30分许,广东肇庆市端州区一男子赵某毒驾连撞5车,致一人死亡。  1月10日,澎湃新闻(ww...

江西最大文物倒卖案宣判:倒卖国家二级文物 9人获刑

  中新网南昌1月10日电 (冷峥嵘 张一怡)江西省共青城市人民法院10日发布消息称,近日,该院依法审结...

青海保障门源地震后生活必需品应急物资

  中新网西宁1月10日电 (记者 孙睿)记者10日从青海省商务厅获悉,青海海北州门源县6 9级地震灾害发...

广西东兴口岸恢复通关 入境需网上预约

  中新社防城港1月10日电 (翟李强)自2022年1月10日零时起,广西东兴口岸和边民互市贸易区恢复人员、...

呼和浩特:寒假期间有条件的学校要开展校内托管服务

  中新网呼和浩特1月10日电 (记者 张林虎)10日,记者从呼和浩特市教育局获悉,在暑假校内托管试点的...

“中国最后一个原始部落”翁丁老寨火灾原因公布

  “中国最后一个原始部落”翁丁老寨火灾原因公布:小孩玩火引起  中新网昆明1月10日电 (罗婕)近日...

北京市十五届人大五次会议胜利闭幕

  北京市十五届人大五次会议胜利闭幕   蔡奇陈吉宁李伟魏小东张延昆出席   张延昆齐静当选市人...

天津市委市政府致全市父老乡亲的慰问信:我们一定能够打赢

  中新网天津1月10日电 (记者 张道正)中共天津市委、天津市人民政府10日发布了“致全市父老乡亲的慰...

天津米面油存量由20天提高至30天 超市菜市场进货量翻倍

  天津米面油存量由20天提高至30天 蔬菜库存量、超市菜市场进货量翻倍  记者10日从天津市商务局获...

兰州名师话“美育”:“尚乐立人”分层培优 以“美”润教

  中新网兰州1月10日电 (记者 刘玉桃 高莹)“实际上音乐课作为一门非高考科目,一直以来没有受到足...

子夜直击,天津寒天战“疫”

  新华全媒+|子夜直击,天津寒天战“疫”  新华社天津1月10日电 题:子夜直击,天津寒天战“疫”...

重庆姐弟被生父扔下坠亡案上诉期结束 一审法院暂未收到两被告人上诉状

  重庆姐弟被生父扔下坠亡案上诉期结束,一审法院暂未收到两被告人上诉状  澎湃新闻记者 谢寅宗 ...

天津:划定封控区 全市开展全员核酸检测

  央视网消息:在各地的最新疫情中,奥密克戎变异株引发天津新增多例本土感染引人关注。截至1月9日下...

江歌母亲江秋莲:尊重法院判决,法律认定在我意料之中

  中新网青岛1月10日电 (记者 胡耀杰)山东省青岛市城阳区人民法院10日对原告江秋莲与被告刘暖曦生命...

中国边疆“北方第一所”:9名民警守护“生命禁区”

  中新网呼伦贝尔1月10日电 题:中国边疆“北方第一所”:9名民警守护“生命禁区”  作者 张玮 ...

辟谣!网传“封控区管控区相继解封”通知并非西安

  中新网1月10日电 据西安发布官方微博消息,1月9日,一则:“鉴于我市目前封控区、管控区相继解封,...

河南安阳9日12时至24时新增11例本土确诊病例

  1月9日12时至24时,河南安阳市新增本土确诊病例11例(汤阴县10例、文峰区1例)。  2020年1月22日至2...

老人5折环卫工8折生活困难免费 这家面馆背后有个暖心事

  老人5折,环卫工人8折,生活困难可以免费吃   这家面馆打折背后,有个暖心故事  见习记者 许...

铁路公安以110幅优秀书画作品庆祝人民警察节

  中新网北京1月10日电 (郭超凯 梁西征)1月10日是中国人民警察节。记者从公安部铁路公安局获悉,近...

本周中东部冷空气频繁 东北等地有降雪

  中国天气网讯 本周我国中东部地区冷空气活动频繁,其中,今天(1月10日)受冷暖空气共同影响,雨雪范...

河南新增本土确诊病例60例

  中新网1月10日电 据河南省卫健委网站消息,1月9日0—24时,全省新增本土确诊病例60例(郑州市24例,...

“打拐”民警眼里的百态人生:见证一份份不愿放弃的爱

  打拐者说   一位“打拐”民警眼里的百态人生  本报记者毛鑫、王瑞平   在公安系统里,“打拐...

迎腊八北京晴天上线 阵风6至7级体感冻人

多省份倡议春节“非必要不离开”,这地补贴1000元

伪造国家机关证件典型案例发布 有力打击制假贩假行为

15年照顾170多个新生儿 金牌月嫂“漂”到海外去看娃

江歌母亲江秋莲诉刘鑫案一审将于今日宣判

河南省安阳市两地划为高风险地区 一地划为中风险地区

员工迟到一次罚一千引争议 单位惩戒员工法律边界何在?

以体育人 秀出“青年范儿”

保安、厨师曾被竞业限制 企业滥用竞业限制让员工很苦恼

反诈老陈破圈:人民群众在哪 就把反诈宣传开展到哪

一所中职学校的育人实践

各地严惩恶意欠薪 保障农民工及时拿到工资

中学生成剧本杀行业潜在消费人群 多方助推行业“净化”

“这就是我最好的选择”

对餐饮浪费说“不”(百姓关注)

校园“直通车” 服务“零距离”

琉璃河遗址 两段铭文共证北京三千年建城史

千元修复个人征信报告?银行:“征信修复”都是骗局

琉璃河遗址 两段铭文共证北京三千年建城史

北京公交将开展无人驾驶道路测试

河南郑州调整五地为中风险区域 公路入郑需核酸检测阴性证明

“共享法庭”让金融消费者畅享“智慧司法”便利

《传奇2》网游著作权纠纷案峰回路转 最高法五份裁决四份改判一份发回重审

三代警察:从未放弃的28年

“胡叔叔”的寻亲工作室

天津津南本轮本土疫情第3—20例阳性感染者活动轨迹公布

“团圆”行动刑侦专家吕游 每一个案例都有单独的技术方案

河南“战疫”直面五重考验

开考古书店日均两三个顾客 流量时代她决心仍是只卖书

冬奥开幕在即 “双减”催热冰雪课堂

“不得以任何借口拒收患者”彰显生命至上

天津多站进京车票暂停发售

冷空气来袭广州气温骤降 广东多地发布寒冷预警

“电话发我”——“霸气回应”疫情求助背后的城市温度

天津津南区再增20例阳性感染者,详情公布

电影《农民院士》昆明首映 为观众呈现“把论文写在大地上”

南宁铁路警方春运期间将免费提供被拐儿童父母DNA检测服务

天津津南调整区域风险等级:1个高风险6个中风险!

天津全面加强离津管理 实施离津审批报备制度

口述|“郑州人张嘴做核酸采样的样子,熟练得让人心疼”

青海门源地震“震出”潜逃8年犯罪嫌疑人

天津出现感染奥密克戎本土病例 河南禹州全域为中高风险地区

河南郑州:10日在9个城区开展全员核酸检测

天津市津南区一地调整为高风险地区 多地调整为中风险地区

天津全面加强离津管理:广大市民群众非必要不离津

西安南小张村战“疫”记

河南通过“南水北调饮用水水源保护条例”

河南许昌累计报告143例确诊病例 呼吁16万在外务工者就地过年

重庆颁发中国统一公路养护资质管理后首批证照

“双向奔赴”!河南大学生志愿者为社区抗疫贡献力量

x 广告
x 广告

Copyright ©  2015-2022 人人自然网版权所有  备案号:粤ICP备18023326号-36   联系邮箱:8557298@qq.com