HostAliases中的Kubernetes服务

时间:2019-02-14 08:50:19

标签: kubernetes

在Kubernetes中是否可以在hostAliases下使用服务名称?我想将不存在的域名指向服务而不是IP。

类似以下内容:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-name
spec:
  replicas: 1
  template:
    spec:
      containers:
        hostAliases:
        - ip: "my-service-name"
          hostnames:
          - "my.domain.com"

如果没有,你们将如何为服务吊舱设置本地主机文件条目?我需要将不存在域解析为该服务。

2 个答案:

答案 0 :(得分:0)

否,您不能使用服务名称代替部署定义中ip下的spec.template.spec。 您可以做的是使用kubectl get services获取服务IP并在部署中使用它,将其映射到不存在的域。

您不能使用域名代替IP的原因-是文件/ etc / hosts应该仅包含IP和主机名。有关更多信息,您可能需要阅读此Creating alias to domain name with /etc/hosts主题。

答案 1 :(得分:0)

正如@VKR在另一条评论中解释的那样,HostAliases基本上只是注入到/ etc / hosts中,这仅允许A记录类型条目。

对于CNAME条目,一种解决方法是将别名注入CoreDNS。

这可以通过编辑ConfirMap for CoreDNS来完成:

$ kubectl edit configmap coredns -n kube-system

apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health
        rewrite name orderer0.example.com orderer0-example-com.orbix-mvp.svc.cluster.local
        rewrite name peer0.example.com peer0-example-com.orbix-mvp.svc.cluster.local
        kubernetes cluster.local {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
    }

我添加了以rewrite name开头的两行,一旦CoreDNS重新启动,新条目将在整个群集中可用。

可以使用以下命令重新启动CoreDNS:

kubectl exec -n kube-system coredns-980047985-g2748 -- kill -SIGUSR1 1

两个CoreDNS pod都需要运行以上内容。