微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决用自定义名称替换kubernetes中的IP地址

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

1。创建一个docker映像

2。创建了一个Azure容器注册表,并做了docker push

3。在Azure Kubernetes服务中创建一个群集并成功部署它。为此,我选择了外部终结点选项。

Kubernetes external end point

说说服务呼叫,我不想使用http://20.37.134.68:80之类的IP,但是另一个自定义名称该怎么办? 另外,如果我选择了Internal,那么有什么办法可以替换名称。 尝试使用端点名称属性编辑YAML,但失败了。有任何想法吗?

解决方法

我认为您混淆了一些概念,因此我将尽力解释并帮助您实现所需的目标。

  1. 在Kubernetes集群中部署容器映像时,在大多数情况下,您将使用poddeployment规范,该规范基本上是一个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。服务可以是internalexternalHere您可以找到所有服务类型。

对于内部服务,您需要使用服务类型ClusterIP(默认),这意味着只有您的集群才能到达Pod。要从其他吊舱获得服务,可以使用由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,因此这意味着您只能使用此名称访问您的应用程序。

创建入口之后,您可以使用命令kubectl get ing查看外部ip,并且可以在dns服务器中创建A条目。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。