假设我们有一个应用程序,它需要一段时间来初始化并准备好接收流量。我们可以使用就绪探针来确保容器已准备好接收流量后才将其暴露给外部服务。
(相关资料图)
我们首先创建一个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就绪探针使用假设我们有一个应用程序,它需要一段时间来初始化并准备好接收流量。我们可以使用就绪探针来确保容器已准备
-
中山大学新华学院地址广州校区 中山大学新华学院地址 全球热门1、校本部:(广州校区)广州市天河区龙洞广汕一路721号;邮政编码:510520(东莞校区)广
-
世界观点:“五一”前三天全国铁路、公路、水路、民航预计发送旅客总量约1.6亿人次4月29日至5月1日,全国铁路、公路、水路、民航预计发送旅客总量15932 4万人次,比2022年同期增长161 9%。
-
麋鹿苑在哪_麋鹿苑 今日播报1、麋鹿是一种典型的湿地动物,俗称四不象,是中国的特产动物,古时称麋,仅产于我国东北部。2、1985年建成的麋
-
省劳动模范刘文凭:千琢万磨 淬火蜕变 “炼”就灿烂“钢花”|环球头条齐鲁网·闪电新闻5月1日讯“我们正在实施的这项技术是国内首创,也是世界首例!”在谈起自己参与的《基于LI
-
【电台道】当地铁“遇上”城墙!天津要建时光“穿越车站”?天津北方网讯:近日,一座在建地铁站引起关注天津地铁集团将在地铁4号线的东南角车站修建文物展厅,原址原
-
【环球速看料】文物传承劳动之美国家文物局【序言】一份耕耘,一份收获,劳动创造美好生活,让我们在文物里领略古代劳动者的美好形象,品味
-
当前快看:孙晔1、孙晔,女,汉族,民盟盟员。2、现任上海市人大监察司法委委员,浦东新区人民调解协会会长兼物业管理纠纷
-
上海实施多子女家庭住房公积金支持政策 5月1日起执行 天天新视野上海实施多子女家庭住房公积金支持政策5月1日起执行,贷款,限额,生育,上海市,支持政策,住房公积金
-
最新资讯:中央气象台:重庆云南等地将有强对流天气重庆云南等地将有强对流天气
-
济南市气象台发布大风蓝色预警【IV级/一般】【2023-05-01】-世界资讯济南市气象台2023年05月01日09时20分发布大风蓝色预警信号:预计1日白天至2日白天我市市区、长清、章丘、平
-
世界视点!“五一”假期首日北京两机场两项数据创历史新高记者4月30日从首都机场集团获悉,29日,即今年五一假期首日,北京首都机场和大兴机场共保障航班2120架次、
-
假期第一天行了两万步 六旬老人走出“旅游膝”假期第一天行了两万步六旬老人走出“旅游膝”---楚天都市报极目新闻讯(记者郑晶晶通讯员陈彦西)五一假期
-
销量不断暴跌,降价也无济于事,雷克萨斯为什么不神了?_天天快讯2016年的时候,雷克萨斯的全年销量才刚刚突破10万台,仅仅三年之后,雷克萨斯的全年销量就达到了20万辆,20
-
吞食天地2重制版豪华版攻略_吞食天地如何玩欢迎观看本篇文章,小升来为大家解答以上问题。吞食天地2重制版豪华版攻略,吞食天地如何玩很多人还不知道
-
学校举办首场校友企业专场双选会_世界报道为助力毕业生高质量充分就业,4月26日下午,学校举办首场校友企业专场双选会。30余家校友企业来校招聘,为
-
世界观天下!福州通告!明天12点起,全面禁止!今年所有未参与自愿休渔钓具渔船将严格执行集中监管制度。
-
观焦点:大学生理性消费的重要性_理性消费的大学生理性消费1、[摘要]大学生作为一个特殊群体,其消费观念和消费行为不仅关系到自身的成长,也对社会各方面产生一定的
-
【环球时快讯】2022健身车十大品牌排行榜_健身车哪个牌子好1、乔山 JOHNSON2、爱康 ICON3、舒华 SHUA4、迪卡侬5、速尔 SOLE6、英派斯 Impulse7、岱
-
h怎么念 h的读音|每日消息1、h的读音:[eɪtʃ]。2、双元音 eɪ 的发音方法:学习该音发音方法请先学习 e 和 ɪ 这两个单元音。嘴巴
-
美的集团正在探索收购伊莱克斯(Electrolux)的可能性美的集团(000333)正在探索收购伊莱克斯(Electrolux)的可能性,美的最近几周就可能的交易与伊莱克斯进行了初
-
全球快播:商务部:“五一”假期首日消费市场大幅升温商务部消息,2023年五一假期首日,居民出行意愿强烈,消费热情高涨,消费市场大幅升温。据商务部监测,全国
-
转会切尔西,莱比锡主帅确认恩昆库将离队本轮德甲,...转会切尔西,莱比锡主帅确认恩昆库将离队本轮德甲,莱比锡1-0霍芬海姆,恩昆库打入一球。赛后新闻发布会,
-
魔兽单人游戏秘籍_要单机魔兽的秘籍1、在游戏中按下Enter键叫出对话框后输入greedisgood=黄金木材各加500单位KeyserSoze=加黄金LeafItToMe=加木材Poi
-
全球热头条丨淄博一酒店涨价1.5倍被立案调查张店市场监管官微消息,山东淄博烧烤爆红出圈,绝大多数业户坚持诚信守信互信,依法规范经营,杜绝欺诈行为
-
“一旦隐形战机在中国周边被击落,我们将无能为力”美国空军引以为豪的传统之一是“不让任何人掉队”,即“永远不会在战场上抛弃自己人”。当年F-117隐形战机
-
泉港区委主要领导带队到苏赣两省开展考察学习、招商推介为贯彻落实省委“深学争优、敢为争先、实干争效”行动、泉州市“抓项目、促发展”专项行动精神,4月23日至2
-
重点聚焦!《黑暗之魂3》法师职业优缺点及作战能力分析《黑暗之魂3》法师是很多人都喜欢的职业,下面为大家带来了《黑暗之魂3》法师职业优缺点及作战能力分析,下
-
焦点信息:“乡播播”等多个项目精彩亮相第六届数字中国建设峰会2023年4月26日至4月30日,第六届数字中国建设峰会和第三届中国国际数字产品博览会在福州海峡国际会展中心举
-
2023国际消费季暨上海“五五购物节”在沪启动_全球热点评新华社上海4月29日电(记者周蕊、谢希瑶)2023国际消费季暨上海“五五购物节”启动活动及国际消费中心城市论