在k8s中副本使用pod的IP注冊(cè)到consul全過程
更新時(shí)間:2026年02月25日 09:51:35 作者:October-
文章介紹了如何在Kubernetes環(huán)境中通過DNS獲取POD的IP,并將其用于注冊(cè)到Consul,通過修改服務(wù)啟動(dòng)腳本和Kubernetes樣本文件,使得微服務(wù)能夠獲取POD信息并使用該IP注冊(cè)到Consul,從而實(shí)現(xiàn)服務(wù)間的發(fā)現(xiàn)和通信
前提條件: consul 部署在k8s 的節(jié)點(diǎn)上
1、通過DNS獲取POD的IP
1.1、服務(wù)啟動(dòng)腳本
#!/bin/bash
# 啟動(dòng)服務(wù),獲得pod中的IP,POD中的hosts配置最后一行就是它自己的IP
export HOST_IP=$(tail -n 1 /etc/hosts|awk 'END {print}'| awk '{for(i =1; i <=NF; i++){ if($i~/[0-9]\.[0-9]/) print $i}}')
echo ${HOST_IP}
#通過環(huán)境變量傳遞給微服務(wù)
java -jar -DHOST_IP=${HOST_IP} /opt/service/sample/sample-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod1.2、微服務(wù)修改配置
spring:
application:
name: sample
cloud:
consul:
host: ${consul_host:10.0.10.110}
port: ${consul_port:8500}
discovery:
register: true
service-name: ${spring.application.name}
health-check-path: /actuator/health
healthCheckInterval: 10s
tags: urlprefix-/${spring.application.name}
instance-id: {spring.application.instance_id:${random.value}}}
health-check-critical-timeout: 30s
hostname: ${HOST_IP}2、在K8S的樣本文件通過env獲取 POD信息
2.1、樣本文件修改
…………
env:
- name: CONSUL_HOST
value: 10.0.10.110
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
………….2.2、檢查環(huán)境變量是否生效
[root@kvm13-pre ~]# kubectl exec -it sample-6f7fcd5567-9sxl9 -n lenovo /bin/bash root@sample-6f7fcd5567-9sxl9:/opt/service/sample# echo $POD_IP 10.244.3.94 root@sample-6f7fcd5567-9sxl9:/opt/service/sample#
2.3、服務(wù)啟動(dòng)腳本
#!/bin/bash
# 啟動(dòng)服務(wù)
java -jar -DHOST_IP=${POD_IP} /opt/service/lenovo_sample/sample-service-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod2.4、微服務(wù)修改配置
spring:
application:
name: sample
cloud:
consul:
host: ${consul_host:10.0.10.110}
port: ${consul_port:8500}
discovery:
register: true
service-name: ${spring.application.name}
health-check-path: /actuator/health
healthCheckInterval: 10s
tags: urlprefix-/${spring.application.name}
instance-id: {spring.application.instance_id:${random.value}}}
health-check-critical-timeout: 30s
hostname: ${HOST_IP}3、效果
能夠看到所有服務(wù) 都是使用POD 的IP來注冊(cè)到consul上


總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Rainbond應(yīng)用分享與發(fā)布官方文檔說明
這篇文章主要為大家介紹了Rainbond應(yīng)用分享與發(fā)布的官方文檔說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
Kubernetes(K8S)中強(qiáng)制刪除命名空間的實(shí)現(xiàn)方式
本文介紹了在Kubernetes中刪除處于Terminating狀態(tài)的命名空間mysql-operator的步驟,包括檢查并清理殘留資源、強(qiáng)制刪除命名空間等方法2026-01-01
K8S中某個(gè)容器突然出現(xiàn)內(nèi)存和CPU占用過高的問題及解決方案
當(dāng)K8S容器出現(xiàn)資源過載時(shí),可通過kubectl監(jiān)控定位問題,調(diào)整資源限制,優(yōu)化應(yīng)用代碼,拆分多應(yīng)用容器,利用監(jiān)控工具排查,實(shí)施水平擴(kuò)展或遷移負(fù)載,確保集群穩(wěn)定運(yùn)行2025-07-07
kubernetes認(rèn)證鑒權(quán)內(nèi)容淺析
這篇文章主要為大家介紹了kubernetes認(rèn)證鑒權(quán)內(nèi)容淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
k8s?clientConfig和rawConfig區(qū)別解析
k8s clientConfig和rawConfig區(qū)別k8s.io/client-gov0.28.2基于kubeconfig可以創(chuàng)建clientConfig和rawConfig,兩者區(qū)別在于,clientConfig包含了訪問kube-apiserver的地址和認(rèn)證鑒權(quán)信息,感興趣的朋友一起看看吧2025-03-03

