用自定义名称替换kubernetes中的IP地址

Replacing ip address in kubernetes with custom name

我创建了一个示例 spring 引导应用程序并执行了以下操作:-

1.created一张docker图片

2.created 一个 Azure 容器注册表并docker 推送到这个

3.Created Azure Kubernetes 服务中的集群并部署了它 successfully.I 为此选择了外部端点选项。

Kubernetes external end point

说服务到服务调用我不想使用像 http://20.37.134.68:80 这样的 IP 但另一个自定义名称我该怎么做? 另外,如果我选择内部,那么有什么方法可以替换名称。 尝试使用端点名称 属性 编辑 YAML 但有 failed.Any 个想法?

我觉得你混淆了一些概念,所以我会尽力解释并帮助你达到你想要的。

  1. 当你在 Kubernetes 集群中部署容器镜像时,在大多数情况下你会使用 pod or deployment 规范,它基本上是一个包含所有 deployment/pod 配置、名称、镜像的 yaml 文件名称等。这是一个简单的 echo-server 应用程序示例:
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. Services can be internal and external. Here您可以找到所有服务类型。

对于内部服务,您需要使用服务类型ClusterIP(默认),这意味着只有您的集群会到达pods。要从其他 pods 访问您的服务,您可以使用由 my-svc.my-namespace.svc.cluster-domain.example 组成的 service name

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

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 中的入口选项很少,最受欢迎的选项之一是 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入口