
Maxim
26.08.2016
19:15:47
вечер пятницы
adventure^W deployment time

Denis
26.08.2016
19:16:00
:))))))

Maxim
26.08.2016
19:16:42
дада

Google

Maxim
26.08.2016
19:17:13
кстати еще один охуительный бонус от деплоя манифестами
ты просто обновляешь версию имаджа, типа так:
sed -i 's/1.3.5/1.3.6/g' /etc/kubernetes/manifests/*.yaml
и дальше kubelet все сделает за тебя
ну правда сам kubelet придется руками обновлять
но обновить один бинарь проще, чем обновить kubelet + apiserver + proxy + ....
интересно, кстати, что коммит с обновленным днсом в этот релиз не вошел
https://github.com/kubernetes/kubernetes/commit/1e7120f02cc39798eb3d2ac0a4e7e8c0e80792ca
только в мастере вон светится

Denis
26.08.2016
19:25:28
Видимо он ещё нестабилен
В идеале было бы подтягивать с гит-репы
Или иметь хотя бы такую возможность

Maxim
26.08.2016
19:26:09
ну у меня шеф почти так и делает

Google

Maxim
26.08.2016
19:26:38
у вас в кореосях шеф не работает, но можно заюзать анзибель, например
практиковать программирование на ямле

Denis
26.08.2016
19:27:26
У нас так Concourse делает для деплоя, когда после сборки docker images вызывает актуальный config yml в рамках пайплайна)
Ansible кажется монстром

Maxim
26.08.2016
19:59:52
$ kubectl version
...
Server Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.6" ...
прастити, не сдержался :D
бля
что за хуямба
# netstat -lpnt|grep hyper
...
tcp6 0 0 :::30900 :::* LISTEN 411/hyperkube
# ps -p 411 -o args
COMMAND
/hyperkube proxy --proxy-mode=iptables --kubeconfig=/etc/kubernetes/kubeconfig.yaml --log-dir=/var/log/kubernetes
# curl 0.0.0.0:30900
<a href="/graph">Found</a>.
# curl 0.0.0.0:30900/graph
...
<title>Prometheus Time Series Collection and Processing Server</title>
штоблять?..
$ kubectl get svc prometheus -o yaml
…
spec:
clusterIP: 10.222.29.130
ports:
- name: prometheus
nodePort: 30900
port: 9090
…
мистика
откуда взялся этот nodePort?..

Zon
26.08.2016
20:17:05
Смотри на свои манифесты)

Maxim
26.08.2016
20:20:12
почему-то сервис-тайпом у прометея оказался нодепорт
но в локальном-то сервис-файле там кластер-айпи
жесть какая-то

Google

Denis
26.08.2016
20:30:10
Максим, спасибо за величайшие советы :) Завтра утром попробую накатить))
Пока только часть переписал конфигов

Maxim
26.08.2016
20:30:29
> попробую накатить
береги печень!
;)
@DenisIzmaylov кстати
если ты будешь накатывать все с нуля, то тогда еще в apiserver.yaml добавь:
--storage-backend=etcd3
чтобы оно v2-storage даже и не инициализировало

Denis
27.08.2016
10:05:40
Всем доброе утро :)
Сегодня мы продолжаем историю, на которую вчера меня уговорил Максим - полный апдейт Kubernetes до 1.3.5 (pre-latest), всей модели хранения и запуска конфигурации. Cloud Config для CoreOS нод уже почти готов. Оставайтесь на связи и не переключайтесь. :)

Maxim
27.08.2016
10:15:07
s/1.3.5/1.3.6/g

Denis
27.08.2016
10:15:37
Ты прямо вот так сразу на последние версии всегда переезжаешь? :)

Maxim
27.08.2016
10:16:08
ну я ж не предлагаю тебе 1.4alpha3

Denis
27.08.2016
10:16:12
Меня JavaScript-экосистема научила держаться на pre-latest версиях :))
Я бы на 1.5 сразу, чтобы несколько мастеров

Maxim
27.08.2016
10:16:42
не вижу смысла не накатывать последний минорный релиз
там же багфиксы в основном

Denis
27.08.2016
10:17:34
Так у тебя же вчера оно Прометеус отвалило, как я понял? )

Maxim
27.08.2016
10:17:40
не
это по причине мудаков вчера было

Denis
27.08.2016
10:18:07
)))

Google

Maxim
27.08.2016
10:18:13
коллега манифест через kubectl edit поправил
в репу не положил
поэтому я и не знал про него


Denis
27.08.2016
10:24:57
вечная проблема, кстати, синхронизация реп / доков с рантайм конфигурациями
я сегодня выбрался даже в Coffee Bean на чистые пруды, чтобы сосредоточиться
чувствую день будет жарким)
так, всё cloud-configs готовы
[Service]
EnvironmentFile=/etc/environment
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests
ExecStartPre=/usr/bin/curl -L -o /opt/bin/kubelet -z /opt/bin/kubelet https://storage.googleapis.com/kubernetes-release/release/v1.3.6/bin/linux/amd64/kubelet
ExecStartPre=/usr/bin/chmod +x /opt/bin/kubelet
ExecStart=/opt/bin/kubelet \
--address=${COREOS_PRIVATE_IPV4} \
--port=10250 \
--hostname-override=${COREOS_PRIVATE_IPV4} \
--allow-privileged=true \
--logtostderr=true \
--cadvisor-port=4194 \
--healthz-bind-address=0.0.0.0 \
--cluster-dns=${DNS_PRIVATE_IPV4} \
--cluster-domain="kube.local" \
--healthz-port=10248 \
--config=/etc/kubernetes/manifests
--kubeconfig=/etc/kubernetes/kube-config.yaml
Restart=always
RestartSec=10

Admin
ERROR: S client not available

Denis
27.08.2016
10:29:17
заряжаю манифесты

Maxim
27.08.2016
10:30:03
/usr/bin/curl -L -o /opt/bin/kubelet -z /opt/bin/kubelet ...
не делай так

Denis
27.08.2016
10:30:36
ещё кстати заметил у тебя есть блок users в kubeconfig.yml, он должен совпадать с пользователем по умолчанию или как?
вроде же https

Maxim
27.08.2016
10:32:32
mkdir -p /opt/kubernetes/${K8S_VERSION}/bin
usr/bin/curl -L -o /opt/kubernetes/${K8S_VERSION}/bin/kubelet \
https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/kubelet
ln -nsf /opt/kubernetes/${K8S_VERSION}/bin/kubelet /opt/bin/kubelet
вот так лучше сделай

Denis
27.08.2016
10:32:48
а, ты про версию?

Maxim
27.08.2016
10:32:57
не только про версию

Denis
27.08.2016
10:32:57
а, ещё и директорию
))

Google

Denis
27.08.2016
10:33:48
immutable kubelet

Maxim
27.08.2016
10:34:05
так в /opt/bin/kubelet у тебя всегда будет симлинк на актуальную версию
и ты не будешь нарываться на херню, когда тебе wget запишет файл /opt/bin/kubelet.1
или curl скажет, что файл мол запущен, не буду заменять

Denis
27.08.2016
10:35:12
а ln такого не скажет?

Maxim
27.08.2016
10:35:19
а так файлы каждый раз уникальные, а симлинкам на все похер
они ж симлинки

Denis
27.08.2016
10:35:26
кайф
крутизна 80lvl
luxury

Maxim
27.08.2016
10:36:06
фубля


Denis
27.08.2016
10:39:50
[Service]
EnvironmentFile=/etc/environment
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests
ExecStartPre=mkdir -p /opt/kubernetes/${K8S_VERSION}/bin
ExecStartPre=/usr/bin/curl -L -o /opt/kubernetes/${K8S_VERSION}/bin/kubelet \
https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/kubelet
ExecStartPre=/usr/bin/chmod +x /opt/kubernetes/${K8S_VERSION}/bin/kubelet
ExecStartPre=/usr/bin/ln -nsf /opt/kubernetes/${K8S_VERSION}/bin/kubelet /opt/bin/kubelet
ExecStart=/opt/bin/kubelet \
--address=${COREOS_PRIVATE_IPV4} \
--port=10250 \
--hostname-override=${COREOS_PRIVATE_IPV4} \
--allow-privileged=true \
--logtostderr=true \
--cadvisor-port=4194 \
--healthz-bind-address=0.0.0.0 \
--cluster-dns=${DNS_PRIVATE_IPV4} \
--cluster-domain="kube.local" \
--healthz-port=10248 \
--config=/etc/kubernetes/manifests
--kubeconfig=/etc/kubernetes/kube-config.yaml
Restart=always
RestartSec=10

Maxim
27.08.2016
10:40:29
типа того, да

Denis
27.08.2016
10:40:48
"пользователь по-умолчанию" = в coreos это пользователь coreos :)
т.е. я к тому, что это должно совпадать с чем-то?
а всё вижу
мы же default-context указываем, а в нём для контекста кластер и пользователя