У меня есть пользовательская настройка Bare-Metal Kubernetes (настройка кластера вручную с использованием Kubernetes Hard Way).Кажется, все работает, но я не могу получить доступ к службам извне.
Я могу получить список служб, когда curl:
https://<ip-addr>/api/v1/namespaces/kube-system/services
Однако, когда я пытаюсь прокси (используя kubectl proxy
,а также используя <master-ip-address>:<port>
):
https://<ip-addr>/api/v1/namespaces/kube-system/services/toned-gecko-grafana:80/proxy/
я получаю:
Error: 'dial tcp 10.44.0.16:3000: connect: no route to host'
Trying to reach: 'http://10.44.0.16:3000/'
Даже если я обычно скручиваю http://10.44.0.16:3000/
я получаюта же ошибка.Это результат того, свернулся ли я изнутри виртуальной машины, на которой установлен Kubernetes. Я смог решить эту проблему, проверьте ниже.
Я могу получить доступ к своим службам извне, используя NodePort.
Я могу получить доступ к своим услугам, если выставлю их через Nginx-Ingress.
Я использую Weave в качестве CNI, и журналы были нормальными, кромепара строк журнала о том, что он не может получить доступ к пространствам имен (ошибка RBAC).Хотя после этого журналы были в порядке.
При использовании CoreDNS журналы выглядят нормально.Логи APIServer и Kubelet выглядят нормально.События Kubernetes тоже выглядят нормально.
Дополнительное примечание : назначенный мне IP-адрес службы DNS 10.3.0.10
, а службаДиапазон IP-адресов: 10.3.0.0/24
, а сеть POD - 10.2.0.0/16
.Я не уверен, что это 10.44.x.x
или откуда оно.
Вот вывод одной из служб:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "kubernetes-dashboard",
"namespace": "kube-system",
"selfLink": "/api/v1/namespaces/kube-system/services/kubernetes-dashboard",
"uid": "5c8bb34f-c6a2-11e8-84a7-00163cb4ceeb",
"resourceVersion": "7054",
"creationTimestamp": "2018-10-03T00:22:07Z",
"labels": {
"addonmanager.kubernetes.io/mode": "Reconcile",
"k8s-app": "kubernetes-dashboard",
"kubernetes.io/cluster-service": "true"
},
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"addonmanager.kubernetes.io/mode\":\"Reconcile\",\"k8s-app\":\"kubernetes-dashboard\",\"kubernetes.io/cluster-service\":\"true\"},\"name\":\"kubernetes-dashboard\",\"namespace\":\"kube-system\"},\"spec\":{\"ports\":[{\"port\":443,\"targetPort\":8443}],\"selector\":{\"k8s-app\":\"kubernetes-dashboard\"}}}\n"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 443,
"targetPort": 8443,
"nodePort": 30033
}
],
"selector": {
"k8s-app": "kubernetes-dashboard"
},
"clusterIP": "10.3.0.30",
"type": "NodePort",
"sessionAffinity": "None",
"externalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {
}
}
}
Я не уверен, как отладить это, даже некоторые указатели в правильном направлении помогут. Если что-то еще требуется, пожалуйста, дайтея знаю.
Выход из kubectl get svc
:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
coredns-primary ClusterIP 10.3.0.10 <none> 53/UDP,53/TCP,9153/TCP 4h51m
kubernetes-dashboard NodePort 10.3.0.30 <none> 443:30033/TCP 4h51m
РЕДАКТИРОВАТЬ:
Оказывается, я не сделалу меня есть служба kube-dns
, работающая по какой-то причине, несмотря на то, что CoreDNS запущен. Это было как упомянуто здесь: https://github.com/kubernetes/kubeadm/issues/1056#issuecomment-413235119
Теперь я могу успешно свернуться изнутри виртуальной машины, но прокси-доступ все еще дает мне то же самоеошибка: No route to host
. Я не уверен, почему или как это решило бы проблему, поскольку я не вижу здесь работающего DNS, но это исправило проблемы. Буду признателен за любые возможные объяснения по этому поводу.