无法通过命令行创建ExternalName类型的服务

时间:2019-07-03 09:20:02

标签: kubernetes google-kubernetes-engine

在k8上,您可以通过kubectl expose ..命令还是kubectl crate service ...来创建服务?

因此,对于他们两个,我都有一个不确定的原因。

k8s允许我执行kubectl expose deploy demo --type ExternalName,但不允许传递--external-name标志来指定CNAME。

$ kubectl expose deploy demo --type ExternalName --port 80 --external-name google.com
  

...

     

未知标志:--external-name

如果我没有使用--external-name标志。

$ kubectl expose deploy demo --type ExternalName --port 80
  

服务“演示”无效:spec.externalName:必需值


k8s还允许我执行kubectl create service externalname demo --external-name example.com --tcp <port>:<target-port>,但是当我检查端口和目标端口没有通过时。

$ kubectl get svc
NAME               TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
demo               ExternalName   <none>        google.com    <none>     20m

我尝试了--tcp=80:80--tcp 80:80,-tcp = [80:80]等。没有任何效果!

任何人都可以指出是什么问题?我认为这可能是一个错误。

我使用的是GKE,版本为1.13.7 k8s。

1 个答案:

答案 0 :(得分:3)

ExternalName类型的服务就是这样:本地DNS CNAME记录到外部域名。

因此将部署公开为ExternalName没有任何意义。而且,由于它只是一个名称,因此也没有任何端口。

这就是全部步骤:

apiVersion: v1
kind: Service
metadata:
  name: stackoverflow
  namespace: default
spec:
  externalName: stackoverflow.com
  type: ExternalName