在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。
答案 0 :(得分:3)
ExternalName类型的服务就是这样:本地DNS CNAME记录到外部域名。
因此将部署公开为ExternalName没有任何意义。而且,由于它只是一个名称,因此也没有任何端口。
这就是全部步骤:
apiVersion: v1
kind: Service
metadata:
name: stackoverflow
namespace: default
spec:
externalName: stackoverflow.com
type: ExternalName