在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"
如果没有,你们将如何为服务吊舱设置本地主机文件条目?我需要将不存在域解析为该服务。
答案 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都需要运行以上内容。