Я развернул виртуальные машины CoreOS Vagrant с 3 узлами, следуя этому руководству , модифицированному как описано здесь .
Виртуальные машины исправны и работают;Контроллер / рабочие узлы K8s в порядке;и я могу развернуть стручки;ReplicaSets;и т. д.
Однако DNS, похоже, не работает, и, когда я смотрю на состояние модулей flannel
, они явно вредны для здоровья:
$ kubectl get po --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
apps frontend-cluster-q4gvm 1/1 Running 1 1h
apps frontend-cluster-tl5ts 1/1 Running 0 1h
apps frontend-cluster-xgktz 1/1 Running 1 1h
kube-system kube-apiserver-172.17.8.101 1/1 Running 2 32d
kube-system kube-controller-manager-172.17.8.101 1/1 Running 2 32d
kube-system kube-flannel-ds-6csjl 0/1 CrashLoopBackOff 46 31d
kube-system kube-flannel-ds-f8czg 0/1 CrashLoopBackOff 48 31d
kube-system kube-flannel-ds-qbtlc 0/1 CrashLoopBackOff 52 31d
kube-system kube-proxy-172.17.8.101 1/1 Running 2 32d
kube-system kube-proxy-172.17.8.102 1/1 Running 0 6m
kube-system kube-proxy-172.17.8.103 1/1 Running 0 2m
kube-system kube-scheduler-172.17.8.101 1/1 Running 2 32d
далее, когда я пытаюсьдля развертывания kubedns
, которые тоже не работают, с тем же режимом сбоя:
$ kubectl logs kube-flannel-ds-f8czg -n kube-system
I0608 23:03:32.526331 1 main.go:475] Determining IP address of default interface
I0608 23:03:32.528108 1 main.go:488] Using interface with name eth0 and address 10.0.2.15
I0608 23:03:32.528135 1 main.go:505] Defaulting external address to interface address (10.0.2.15)
E0608 23:04:02.627348 1 main.go:232] Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-f8czg': Get https://10.3.0.1:443/api/v1/namespaces/kube-system/pods/kube-flannel-ds-f8czg: dial tcp 10.3.0.1:443: i/o timeout
Итак, похоже, что служба контроллера, работающая с IP-адресом 10.3.0.1
, недоступна из других модулей:
$ kubectl get svc --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
apps frontend ClusterIP 10.3.0.170 <none> 80/TCP,443/TCP 1h
default kubernetes ClusterIP 10.3.0.1 <none> 443/TCP 32d
Полагаю, они были связаны с конфигурациями etcd
Фланеля;или kube-proxy
YAML;Итак, я добавил следующее для всех узлов:
core@core-01 ~ $ etcdctl ls /flannel/network/subnets
/flannel/network/subnets/10.1.80.0-24
/flannel/network/subnets/10.1.76.0-24
/flannel/network/subnets/10.3.0.0-16
/flannel/network/subnets/10.1.34.0-24
core@core-01 ~ $ etcdctl get /flannel/network/subnets/10.3.0.0-16
{"PublicIP": "172.17.8.101"}
и перезапустил flanneld
:
core@core-01 ~ $ sudo systemctl restart flanneld
Однако это, похоже, не приносит никакой пользы;из запущенного модуля Pod:
# This is expected (no client certs):
root@frontend-cluster-q4gvm:/opt/simple# curl -k https://172.17.8.101/api/v1/pods
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "Unauthorized",
"reason": "Unauthorized",
"code": 401
}
# But this one just times out:
root@frontend-cluster-q4gvm:/opt/simple# curl -k https://10.3.0.1/api/v1/pods
Затем я посмотрел на kube-proxy.yaml
и подозревал, что конфигурация --master
(для рабочих узлов) была неправильной, как-то?
core@core-02 /etc/kubernetes/manifests $ cat kube-proxy.yaml
apiVersion: v1
kind: Pod
metadata:
name: kube-proxy
namespace: kube-system
spec:
hostNetwork: true
containers:
- name: kube-proxy
image: quay.io/coreos/hyperkube:v1.10.1_coreos.0
command:
- /hyperkube
- proxy
>>>>> Should it be like this?
- --master=https://172.17.8.101
>>>>> or like this?
- --master=http://127.0.0.1:8080
securityContext:
privileged: true
volumeMounts:
- mountPath: /etc/ssl/certs
name: ssl-certs-host
readOnly: true
volumes:
- hostPath:
path: /usr/share/ca-certificates
name: ssl-certs-host
Конфигурация 127.0.0.1:8080
может работать только (в лучшем случае) для узла контроллера, но наверняка ни к чему не приведет на других узлах?
Изменение --master
, как указано выше, и перезапуск модулей, однако, тоже ничего хорошего не дает.
Суть в том, как сделать API контроллера доступным для 10.3.0.1
?Как я могу включить KubeDNS (я пробовал инструкции в руководстве «Hard Way», но получил тот же режим отказа, что и выше).
Заранее большое спасибо!
Обновление
Это файл с параметрами flanneld
:
$ cat /etc/flannel/options.env
FLANNELD_IFACE=172.17.8.101
FLANNELD_ETCD_ENDPOINTS=http://172.17.8.102:2379,http://172.17.8.103:2379,http://172.17.8.101:2379
Я удалил набор фланелевых демонов:
kc delete ds kube-flannel-ds -n kube-system
и развернул KubeDNS, следуя этим инструкциям: служба определена здесь , а развертывание здесь :
$ kc -n kube-system get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.3.0.10 <none> 53/UDP,53/TCP 4d
$ kc get po -n kube-system
NAME READY STATUS RESTARTS AGE
kube-apiserver-172.17.8.101 1/1 Running 5 36d
kube-controller-manager-172.17.8.101 1/1 Running 5 36d
kube-dns-7868b65c7b-ntc95 3/4 Running 2 3m
kube-proxy-172.17.8.101 1/1 Running 5 36d
kube-proxy-172.17.8.102 1/1 Running 3 4d
kube-proxy-172.17.8.103 1/1 Running 2 4d
kube-scheduler-172.17.8.101 1/1 Running 5 36d
Однако, я все еще получаю ошибку тайм-аута (на самом деле, куча из них):
E0613 19:02:27.193691 1 sync.go:105] Error getting ConfigMap kube-system:kube-dns err: Get https://10.3.0.1:443/api/v1/namespaces/kube-system/configmaps/kube-dns: dial tcp 10.3.0.1:443: i/o timeout
Обновление # 2
Аналогично, при настройке системы у меня есть следующая flanneld
конфигурация:
core@core-02 ~ $ etcdctl get /flannel/network/config
{ "Network": "10.1.0.0/16" }
core@core-02 ~ $ etcdctl ls /flannel/network/subnets
/flannel/network/subnets/10.1.5.0-24
/flannel/network/subnets/10.1.66.0-24
/flannel/network/subnets/10.1.6.0-24
core@core-02 ~ $ etcdctl get /flannel/network/subnets/10.1.66.0-24
{"PublicIP":"172.17.8.102"}
(и аналогично для остальных, указывая на 101
и 103
) - должно ли быть что-то в config
для подсети 10.3.0.0/16
?Кроме того, должна ли быть запись (указывающая на 172.17.8.101
) для API контроллера на 10.3.0.1
?Что-то вроде:
/flannel/network/subnets/10.3.0.0-24
{"PublicIP":"172.17.8.101"}
Кто-нибудь знает, где найти хорошую flanneld
документацию (документы CoreOS действительно недостаточны и чувствуют себя несколько «заброшенными»)?Или что-то еще использовать, что на самом деле работает?
Спасибо!