Копы: доступ к API Kubernetes через DNS с помощью кластера на основе сплетен
Я хочу запустить кластер Kubernetes в AWS и использовал kops
успешно в прошлом, чтобы сделать это, используя подход на основе сплетен (использовать внутренние имена DNS с k8s.local
суффикс). По умолчанию это предоставляет API через ELB. Для нашего масштаба ELB только для доступа к API - это немного излишне, по крайней мере, на данный момент.
Я заметил, что есть способ избежать использования ELB, указав api: dns: {}
в конфигурации кластера. Однако я не уверен, как заставить это работать, и я подозреваю, что это не на 100% совместимо со сплетнями, никакие публичные настройки имен DNS.
Я пытался также установить masterPublicName
на публичное имя хоста для мастера, и я заметил сгенерированный kubecfg
использовать это имя хоста, но я ожидал kops
создать запись Route53 для него, и это не так. Должен ли я создать запись вручную? Или я что-то не так делаю? Я не мог найти много документации по этому вопросу.
Вот пример конфигурации кластера YAML для справки:
apiVersion: kops/v1alpha2
kind: Cluster
metadata:
creationTimestamp: 2017-11-27T10:28:34Z
name: eu-west-1.k8s.local
spec:
api:
dns: {}
authorization:
alwaysAllow: {}
channel: stable
cloudProvider: aws
configBase: s3://k8s.mycompany.com/eu-west-1.k8s.local
etcdClusters:
- etcdMembers:
- instanceGroup: master-eu-west-1a
name: a
name: main
- etcdMembers:
- instanceGroup: master-eu-west-1a
name: a
name: events
kubernetesApiAccess:
- 0.0.0.0/0
kubernetesVersion: 1.7.10
masterInternalName: api.internal.eu-west-1.k8s.local
masterPublicName: api-eu-west-1-k8s.mycompany.com
networkCIDR: 172.16.0.0/16
networkID: vpc-xxxxxxxxxx
networking:
kubenet: {}
nonMasqueradeCIDR: 100.64.0.0/10
sshAccess:
- 0.0.0.0/0
subnets:
- cidr: 172.16.36.0/22
name: eu-west-1a
type: Public
zone: eu-west-1a
- cidr: 172.16.40.0/22
name: eu-west-1b
type: Public
zone: eu-west-1b
- cidr: 172.16.44.0/22
name: eu-west-1c
type: Public
zone: eu-west-1c
topology:
dns:
type: Public
masters: public
nodes: public