@kubernetes_ru

Страница 19 из 958
Maxim
26.08.2016
15:32:03
и стал нот реди по этому поводу

ну тейлом или лессом

Denis
26.08.2016
15:32:36
евенты = только ошибки по kubedns

Maxim
26.08.2016
15:33:04
а в --namespace=default

Google
Maxim
26.08.2016
15:33:05
?

(я честно говоря не помню, к какому неймспейсу ноды прибиты)

Denis
26.08.2016
15:34:25
да, ноды в default и там сплошные Starting kubelet. для 18й

Maxim
26.08.2016
15:35:35
ну тогда только логи кьюблета

Denis
26.08.2016
15:42:28
хм $ sudo journalctl -u kubelet -- No entries -- $ sudo journalctl -u kubelet.service -- No entries --

а он по другому

сколько всего интересного

Aug 26 15:43:11 www1 kubelet[38805]: F0826 15:43:11.279169 38805 server.go:118] crypto/tls: private key does not match public key

Видимо вот эта проблема

Maxim
26.08.2016
15:46:16
ну написато аглицким по черному: контейнер рантайм из даун

докер там умер

или рокет

или чем ты там контейнеры ворочаешь

Google
Denis
26.08.2016
15:47:10
да вроде жив

docker ps -a выдаёт список активных контейнеров

Maxim
26.08.2016
15:48:00
облин, а до тлс я не дочитал

извиняюсь

показывай параметры запуска кьюблета

только с другого хоста уже ;)

ps -p `pgrep kubelet` -o args

Fike
26.08.2016
15:51:25
ключевая аномалия у тебя какая-то там

Maxim
26.08.2016
15:52:08
а все потому, что кто-то ленится читать мануалы до конца ;)

еще и вместо официальных читает короосные

если внимательно почитать официальную документацию в части аутентификации: http://kubernetes.io/docs/admin/authentication/

Denis
26.08.2016
15:53:32
ключевая аномалия у тебя какая-то там
Самая жесть, что она на ровном месте образовалась, после kubectl apply -f одного из подов приложения.

Maxim
26.08.2016
15:53:52
то станет понятно, что городить весь этот хитрый SSL-огород вовсе необязательно

и можно ограничиться публичной частью CA и токеном

Denis
26.08.2016
15:54:17
даже так

ps -p `pgrep kubelet` -o args
Крутая команда, но в CoreOS пишет error: process ID list syntax error :)

Maxim
26.08.2016
15:55:50
там ps из бизибокса чтоли?

Denis
26.08.2016
15:58:38
Не исключено :)

Maxim
26.08.2016
16:05:00
ну короче, покажи, как запускается кьюблет

Denis
26.08.2016
16:11:55
Конкретно на этой машине: ExecStart=/opt/bin/kubelet \ --address=0.0.0.0 \ --port=10250 \ --hostname-override=${COREOS_PRIVATE_IPV4} \ --api-servers=${MASTER_PRIVATE_IPV4}:8080 \ --allow-privileged=true \ --logtostderr=true \ --cadvisor-port=4194 \ --healthz-bind-address=0.0.0.0 \ --tls-cert-file=/etc/kubernetes/ssl/www1-worker.pem \ --tls-private-key-file=/etc/kubernetes/ssl/www1-worker-key.pem \ --cluster-dns=10.100.0.100 \ --cluster-domain="kube.local" \ --healthz-port=10248

Google
Maxim
26.08.2016
16:14:01
эээ

а почему 8080?

ты к апишечке по plain-http идешь?

Denis
26.08.2016
16:14:31
Это фрагмент из cloud-init, я вот сейчас смотрю и тут явно ключи указаны старые, для прошлого ca.pem

Там же kube-proxy поднят

Я чё-то не помню зачем)

на 8080

Maxim
26.08.2016
16:16:54
чочо?

какой кубепрокси на 8080

Denis
26.08.2016
16:17:25
а не, не так прочитал

там kube-apiserver

Maxim
26.08.2016
16:17:35
kube-proxy - это та штука, которая тебе на хостах iptables настраивает

Denis
26.08.2016
16:17:38
ExecStart=/opt/bin/kube-apiserver \ --allow-privileged=true \ --etcd-servers=http://127.0.0.1:2379 \ --secure-port=6443 \ --bind-address=0.0.0.0 \ --insecure-port=8080 \ --insecure-bind-address=0.0.0.0 \ --service-cluster-ip-range=10.100.0.0/24 \ --runtime-config=extensions/v1beta1=true,extensions/v1beta1/thirdpartyresources=true \ --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota \ --tls-cert-file=/etc/kubernetes/ssl/apiserver.pem \ --tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem \ --client-ca-file=/etc/kubernetes/ssl/ca.pem \ --service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem \ --kubelet-certificate-authority=/etc/kubernetes/ssl/ca.pem \ --kubelet-client-certificate=/etc/kubernetes/ssl/apiserver.pem \ --kubelet-client-key=/etc/kubernetes/ssl/apiserver-key.pem \ --service-node-port-range='70-32767' \ --logtostderr=true

Maxim
26.08.2016
16:17:43
она должна быть на всех нодах

Denis
26.08.2016
16:17:58
да, она на всех хостах, просто туда же смотрит на master:8080

Maxim
26.08.2016
16:18:10
--insecure-port=8080 \ --insecure-bind-address=0.0.0.0 \

Denis
26.08.2016
16:18:16
да

Maxim
26.08.2016
16:18:21
ты можешь сертификаты выкидывать

они тебе не нужны

Denis
26.08.2016
16:18:31
приехали

Google
Maxim
26.08.2016
16:18:46
ну я серьезно

ты всему миру разрешил входить в апи не представляясь

Denis
26.08.2016
16:19:59
не всё так просто :) там iptables только 80 и 443 разрешает с мира

Maxim
26.08.2016
16:20:19
я не об этом

Denis
26.08.2016
16:20:36
но надо выпилить insecure да?

Maxim
26.08.2016
16:20:58
те, кто может дойти до http://<apiserver>:8080, получают рут-акцесс до кубернетеса забесплатно

ну то есть внутри кластера тебе сертификаты не нужны

ты сам сделал их использование ненужным

Denis
26.08.2016
16:22:51
ок, тут дилемма - стоит ли разрешать доступ без сертификатов с других серверов кластера?

Admin
ERROR: S client not available

Denis
26.08.2016
16:23:01
вроде как нет

это может быть неустойчиво к man-in-the-middle атакам

Maxim
26.08.2016
16:24:27
не стоит конечно

более того, если ты решил развивать тему с аутентификацией посредством сертификатов, то выпускай уникальную пару для каждого сервера

с рестриктом по айпи

потому что отозвать, в случае чего, ты их не сможешь

Denis
26.08.2016
16:26:16
сейчас уже сертификаты уникальные для каждой машины

а как restrict по IP задать?

Maxim
26.08.2016
16:28:59
покажи openssl x509 -in /где/там/сертификат/любого/хоста.pem -text -noout|grep DNS

Denis
26.08.2016
16:29:22
а, ты про это

Google
Maxim
26.08.2016
16:29:40
?

Denis
26.08.2016
16:29:55
шаблон такой: [req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] IP.1 = \$ENV::MINION_IP EOL

Maxim
26.08.2016
16:30:09
а, во

то есть с другой машины этим сертификатом уже не воспользоваться

Denis
26.08.2016
16:30:39
фак-оф им всем :)

Maxim
26.08.2016
16:31:09
ну хоть так

Denis
26.08.2016
16:31:30
надо изменить параметры запуска apiserver тогда

Maxim
26.08.2016
16:31:34
ты там с кьюблетом-то разобрался на .18?

Denis
26.08.2016
16:31:35
как я понял

Maxim
26.08.2016
16:31:40
ну да

у меня там ... --bind-address=0.0.0.0 --secure-port=8443 --insecure-bind-address=127.0.0.1 --insecure-port=8080 ...

Denis
26.08.2016
16:33:40
сейчас в мануале COS: - apiserver - --bind-address=0.0.0.0 - --etcd-servers=${ETCD_ENDPOINTS} - --allow-privileged=true - --service-cluster-ip-range=${SERVICE_IP_RANGE} - --secure-port=443 - --advertise-address=${ADVERTISE_IP} - --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota - --tls-cert-file=/etc/kubernetes/ssl/apiserver.pem - --tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem - --client-ca-file=/etc/kubernetes/ssl/ca.pem - --service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem - --runtime-config=extensions/v1beta1=true,extensions/v1beta1/networkpolicies=true

у тебя тоже insecure?

Maxim
26.08.2016
16:34:15
у меня insecure только для локалхоста

а учитывая, что оно в контейнере, считай для никого

Denis
26.08.2016
16:34:56
а какого фига они тут тут apiserver в поде запускают? https://coreos.com/kubernetes/docs/latest/deploy-master.html

Maxim
26.08.2016
16:34:59
на самый критический случай чтобы можно было попасть в апи, когда вообще все сломается

у меня так же

# ls /etc/kubernetes/manifests/ addon-manager.yaml apiserver.yaml controller-manager.yaml etcd.yaml proxy.yaml scheduler.yaml

весь кубернетес стартует в контейнерах

Страница 19 из 958