Не удается создать службу типа ExternalName через командную строку - PullRequest
1 голос
/ 03 июля 2019

На k8s вы можете создавать сервисы либо с помощью команды 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

...

unknownflag: --external-name

Если я не использую флаг --external-name.

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

Служба "demo" недействительна: 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 Ответ

3 голосов
/ 03 июля 2019

Служба типа ExternalName является именно такой: локальная запись DNS CNAME для внешнего имени домена.

Таким образом, показ развертывания как ExternalName не имеет смысла.И поскольку это только имя, у него также нет портов.

Это все, что нужно:

apiVersion: v1
kind: Service
metadata:
  name: stackoverflow
  namespace: default
spec:
  externalName: stackoverflow.com
  type: ExternalName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...