
Denis
25.08.2016
07:56:31
Есть дружественная группа @puppet_ru

Andrey
25.08.2016
07:58:02
странно что нет дружественной группы @ansible_ru : по-моему дискриминация по признаку дружественности

Alexander
25.08.2016
08:00:57
жаль, что saltstack_ru
нет

Google

Alexander
25.08.2016
08:01:47
всего лишь нужно положить его на Ceph, как я понимаю
ну и тогда он будет общим для всего кластера
и, разумеется, Ceph должен будет подключаться к серверу раньше, чем будут стартаповать эти Rkt контейнеры


Andrey
25.08.2016
08:03:12
во, а я по сабжу еще спрошу - не факт что ответят, но может кто увидит вопросы и захочет на какой-нибудь из них нааписать ответ, будет клево :)
в общем, пока играюсь - запустил пару кластеров на локальных машинах и в GKE, щас хочу стажинг переводить и смотреть как себя ведет, наверное документацию плохо пролистал но не нашел ответа или нашел только размытые на такие вопросы:
1) какие полезные юзкейсы у job
2) чем ingress лучше кастомного nginx
3) чем принципиально petset отличается от pod
4) как можно заюзать component statuses в своей инфраструктуре и полезно ли это вообще
5) что такое events и с чем их едят
6) по каким правилам будет действовать несколько limitrages/resourcequotas в одном неймспейсе
7) возможноые юзкейсы serviceaccounts в продакшн-ркди кластерах
Ну скажите ченить ... )

Тимур
25.08.2016
13:18:05
я тоже жду :)
все ждут ))

Fike
25.08.2016
13:18:30
> какие полезные юзкейсы у job
одноразовые калькуляции, например, у тебя кто-то в базе данных напортачил и тебе надо запустить скрипт, меняющий 0 на null
> чем ingress лучше кастомного nginx
главным образом переносом ответственности, но (насколько понял) он еще в альфе и это скорее проверка гипотезы чем то, чем уже стоит пользоваться
> чем принципиально petset отличается от pod
от replication controller/set, скорее. pet set может минимально конфигурировать окружение для себя и фиксирует названия подов
вот еще вопрос из министерства дурацких вопросов: я же не могу сделать port mapping внутри пода (сделать так, чтобы порт X пода соответствовал порту Y контейнера, -p aa:bb при обычном workflow докера), только открыть порт пода, соответствующий порту контейнера?


Denis
25.08.2016
14:12:05
Не пойму, что за проблема может быть - kube-dns висит в состоянии:
kube-dns-v18-wz37g 2/3 CrashLoopBackOff 798 13d
При это describe говорит примерно следующее:
...
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
1d 2m 760 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Normal Started (events with common reason combined)
1d 2m 769 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Normal Pulled Container image "gcr.io/google_containers/kubedns-amd64:1.6" already present on machine
1d 2m 760 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Normal Created (events with common reason combined)
1d 1m 760 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Normal Killing (events with common reason combined)
1d 1m 3076 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Warning Unhealthy Readiness probe failed: Get http://yy.yy.yy.yy:8081/readiness: dial tcp yy.yy.yy.yy:8081: connection refused
1d 1m 769 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Warning Unhealthy Liveness probe failed: HTTP probe failed with statuscode: 503
1d 5s 9393 {kubelet xx.xx.xx.xx} spec.containers{kubedns} Warning BackOff Back-off restarting failed docker container
1d 5s 9371 {kubelet xx.xx.xx.xx} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "kubedns" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=kubedns pod=kube-dns-v18-wz37g_kube-system(552d0562-5fe1-11e6-a399-44a842348b74)"


Fike
25.08.2016
14:12:40
посмотри в статусе последнее состояние, возможно, OOM почему-то случается
у меня так в свое время дэшборд упал

Google

Maxim
25.08.2016
14:14:34
kubectl logs --namespace=kube-system kube-dns-v18-wz37g -c kubedns
показывает что-нибудь?

Denis
25.08.2016
14:14:57
5 сек
Error from server: a container name must be specified for pod kube-dns-v18-wz37g, choose one of: [kubedns dnsmasq healthz]
ого
много всякого

Maxim
25.08.2016
14:16:25
гистуй

Denis
25.08.2016
14:16:44
E0825 14:12:50.249289 1 reflector.go:216] pkg/dns/dns.go:155: Failed to list *api.Service: Get https://zz.zz.zz.zz:443/api/v1/services?resourceVersion=0: x509: certificate signed by unknown authority
Я думаю вот это самое важное)

Maxim
25.08.2016
14:16:52
дада

Denis
25.08.2016
14:17:01
так сказать определяющее

Maxim
25.08.2016
14:17:10
днс до апишечки дойти не может

Denis
25.08.2016
14:17:12
факоф-фактор
атата

Maxim
25.08.2016
14:17:33
а значит, у тебя неверно формируется дефолт-сикрет
нука покажика kubectl get secrets --namespace=kube-system
и пропал

Denis
25.08.2016
14:23:27
Я здесь
Я не пропал

Andrey
25.08.2016
14:24:07

Maxim
25.08.2016
14:24:20
ггг

Google

Denis
25.08.2016
14:25:04
))
Но вроде всё ок там

Maxim
25.08.2016
14:25:17
что ок?

Denis
25.08.2016
14:25:19
# kubectl get secrets —namespace=kube-system
NAME TYPE DATA AGE
basic-auth Opaque 1 24d
default-token-ngexf kubernetes.io/service-account-token 3 33d
frontend-kube-tls kubernetes.io/tls 2 24d

Maxim
25.08.2016
14:26:01
в дефолт-токене всего один элемент в Data?

Denis
25.08.2016
14:27:46
Да :)
# kubectl describe secret default-token-ngexf --namespace=kube-system
Name: default-token-ngexf
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=default,kubernetes.io/service-account.uid=065d205b-5027-11e6-b525-44a842348b74
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1099 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsInR...
Надо туда ключ добавить ca.pem?

Maxim
25.08.2016
14:28:24
нене, вот же он
ca.crt: 1099 bytes
а это точно тот самый сертификат?
нука вынь его оттуда и разюючь
kubectl get secret default-token-ngexf --namespace=kube-system -o yaml --export

Maxim
25.08.2016
14:30:49
там будет что-то типа:
apiVersion: v1
data:
ca.crt: <многабукаф>
...
вот эти многабукаф копипасти в какой-нить файл

Denis
25.08.2016
14:31:19
Так
А зачем ?

Maxim
25.08.2016
14:31:33
и делай cat /куда/ты/там/накопипастил | base64 -D
в итоге будет снова многабукаф, но уже другого вида

Denis
25.08.2016
14:32:35
И что с этими буквами сделать?

Maxim
25.08.2016
14:32:47
нужно будет убедиться, что эти буквы - буква в букву - совпадают с твоим публичным ключем от CA

Google

Denis
25.08.2016
14:33:39
Вот это поворот

Maxim
25.08.2016
14:33:46
?
не совпадают?

Denis
25.08.2016
14:35:20
6 сек

Maxim
25.08.2016
14:55:34
совпадает с имеющимся?

Denis
25.08.2016
14:56:30
И он идентичен с тем, что на kube-apiserver (/etc/kubernetes/ssl/ca.pem)

Maxim
25.08.2016
14:56:41
ага
ну тогда делай как я

Denis
25.08.2016
14:58:08
это как?)

Admin
ERROR: S client not available

Maxim
25.08.2016
14:58:21
https://gist.github.com/Bregor/dbb337e9a3e7b7ba6274d02e78a305bf
вот так
обрати внимание на volumes
добавил kubeconfig.yaml в гист
https://gist.github.com/Bregor/dbb337e9a3e7b7ba6274d02e78a305bf#file-kubeconfig-yaml

Denis
25.08.2016
15:03:58
Ого, спасибо, не слишком ли hackeable? :)

Maxim
25.08.2016
15:04:31
тебе шашечки или ехать?

Denis
25.08.2016
15:04:34
Это из за чего такая проблема?
Мне ехать и быстро ))

Google

Maxim
25.08.2016
15:04:54
ну что за вопросы тогда
проблема такая где-то в недрах днса
ты можешь взять любой под и убедиться в том, что сертификат примонтирован
вот так:
kubectl exec -it <pod> cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

Denis
25.08.2016
15:07:55
Вот это да
https://coreos.com/kubernetes/docs/latest/deploy-addons.html
это вот оно да?

Maxim
25.08.2016
15:10:18
если у тебя в каком-нить контейнере есть curl, то сделай дополнительную проверку:
kubectl exec -it <pod-with-curl> curl https://<apiserver>:443/
# тут должна быть ошибка про х509
kubectl exec -it <pod-with-curl> curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://<apiserver>:443/
# теперь должно стать "unauthorized"
если в обоих случаях будет про х509, то значит ты косо настроил аписервер

Denis
25.08.2016
15:12:10
А вот сейчас и проверим :) насколько это всё было по японски)
Unauthorized ?

Maxim
25.08.2016
15:17:54
Угу
Ну тогда делай как я

Denis
25.08.2016
15:46:20
Максим, а можешь рассказать, как это работает?
volumes:
- name: ssl-certs-kubernetes
hostPath:
path: /etc/kubernetes/ssl
- name: kubeconfig
hostPath:
path: /etc/kubernetes/kubeconfig.yaml

Maxim
25.08.2016
15:46:49
прям по мануалу
монтирует папки с дисков

Denis
25.08.2016
15:47:28
странно, что в CoreOS-мануале этого нет
Там оно через etcdпохоже

Maxim
25.08.2016
15:47:50
ну у них не принято на диски файлы раскладывать
доставлять-то нечем
хотя я не знаю, как они без этого kubelet'ы запускают
им же тоже нужны ключи
так что как-то они их доставили