簡體   English   中英

用自定義名稱替換 kubernetes 中的 ip 地址

[英]Replacing ip address in kubernetes with custom name

我創建了一個示例 Spring Boot 應用程序並執行了以下操作:-

1.創建了一個docker鏡像

2.創建了一個 Azure 容器注冊表並對此做了一個 docker push

3.在 Azure Kubernetes 服務中創建集群並成功部署。為此我選擇了外部端點選項。

Kubernetes 外部端點

說服務到服務呼叫我不想使用像http://20.37.134.68:80這樣的 IP 但另一個自定義名稱我該怎么做? 另外,如果我選擇內部,那么有什么方法可以替換名稱。 嘗試使用端點名稱屬性編輯 YAML,但失敗了。有任何想法嗎?

我認為你混合了一些概念,所以我會嘗試解釋並幫助你達到你想要的。

  1. 當您在 Kubernetes 集群中部署容器映像時,在大多數情況下,您將使用poddeployment規范,這基本上是一個包含所有部署/pod 配置、名稱、映像名稱等的 yaml 文件。這是一個示例簡單的回聲服務器應用程序:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo
spec:
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
      labels:
        app: echo
    spec:
      containers:
      - name: echo
        image: mendhak/http-https-echo
        ports:
        - name: http
          containerPort: 80

觀察文件中的字段name 您可以在此處為部署和容器配置名稱。

  1. 為了公開您的應用程序,您需要使用service 服務可以是internal ,也可以是external 在這里您可以找到所有服務類型。

對於內部服務,您需要使用服務類型ClusterIP (默認),這意味着只有您的集群才能訪問 pod。 要從其他 pod 訪問您的服務,您可以使用由my-svc.my-namespace.svc.cluster-domain.example組成的服務名稱

以下是上述部署的服務示例:

apiVersion: v1
kind: Service
metadata:
  name: echo-svc
spec:
  selector:
    app: echo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  1. 要在外部公開您的服務,您可以選擇使用服務類型NodePortLoadBalancer或使用ingress

您可以在入口規則中配置您的 DNS 名稱並根據需要制定路徑規則,甚至可以為您的應用程序配置 HTTPS。 kubernetes 中的 ingress 選項很少,最受歡迎的選項之一是nginx-ingress

以下是如何為我們的示例服務配置簡單入口的示例:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "false"
  name: echo-ingress
spec:
  rules:
  - host: myapp.mydomain.com
    http:
      paths:
      - path: "/"
        backend:
          serviceName: echo-svc
          servicePort: 80

在示例中,我使用了 dns 名稱myapp.mydomain.com ,因此這意味着您只能通過此名稱訪問您的應用程序。

創建 ingress 后,可以使用kubectl get ing命令查看外部 ip,並且可以在您的 dns 服務器中創建一個 A 條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM