最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8s環(huán)境內(nèi)部的服務(wù)如何注冊到外部

 更新時間:2026年02月25日 09:35:44   作者:runing_an_min  
文章主要討論了在K8s環(huán)境外部部署服務(wù)時如何與部署在K8s內(nèi)部的服務(wù)進行服務(wù)注冊,提出了使用LoadBalancer、Kong和NodePort三種方式,并詳細介紹了每種方式的實現(xiàn)步驟和注意事項

描述

最近在使用nacos和k8s的時候遇到一個問題:nacos部署在k8s的外部,服務(wù)部署在K8s內(nèi)部,服務(wù)注冊該怎么玩呢?

其實我們現(xiàn)實環(huán)境中,不可能所有的服務(wù)都部署在k8s內(nèi)部的,總有些服務(wù)要部署在k8s外部的。

下面我聊一下我的想法

LoadBalancer

創(chuàng)建一個LoadBalancer類型的service,這樣就會把我們服務(wù)映射到外部的負載均衡上了。

我們k8s內(nèi)部的服務(wù)需要注冊負載均衡的地址到nacos。

如果你的k8s是安裝在下面這些環(huán)境的,那么你可以使用這種方式(居然沒有阿里云)

使用Kong

這種方式是在K8s內(nèi)部安裝一套Kong,K8s內(nèi)部的服務(wù)首先注冊到Kong上,然后向nacos注冊的時候,注冊Kong的地址

注冊節(jié)點的Ip和Pod的hostPort

這種方式我覺得最好了,但是實際環(huán)境中我沒有實現(xiàn),還請大神相助

  • 我們的服務(wù)在k8s里面啟動成deployment
  • 利用k8s的downward ApI將pod所在的節(jié)點的IP,設(shè)置成容器的環(huán)境變量
  • 我卡在此處了, 沒有辦法將hostPort設(shè)置成容器的環(huán)境變量
  • pod啟動的時候,程序通過環(huán)境變量獲取節(jié)點的Ip和hostPort,并注冊到nacos
  • 外部服務(wù)通過NodeIP + hostPort訪問服務(wù)

注冊service的Nodeport和pod所在的節(jié)點的IP

  • 啟動一個NodePort類型的service
  • 我們的服務(wù)在k8s里面啟動成deployment, 通過downward ApI將pod所在節(jié)點的IP,設(shè)置為容器內(nèi)部的環(huán)境變量
  • pod啟動的時候通過K8s的API獲取service的Nodeport
  • 將節(jié)點的Ip和service的NodePort注冊到nacos中去
該方案的實際操作
  • 啟動一個service
apiVersion: v1
kind: Service
metadata:
  name: service-to-external
  namespace: testuser
spec:
  selector:
    app:  nginx-to-external
  type: NodePort 
  ports:   
    - name: http 
      port: 80
  • 啟動deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: to-external-deployment
  namespace: testuser
  labels:
    app: to-external
spec:
  replicas: 1
  selector:
    matchLabels:
      app:  nginx-to-external
  template:
    metadata:
      labels:
        app: nginx-to-external
    spec:
      containers:
      - name:  nginx-to-external-deployment
        env:
        - name: node_ip
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
        - name: namespace
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: service_name
          value: service-to-external
        image:  172.16.0.96:800/demaxieya/python-script:v1.0
        ports:
           - containerPort: 80
             name: web

node_ip 就是通過downward ApI獲取節(jié)點的Ip

namespace 就是通過downward ApI獲取namespace

service_name 前面創(chuàng)建的service的名字

  • 鏡像啟動時執(zhí)行的腳本
import os 
import requests

namespace = os.getenv("namespace")
node_ip = os.getenv("node_ip")
service_name = os.getenv("service_name")
url = "https://kubernetes.default.svc/api/v1/namespaces/%s/services/%s" % (namespace, service_name)
cert = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"

response = requests.get(url, verify=cert)
print("節(jié)點的ip:" , node_ip)
print("service的信息: ", response.json())
  • kubernetes.default.svc 這個是API server的地址
  • 默認pod啟動的時候使用的是default的serviceAccount,沒有訪問service的權(quán)限,需要我們做一個角色綁定?;蛘咦约簞?chuàng)建一個具有查看service權(quán)限的賬戶
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: read-secrets-global
subjects:
- kind: User
  name: system:anonymous
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: view
  apiGroup: rbac.authorization.k8s.io
  • 查看腳本的輸出

下圖中可以看到我們已經(jīng)獲取到ip地址和Nodeport了, 后面就可以向nacos注冊了。我就省略了注冊的步驟了

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • k8s應(yīng)用監(jiān)控探針詳解

    k8s應(yīng)用監(jiān)控探針詳解

    這篇文章主要為大家介紹了k8s應(yīng)用監(jiān)控探針的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 阿里云oss對象存儲使用詳細步驟

    阿里云oss對象存儲使用詳細步驟

    本文主要介紹了阿里云oss對象存儲使用詳細步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • kubernetes-1.25.6二進制部署方式

    kubernetes-1.25.6二進制部署方式

    這篇文章主要介紹了kubernetes-1.25.6二進制部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Hadoop 2.x與3.x 22點比較,Hadoop 3.x比2.x的改進

    Hadoop 2.x與3.x 22點比較,Hadoop 3.x比2.x的改進

    本文介紹了Hadoop3版本中添加的新功能,Hadoop 2和Hadoop 3的區(qū)別,在這篇文章中,我們將討論Hadoop 2.x與Hadoop 3.x之間的比較。感興趣的朋友跟隨小編一起看一下
    2018-09-09
  • 刪除k8s環(huán)境過期鏡像&docker磁盤清理方式

    刪除k8s環(huán)境過期鏡像&docker磁盤清理方式

    文章介紹了如何清理Kubernetes環(huán)境中的過期鏡像和Docker磁盤空間,包括使用`docker system prune`命令和編寫腳本進行鏡像刪除
    2025-12-12
  • K8S中設(shè)置JVM堆棧大小實現(xiàn)方式

    K8S中設(shè)置JVM堆棧大小實現(xiàn)方式

    這篇文章主要介紹了K8S中設(shè)置JVM堆棧大小實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • k8s容器資源限制方式

    k8s容器資源限制方式

    K8s通過request和limit管理容器資源,內(nèi)存單位為字節(jié),CPU為核心數(shù),內(nèi)存超限會終止容器,CPU超限不影響,LimitRange設(shè)namespace資源上下限,ResourceQuota限制總資源配額及Pod數(shù)量,二者均在創(chuàng)建時生效,不影響已有資源
    2025-07-07
  • k8s?pod獲取ip地址實現(xiàn)方式

    k8s?pod獲取ip地址實現(xiàn)方式

    本文介紹了Kubernetes網(wǎng)絡(luò)模型中各種網(wǎng)絡(luò)組件的作用和交互方式,包括CRI、CNI接口,IPAM(IPAddressManagement),以及kubelet、cri、cni調(diào)用過程,Kubernetes通過這些組件確保每個Pod都有唯一的IP地址,并能夠進行有效的通信
    2026-02-02
  • K8s中pod間通信的兩種情況總結(jié)詳解

    K8s中pod間通信的兩種情況總結(jié)詳解

    在Kubernetes集群中,同一節(jié)點上的Pod通過本地虛擬網(wǎng)橋進行高效通信,這篇文章主要介紹了K8s中pod間通信的兩種情況的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • 某集團任意文件下載到虛擬主機getshell的方法

    某集團任意文件下載到虛擬主機getshell的方法

    這篇文章主要介紹了某集團任意文件下載到虛擬主機getshell的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01

最新評論

吉安市| 陕西省| 北辰区| 翁源县| 和林格尔县| 白玉县| 云龙县| 青海省| 久治县| 镶黄旗| 无极县| 乐亭县| 贵阳市| 桃源县| 应城市| 安福县| 阜康市| 禄丰县| 扬州市| 岢岚县| 山阴县| 定日县| 剑川县| 大庆市| 武邑县| 平罗县| 临沭县| 沁源县| 信宜市| 兴隆县| 永胜县| 永嘉县| 苗栗县| 潢川县| 商都县| 金乡县| 阳原县| 永顺县| 武穴市| 龙里县| 赞皇县|