首页>资讯>正文
焦点速讯:kubernetes就绪探针使用
2023-04-29 22:28:09    来源:腾讯云

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

我们首先创建一个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就绪探针使用

假设我们有一个应用程序,它需要一段时间来初始化并准备好接收流量。我们可以使用就绪探针来确保容器已准备2023-04-29

《小小梦魇》系列全平台销量超1200万套 世界微资讯

万代宣布《小小梦魇》系列全平台销量超过了1200万套。该系列包括《小小梦魇1》和《小小梦魇2》以及衍生手游2023-04-29

华润置地11个代表商场2022年租金收入曝光!

来源|赢商网(ID:winshang)作者|陈华头图来源|视觉中国4月27日晚间,华润置地披露了部分代表性商场的租金2023-04-29

多年高血压擅自停用降压药!81岁的爹爹脑梗了

极目新闻记者曹洋通讯员刘焱吴萍想着“是药三分毒”,八旬爹爹自觉高血压稳住了,就擅自停用降压药,导致脑2023-04-29

世界热消息:武穴街道启动“五一荆楚购”激发消费活力

武穴街道启动“五一荆楚购”激发消费活力---本次五一档期,武穴街道协助万达广场,利用好假期黄金时间,重2023-04-29

全球今日报丨美好生活 劳动创造 | 灼灼花海绘就乡村振兴新画卷

央视网消息:和风暖日,繁花盛开。春夏之交的中国,绽放无限生机。漫山栲花美如画青山绿水景常在这里是福建2023-04-29

预计240000000人次出游 五一首日景区开启人从众模式:超6成网友选择宅在家|环球今亮点

这个五一假期注定人潮汹涌,五一假期首日,各地景区正式开启人从众”模式。据央视报道,今天是五一假期第一2023-04-29

湖人季后赛第二轮赛程出炉 首战5月3日10点打响|环球即时看

央视网消息:北京时间4月29日,NBA季后赛首轮G6,湖人大胜灰熊,大比分4-2晋级次轮,第二轮将对阵国王和勇2023-04-29

世界观点:“原味乌兰察布”亮相北京农交会

【来源:乌兰察布市农牧局_本市动态】近日,第八届北京国际优质农产品展示交易会在北京·中国国际展览中心2023-04-29

道孚县气象台发布雷电黄色预警信号【III级/较重】【2023-04-29】_天天聚看点

道孚县气象台2023年04月29日12时41分发布雷电黄色预警信号:仲尼镇、亚卓镇、八美镇、鲜水镇、泰宁镇、玉科2023-04-29

世界速递!【坐着高铁看贵州·车厢里的故事】乘着高铁,刺柠吉驶向全国

多彩贵州网讯(本网记者张鸿杰)距2019年11月8日广药集团王老吉冠名的“广州-贵阳”高铁专列“刺柠吉号”启2023-04-29

每日资讯:海鸥住工董秘回复:公司截至4月28日股东总户数为:36,699户,请了解

海鸥住工(002084)04月29日在投资者关系平台上答复了投资者关心的问题。2023-04-29

今日热门!国家专项计划招生是什么意思(国家专项计划的录取原则)

国家专项计划,是指每年在全国招生计划中专门安排1万名左右专项计划,以本科一批招生计划为主。本科计划由2023-04-29

吊唁这个词是什么意思_吊唁这个词是啥意思

欢迎观看本篇文章,小勉来为大家解答以上问题。吊唁这个词是什么意思,吊唁这个词是啥意思很多人还不知道,2023-04-29

环球热议:江苏一季度微观主体经营性融资需求加快释放 同比多增274亿元

4月27日,人民银行南京分行举行2023年第二次新闻发布会,介绍2023年第一季度江苏省金融统计数据。现场,人2023-04-29

每日观点:西子洁能最新公告:一季度净利降38.88%至2455.15万元

西子洁能公布2023年一季度报告报告期营业收入1552亿元同比增长1619归属于上市公司股东的净利润245515万元同2023-04-29

全球今日报丨新邵:千亩杜鹃艳胜火

“哇!这片杜鹃花开得好艳丽,花朵特别大,我用手机拍个视频发给你瞧瞧……”连日来,湖南省邵阳市新邵县迎2023-04-29

环球微资讯!房地产项目巡展首场活动看点十足

本文转自:西宁晚报本报讯(记者师晓琼)4月28日,西宁市2023年房地产项目巡展促销暨购房补贴券发放活动拉2023-04-29

【全球播资讯】历届河北高考满分作文: 河北高考满分作文范文:丹墨莲梅

抄写作文网小编为大家提供历届河北高考满分作文:河北高考满分作文范文:丹墨莲梅来供大家参考,欢迎阅读。2023-04-29

颓势尽显,长城汽车2023第一季度利润暴跌116%,为何频频跳水?

日前,长城汽车公布2023年一季度业绩报告,营收利润均出现负增长,业界一片哗然。财报显示,长城汽车首季实2023-04-29

即时看!冰冻三尺非一日之寒的意思是什么_冰冻三尺非一日之寒意思详解

1、冰冻三尺,非一日之寒。表面上是冰冻三尺非一日之寒的效果。2、常用来形容一个局面的形成,是经过长时间2023-04-29

全球新动态:孙布拉

1、龙珠同人漫画龙珠超次元乱战中平行宇宙第16宇宙的布拉,是贝吉特与布尔玛的女儿,性格也与主宇宙的布拉2023-04-29

世界热讯:恒泰艾普(300157)周评:本周跌1.99%,主力资金合计净流出2434.06万元

截至2023年4月28日收盘,恒泰艾普(300157)报收于3 45元,较上周的3 52元下跌1 99%。本周,恒泰艾普4月242023-04-29

微头条丨双十一口号霸气押韵电商_双十一口号霸气押韵

1、运营:十一爆满,全心投入。2、客服:热情体贴,排忧解难。3、仓储:进进出出,国庆不休。4、支持部门:2023-04-28

别克微蓝6,快充0.5小时,零百加速7.3s

别克微蓝6(图片|配置|询价)2022款互联智享型PLUS各方面参数如何?下面我们来看看这款车的亮点。外观方面,2023-04-28