Я пытаюсь включить шпильки в моей службе Kubernetes в GKE.
Я пытался следовать приведенным здесь инструкциям: https://kubernetes.io/docs/tasks/administer-cluster/reconfigure-kubelet/, чтобы настроить мой конфигурационный файл kubelet на включите режим шпильки, но похоже, что мои конфиги никогда не сохраняются, хотя команда редактирования возвращается без ошибки.
Вот что я пытаюсь установить при редактировании узла:
spec:
podCIDR: 10.4.1.0/24
providerID: gce://staging/us-east4-b/gke-cluster-staging-highmem-f36fb529-cfnv
configSource:
configMap:
name: my-node-config-4kbd7d944d
namespace: kube-system
kubeletConfigKey: kubelet
Вот моя конфигурация узла, когда я ее описываю
Name: my-node-config-4kbd7d944d
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
====
kubelet_config:
----
{
"kind": "KubeletConfiguration",
"apiVersion": "kubelet.config.k8s.io/v1beta1",
"hairpinMode": "hairpin-veth"
}
Я пробовал использовать "edit node" и "patch". Тот же результат в том, что ничего не сохраняется. Patch возвращает «никаких изменений не сделано».
Вот команда исправления из учебника:
kubectl patch node ${NODE_NAME} -p "{\"spec\":{\"configSource\":{\"configMap\":{\"name\":\"${CONFIG_MAP_NAME}\",\"namespace\":\"kube-system\",\"kubeletConfigKey\":\"kubelet\"}}}}"
Я также не могу найти какой-либо ресурс, в котором атрибут «hairpinMode» должен быть установленным
Любая помощь приветствуется!
------------------- edit ------------- ---
вот почему я думаю, что закрепление не работает.
root@668cb9686f-dzcx8:/app# nslookup tasks-staging.[my-domain].com
Server: 10.0.32.10
Address: 10.0.32.10#53
Non-authoritative answer:
Name: tasks-staging.[my-domain].com
Address: 34.102.170.43
root@668cb9686f-dzcx8:/app# curl https://[my-domain].com/python/healthz
hello
root@668cb9686f-dzcx8:/app# nslookup my-service.default
Server: 10.0.32.10
Address: 10.0.32.10#53
Name: my-service.default.svc.cluster.local
Address: 10.0.38.76
root@668cb9686f-dzcx8:/app# curl https://my-service.default.svc.cluster.local/python/healthz
curl: (7) Failed to connect to my-service.default.svc.cluster.local port 443: Connection timed out
также, если я отправляю запрос на localhost из моего сервиса (не curl), он получает "соединение" отказалась." Впрочем, отправка запросов на внешний домен, который должен перенаправляться на один и тот же модуль.
В данный момент у меня есть только одна служба, один узел, один модуль и два порта прослушивания.
------------------ --- включая развертывание yaml ----------------- Развертывание
spec:
replicas: 1
spec:
containers:
- name: my-app
ports:
- containerPort: 8080
- containerPort: 50001
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTPS
Вход:
apiVersion: extensions/v1beta1
kind: Ingress
spec:
backend:
serviceName: my-service
servicePort: 60000
rules:
- http:
paths:
- path: /*
backend:
serviceName: my-service
servicePort: 60000
- path: /python/*
backend:
serviceName: my-service
servicePort: 60001
service
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- name: port
port: 60000
targetPort: 8080
- name: python-port
port: 60001
targetPort: 50001
type: NodePort
Я пытаюсь настроить многопортовое приложение, в котором основная программа запускает сценарий для запуска, выполняя запрос на локальном компьютере через другой порт. (Мне нужно запустить что-то в python, но основное приложение в golang.)
Это простой скрипт, и я бы хотел избежать выставления конечных точек python с внешним доменом, поэтому Мне не нужно беспокоиться об аутентификации и т. Д. c.
-------------- запросы, отправленные my-service в golang -------------
https://[my-domain]/health: success
https://[my-domain]/python/healthz: success
http://my-service.default:60000/healthz: dial tcp: lookup my-service.default on 169.254.169.254:53: no such host
http://my-service.default/python/healthz: dial tcp: lookup my-service.default on 169.254.169.254:53: no such host
http://my-service.default:60001/python/healthz: dial tcp: lookup my-service.default on 169.254.169.254:53: no such host
http://localhost:50001/healthz: dial tcp 127.0.0.1:50001: connect: connection refused
http://localhost:50001/python/healthz: dial tcp 127.0.0.1:50001: connect: connection refused