
Alex Milushev
21.04.2018
17:34:06
есть еще вот такой вот биндинг, его разве не достаточно?
$ kubectl get clusterrolebindings system:node-proxier -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
creationTimestamp: 2018-04-20T20:23:23Z
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: system:node-proxier
resourceVersion: "96"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/system%3Anode-proxier
uid: acc5fed4-44d8-11e8-9b2e-12f98ec592fa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:node-proxier
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:kube-proxy

Mikhail
21.04.2018
17:40:13
а запускаете вы как kube-proxy?


Alex Milushev
21.04.2018
17:44:57
как статик pod:
apiVersion: v1
kind: Pod
metadata:
name: kube-proxy
namespace: kube-system
spec:
hostNetwork: true
containers:
- name: kube-proxy
image: gcr.io/google-containers/hyperkube-amd64:{{ k8s_hyperkube_tag }}
command:
- /hyperkube
- proxy
- --cluster-cidr={{ k8s_cluster_cidr }}
- --hostname-override={{ ansible_fqdn }}
- --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig
- -v=2
securityContext:
privileged: true
volumeMounts:
- mountPath: /etc/kubernetes/kube-proxy.kubeconfig
name: kube-proxy-kubeconfig
readOnly: true
- mountPath: /etc/kubernetes/ssl
name: kubernetes-ssl
readOnly: true
- mountPath: /etc/ssl/certs
name: etc-ssl-certs
readOnly: true
- mountPath: /usr/share/ca-certificates
name: usr-share-certs
readOnly: true
volumes:
- hostPath:
path: /etc/kubernetes/kube-proxy.kubeconfig
name: kube-proxy-kubeconfig
- hostPath:
path: /etc/kubernetes/ssl
name: kubernetes-ssl
- hostPath:
path: /etc/ssl/certs
name: etc-ssl-certs
- hostPath:
path: /usr/share/ca-certificates
name: usr-share-certs
---
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: /etc/kubernetes/ssl/ca.pem
server: https://{{ k8s_api_endpoint }}
name: {{ k8s_cluster_name }}
contexts:
- context:
cluster: {{ k8s_cluster_name }}
user: kube-prioxy
name: default
current-context: default
users:
- name: kube-proxy
user:
client-certificate: /etc/kubernetes/ssl/kube-proxy.pem
client-key: /etc/kubernetes/ssl/kube-proxy-key.pem

Google

Fike
21.04.2018
17:45:52
используйте, пожалуйста, сервисы вроде pastebin / x-paste / etc для длинных конфигов

Alex Milushev
21.04.2018
17:46:02
хорошо, простите

Mikhail
21.04.2018
17:46:35
/etc/kubernetes/ssl/kube-proxy.pem а тут у вас и ключ и серт как я понимаю и все там верно.

Alex Milushev
21.04.2018
17:47:02
cn: system:kube-proxy
хм, а не в этом ли проблема:
- name: kube-proxy
или это имя ни на что не влияет и не уходит api серверу?

Mikhail
21.04.2018
17:50:31
не должно
в логах апи сервера нет подсказок?

Alex Milushev
21.04.2018
17:54:57
ща буду смотреть, учитывая, что этот кластер Я задрачивал долго Я решил его снести и сделать с нуля, минут 15 и будет новый кластер, на нем и посмотрю
и еще, у меня докер 1.13.1-0~ubuntu-xenial, у для него надо с форвардингом приседать?

Mikhail
21.04.2018
18:00:25
проще проверить чем запомнить )

Alex Milushev
21.04.2018
18:01:23
ну он filter FORWARD в DROP ставит

Mikhail
21.04.2018
18:01:45
ну вот - значит нужны?

Alex Milushev
21.04.2018
18:02:57
ага

Google

Alex Milushev
21.04.2018
18:03:01
значит нужно

Сергей
21.04.2018
18:24:25
может лучше докер запускать с iptables=false

Alex Milushev
21.04.2018
18:46:41
может, но это уже когда стенд разверну, тогда и буду тестить
и да, есть смысл обновлять докер 1.13.1 и до какой версии если да?

Сергей
21.04.2018
19:01:43

Alex Milushev
21.04.2018
19:02:56
не подскажешь где найти этот список?
Я видел только не ниже какой-то версии и все

Сергей
21.04.2018
19:04:44
https://kubernetes.io/docs/getting-started-guides/scratch/#docker
ща

Banschikov
21.04.2018
19:04:54
Я видел только не ниже какой-то версии и все
On each of your machines, install Docker. Version v1.12 is recommended, but v1.11, v1.13 and 17.03 are known to work as well. Versions 17.06+ might work, but have not yet been tested and verified by the Kubernetes node team

Сергей
21.04.2018
19:04:57
какой релиз у тебя?
1.10?

Banschikov
21.04.2018
19:05:06

Сергей
21.04.2018
19:07:52
ну тебе уже ответили

Alex Milushev
21.04.2018
19:10:07
ок, у меня 1.13, емнип именно с докером на staging кластере проблем не было, так что живем
1.10?
ага, 1.10.1 если быть точнее

Сергей
21.04.2018
19:12:06
ну с 1.13 проблем не наблюдал
ну плюс

Google

Сергей
21.04.2018
19:12:38
set --iptables=false so docker will not manipulate iptables for host-ports (too coarse on older docker versions, may be fixed in newer versions) so that kube-proxy can manage iptables instead of docker.
--ip-masq=false
if you have setup PodIPs to be routable, then you want this false, otherwise, docker will rewrite the PodIP source-address to a NodeIP.
some environments (for example GCE) still need you to masquerade out-bound traffic when it leaves the cloud environment. This is very environment specific.
if you are using an overlay network, consult those instructions.

Alex Milushev
21.04.2018
19:13:33
да

Сергей
21.04.2018
19:13:49
cri-containerd не пробовал?

Banschikov
21.04.2018
19:14:12

Alex Milushev
21.04.2018
19:14:12
неа, думал, но отсутсвие адекватных пакетов меня парит
это рантайм контейнерный
замена раздутому докеру

Сергей
21.04.2018
19:14:42
лишнее выброшено

Banschikov
21.04.2018
19:15:02

Сергей
21.04.2018
19:15:05

Alex Milushev
21.04.2018
19:15:22
сначала с этим стендом закончу, потом уже буду тестить cri-containerd
там еще cri-o есть

Сергей
21.04.2018
19:16:54
ну и cri-containerd постабильнее будет

Alex Milushev
21.04.2018
19:17:14
ахз, Я пока туда вообще не лезу, оно ж бета по самое не балуй

Сергей
21.04.2018
19:18:28
ну cri-containerd - это containerd с совместимым апи cri

Alex Milushev
21.04.2018
19:18:43
ты сам кластер собираешь?
мне ж надо это дерьмо с hashicorp vault скрестить, у меня vault сертификаты генерит, туда-же секреты писать, а после тестов туда будут еще и инстансы из aws ags ходить и сами себе секреты вытягивать с сертификатами при скейлинге

Сергей
21.04.2018
19:19:28

Google

Alex Milushev
21.04.2018
19:19:48
короче, обмазываюсь со всех сторон: aws, ansible, terraform, vault, kubernetes, docker
но пока только через ansible и без кеширования, каждый раз при прогоне плейбука новый сертификат генерит
следующая тема — кеширование в тот же vault
что-бы не перегенеривать
а потом уже asg, но там кеширования не надо, оно и без него жить будет, только сборщик мусора, который ревокать будет старые сертификаты

Сергей
21.04.2018
19:22:22
ясно

Alex Milushev
21.04.2018
19:54:30
ну что, передеплоил кластер, все та же беда
kube-proxy не может авторизироваться для получения endpoints и services
static pod kube-proxy: https://pastebin.com/prTKs2ga
kubeconfig kube-proxy: https://pastebin.com/D5Edc0hK
certificate kube-proxy: https://pastebin.com/T41tiyzd
идей куда копать нет

bebebe
21.04.2018
20:02:40
вопрос со звездочко: а ктонибудь делал openwrt + zebra + bgp + metalb + flannel = loadbalancer на bm в домашних условиях?

Alex Milushev
21.04.2018
21:02:29
порешал проблему с kube-proxy, там было неправильноe имя юзера в kubeconfig,
было: kube-proxy
надо было: system:kube-proxy

Nik
22.04.2018
02:40:51

Banschikov
22.04.2018
05:49:46
Всем привет! Кто-нибудь логи микросервисов в k8s снимает с помощью Graylog?

Roman
22.04.2018
05:51:22
Мы делаем, но с помощью filebeat sidecar контейнера
Так же можно filebeat натравить на /var/lib/docker/*/logs тогда логи со всех контейнеров будут улетать

Banschikov
22.04.2018
05:55:39

Roman
22.04.2018
05:57:38
Здесь для ELK но суть та же. В грейлоге модуль ставится

Banschikov
22.04.2018
06:02:21

Google

Roman
22.04.2018
06:05:22
На сайте грейлога где то есть модули или расширения для файлбита, он позволяет создать filebeat input

Vlad
22.04.2018
07:28:26
Зачем filebeat если докер из коробки поддерживает отправку логов в graylog?

Banschikov
22.04.2018
07:32:44

Vlad
22.04.2018
07:33:39
Нужно обязательно включать кеширование, иначе при недоступности коллектора graylog контейнер подвиснет

Banschikov
22.04.2018
07:35:06

Vlad
22.04.2018
07:35:20
Да

Banschikov
22.04.2018
07:37:44
Да
Не совсем понимаю какой функционал выполняет кэш. Правильно понял в случае с кэшем, контейнер будет туда сбарсывать логи, а от туда они уже в грэйлог попадают? Если грейлог не доступен, то логи дальше продолжают писатся в кэш?

Vlad
22.04.2018
07:38:18
--log-opt mode=non-block
https://docs.docker.com/config/containers/logging/configure/#configure-the-logging-driver-for-a-container

Banschikov
22.04.2018
07:42:49
Но я так и не понимаю, не нарушит ли такой сбор логов экоситему кубера?

Vlad
22.04.2018
07:48:37
Не нарушит, но kubectl logs не будет работать

Banschikov
22.04.2018
07:49:57

Let Eat
22.04.2018
08:19:56

Alex Milushev
22.04.2018
08:24:06


Let Eat
22.04.2018
08:26:01
ну а по сути вопроса: включите audit log на apiserver и смотрите как kube-proxy ломится. Хотя лучше вообще перестать мучаться и поднимать инсталлером только ноды, etcd, kubelets, все остальное bootkube , тогда будет максимально self-hosted. например вот kube-proxy как daemonset: https://github.com/kubernetes-incubator/bootkube/blob/076b5434770d17f0e922dade82d00e7f7229f600/pkg/asset/internal/templates.go#L635-L702 и никакие сертификаты создавать/раскладывать не надо

Alex Milushev
22.04.2018
08:27:08
Кстати, вопрос в догонку про сервис аккаунт ключ и про ключи для подписывания на контроллере. Как Я понял сервисный это просто рандомный приватный ключ без подписи а вот насчет ключей для подписи Я так и не понял :(
Self-Hosted это уже следующий этап