Denis
да вроде жив
Denis
docker ps -a выдаёт список активных контейнеров
Maxim
облин, а до тлс я не дочитал
Maxim
извиняюсь
Maxim
показывай параметры запуска кьюблета
Maxim
только с другого хоста уже ;)
Maxim
ps -p `pgrep kubelet` -o args
Etki
ключевая аномалия у тебя какая-то там
Maxim
а все потому, что кто-то ленится читать мануалы до конца ;)
Maxim
еще и вместо официальных читает короосные
Maxim
если внимательно почитать официальную документацию в части аутентификации: http://kubernetes.io/docs/admin/authentication/
Denis
ключевая аномалия у тебя какая-то там
Самая жесть, что она на ровном месте образовалась, после kubectl apply -f одного из подов приложения.
Maxim
то станет понятно, что городить весь этот хитрый SSL-огород вовсе необязательно
Maxim
и можно ограничиться публичной частью CA и токеном
Denis
даже так
Denis
ps -p `pgrep kubelet` -o args
Крутая команда, но в CoreOS пишет error: process ID list syntax error :)
Maxim
там ps из бизибокса чтоли?
Denis
Не исключено :)
Maxim
ну короче, покажи, как запускается кьюблет
Denis
Конкретно на этой машине: 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
Maxim
эээ
Maxim
а почему 8080?
Maxim
ты к апишечке по plain-http идешь?
Denis
Это фрагмент из cloud-init, я вот сейчас смотрю и тут явно ключи указаны старые, для прошлого ca.pem
Denis
Там же kube-proxy поднят
Denis
Я чё-то не помню зачем)
Denis
на 8080
Maxim
чочо?
Maxim
какой кубепрокси на 8080
Denis
а не, не так прочитал
Denis
там kube-apiserver
Maxim
kube-proxy - это та штука, которая тебе на хостах iptables настраивает
Denis
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
она должна быть на всех нодах
Denis
да, она на всех хостах, просто туда же смотрит на master:8080
Maxim
--insecure-port=8080 \ --insecure-bind-address=0.0.0.0 \
Denis
да
Maxim
ты можешь сертификаты выкидывать
Maxim
они тебе не нужны
Denis
приехали
Maxim
ну я серьезно
Maxim
ты всему миру разрешил входить в апи не представляясь
Denis
не всё так просто :) там iptables только 80 и 443 разрешает с мира
Maxim
я не об этом
Denis
но надо выпилить insecure да?
Maxim
те, кто может дойти до http://<apiserver>:8080, получают рут-акцесс до кубернетеса забесплатно
Maxim
ну то есть внутри кластера тебе сертификаты не нужны
Maxim
ты сам сделал их использование ненужным
Denis
ок, тут дилемма - стоит ли разрешать доступ без сертификатов с других серверов кластера?
Denis
вроде как нет
Denis
это может быть неустойчиво к man-in-the-middle атакам
Maxim
не стоит конечно
Maxim
более того, если ты решил развивать тему с аутентификацией посредством сертификатов, то выпускай уникальную пару для каждого сервера
Maxim
с рестриктом по айпи
Maxim
потому что отозвать, в случае чего, ты их не сможешь
Denis
сейчас уже сертификаты уникальные для каждой машины
Denis
а как restrict по IP задать?
Maxim
покажи openssl x509 -in /где/там/сертификат/любого/хоста.pem -text -noout|grep DNS
Denis
а, ты про это
Maxim
?
Denis
шаблон такой: [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
а, во
Maxim
то есть с другой машины этим сертификатом уже не воспользоваться
Denis
фак-оф им всем :)
Maxim
ну хоть так
Denis
надо изменить параметры запуска apiserver тогда
Maxim
ты там с кьюблетом-то разобрался на .18?
Denis
как я понял
Maxim
ну да
Maxim
у меня там ... --bind-address=0.0.0.0 --secure-port=8443 --insecure-bind-address=127.0.0.1 --insecure-port=8080 ...
Denis
сейчас в мануале 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
Denis
у тебя тоже insecure?
Maxim
у меня insecure только для локалхоста
Maxim
а учитывая, что оно в контейнере, считай для никого
Denis
а какого фига они тут тут apiserver в поде запускают? https://coreos.com/kubernetes/docs/latest/deploy-master.html
Maxim
на самый критический случай чтобы можно было попасть в апи, когда вообще все сломается
Maxim
у меня так же
Maxim
# ls /etc/kubernetes/manifests/ addon-manager.yaml apiserver.yaml controller-manager.yaml etcd.yaml proxy.yaml scheduler.yaml
Maxim
весь кубернетес стартует в контейнерах