
Denis
21.03.2018
11:27:42
есть все работает

Maksim
21.03.2018
11:27:48
дай kube-system
и сделай в него nslookup consul.sso.svc.cluster.local
и конфиг кублета

Google

Denis
21.03.2018
11:29:15
NAME READY STATUS RESTARTS AGE IP
etcd-dev-kbr01.mgts.corp.net 1/1 Running 0 5d 10.226.212.117
kube-apiserver-dev-kbr01.mgts.corp.net 1/1 Running 0 5d 10.226.212.117
kube-controller-manager-dev-kbr01.mgts.corp.net 1/1 Running 0 5d 10.226.212.117
kube-dns-6f4fd4bdf-25hlm 3/3 Running 0 5d 10.244.0.184
kube-flannel-ds-4bntd 2/2 Running 0 5d 10.226.212.117
kube-flannel-ds-6znwh 2/2 Running 0 5d 10.226.212.165
kube-proxy-d9kdk 1/1 Running 0 5d 10.226.212.165
kube-proxy-l4bgq 1/1 Running 0 5d 10.226.212.117
kube-scheduler-dev-kbr01.mgts.corp.net 1/1 Running 0 5d 10.226.212.117
kubernetes-dashboard-84d9c99896-5bbrt 1/1 Running 0 5d 10.244.0.183

Maksim
21.03.2018
11:30:08
А сервис где?

Denis
21.03.2018
11:30:48
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 5d
kubernetes-dashboard NodePort 10.105.136.228 10.226.212.117 443:30579/TCP 5d

Maksim
21.03.2018
11:32:24
конфу сетей..

Denis
21.03.2018
11:33:20
cat flannel-rbac.yaml
# Create the clusterrole and clusterrolebinding:
# $ kubectl create -f kube-flannel-rbac.yml
# Create the pod using the same namespace used by the flannel serviceaccount:
# $ kubectl create --namespace kube-system -f kube-flannel.yml
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: flannel
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- ""
resources:
- nodes
verbs:
- list
- update
- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: flannel
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: flannel
subjects:
- kind: ServiceAccount
name: flannel
namespace: kube-system

Maksim
21.03.2018
11:33:32
это не то
нужно конфа сетей. что ты используешься для сервисов
а что для подов


Denis
21.03.2018
11:34:03
flannel
cat flannel.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"type": "flannel",
"delegate": {
"isDefaultGateway": true
}
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: kube-flannel-ds
namespace: kube-system
labels:
tier: node
app: flannel
spec:
template:
metadata:
labels:
tier: node
app: flannel
spec:
hostNetwork: true
nodeSelector:
beta.kubernetes.io/arch: amd64
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
serviceAccountName: flannel
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
securityContext:
privileged: true
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run
- name: flannel-cfg
mountPath: /etc/kube-flannel/
- name: install-cni
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg


Maksim
21.03.2018
11:34:54
а настройкик аписервера
для сервисов

Denis
21.03.2018
11:36:53
а где их посмотреть?)

Google

Maksim
21.03.2018
11:37:08
у тебя сервисы то 10.95 то 10.106

kvaps
21.03.2018
11:37:28
Расскажите какова логика удаления PersistentVolume?
При удалении его из k8s должен ли драйвер обрабатывать это действие, и физически удалять Volume из хранилки?

Maksim
21.03.2018
11:37:34
да и поды почему то то 244 то 226


Denis
21.03.2018
11:39:13
apiVersion: v1
kind: Pod
metadata:
annotations:
kubernetes.io/config.hash: a17606eeb7a12d8324b7525b083b03ec
kubernetes.io/config.mirror: a17606eeb7a12d8324b7525b083b03ec
kubernetes.io/config.seen: 2018-03-16T04:18:30.084705002+03:00
kubernetes.io/config.source: file
scheduler.alpha.kubernetes.io/critical-pod: ""
creationTimestamp: 2018-03-16T01:20:07Z
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver-dev-kbr01
namespace: kube-system
resourceVersion: "404"
selfLink: /api/v1/namespaces/kube-system/pods/kube-apiserver-dev-kbr01
uid: 29a9e7b0-28b8-11e8-a2c0-0050568c28f4
spec:
containers:
- command:
- kube-apiserver
- --allow-privileged=true
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
- --advertise-address=10.226.212.117
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
- --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
- --service-cluster-ip-range=10.96.0.0/12
- --secure-port=6443
- --insecure-port=0
- --enable-bootstrap-token-auth=true
- --requestheader-username-headers=X-Remote-User
- --requestheader-group-headers=X-Remote-Group
- --requestheader-extra-headers-prefix=X-Remote-Extra-
- --requestheader-allowed-names=front-proxy-client
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
- --authorization-mode=Node,RBAC
- --etcd-servers=http://127.0.0.1:2379
env:
image: gcr.io/google_containers/kube-apiserver-amd64:v1.9.4
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 8
httpGet:
host: 10.226.212.117
path: /healthz
port: 6443
scheme: HTTPS
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 15
name: kube-apiserver
resources:
requests:
cpu: 250m
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/kubernetes/pki
name: k8s-certs
readOnly: true
- mountPath: /etc/ssl/certs
name: ca-certs
readOnly: true
- mountPath: /etc/pki
name: ca-certs-etc-pki
readOnly: true
dnsPolicy: ClusterFirst
hostNetwork: true
nodeName: dev-kbr01
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
operator: Exists
spec:
containers:
- command:
- kube-apiserver
- --allow-privileged=true
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
- --advertise-address=10.226.212.117
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
- --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
- --service-cluster-ip-range=10.96.0.0/12
- --secure-port=6443
- --insecure-port=0
- --enable-bootstrap-token-auth=true
- --requestheader-username-headers=X-Remote-User
- --requestheader-group-headers=X-Remote-Group
- --requestheader-extra-headers-prefix=X-Remote-Extra-
- --requestheader-allowed-names=front-proxy-client
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
- --authorization-mode=Node,RBAC
- --etcd-servers=http://127.0.0.1:2379
env:
image: gcr.io/google_containers/kube-apiserver-amd64:v1.9.4
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 8
httpGet:
host: 10.226.212.117
path: /healthz
port: 6443
scheme: HTTPS


Maksim
21.03.2018
11:39:42
ну круто

bebebe
21.03.2018
11:40:58

Denis
21.03.2018
11:41:16

Maksim
21.03.2018
11:41:36
ну теперь я примерно понимаю твою топологию
отлично теперь поехали дебажить dns
nslookup consul.sso.svc.cluster.local 10.96.0.10

Denis
21.03.2018
11:43:01
nslookup kubernetes.default.svc.cluster.local 10.96.0.10
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.96.0.1

Maksim
21.03.2018
11:43:25
nslookup consul.sso.svc.cluster.local 10.96.0.10

Denis
21.03.2018
11:43:38
nslookup consul.sso.svc.cluster.local 10.96.0.10
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: consul.sso.svc.cluster.local
Address: 10.102.125.25

Maksim
21.03.2018
11:50:27
а где ты не видишь consul ?
в подах?
можешь дать kubectl exec <под который не видит consul> — cat /etc/resolv.conf

Denis
21.03.2018
11:53:26
[root@openam /]# cat /etc/resolv.conf
nameserver 10.96.0.10
search sso.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
внтури пода
[root@openam /]# ping consul
^C
[root@openam /]# env|grep CONSUL
CONSUL_SERVICE_PORT_CONSUL=8500
CONSUL_SERVICE_HOST=10.102.125.25
CONSUL_PORT_8500_TCP_ADDR=10.102.125.25
CONSUL_PORT_8500_TCP=tcp://10.102.125.25:8500
CONSUL_PORT_8500_TCP_PORT=8500
CONSUL_PORT_8500_TCP_PROTO=tcp
CONSUL_PORT=tcp://10.102.125.25:8500
CONSUL_SERVICE_PORT=8500

Google

Maksim
21.03.2018
11:55:00
а пинг и не должен работать..icmp не пробрасывается
правда резолва я то же не вижу

Denis
21.03.2018
11:55:14
[root@openam /]# telnet 10.102.125.25 8500
Trying 10.102.125.25...
Connected to 10.102.125.25.
Escape character is '^]'.
^Cquit
Connection closed by foreign host.
[root@openam /]# telnet consul 8500
^C

Maksim
21.03.2018
11:56:37
а может ли telnet по кратким именам?

Denis
21.03.2018
11:57:16
да, почему нет?

Maksim
21.03.2018
11:57:18
так а попробуй fqdn
ping consul.sso.svc.cluster.local
из пода

Denis
21.03.2018
11:58:41
[root@openam /]# ping consul.sso.svc.cluster.local
^C
[root@openam /]# telnet consul.sso.svc.cluster.local 8500
^C
пусто

Maksim
21.03.2018
11:58:53
оки
telnet 10.96.0.10 53

Denis
21.03.2018
11:59:57
[root@openam /]# telnet 10.96.0.10 53
Trying 10.96.0.10...

Maksim
21.03.2018
12:00:16
вот и ответ
ping 10.244.0.184

Fike
21.03.2018
12:00:46

Denis
21.03.2018
12:00:51
kube-dns только на определенный namespace?

Maksim
21.03.2018
12:01:07
В теории нет
там зависит от ключей при старте
ну и от настроек SDN

Google

Maksim
21.03.2018
12:01:46
и netwrokpolixy

Denis
21.03.2018
12:02:57
ок спасибо, буду думать

Maksim
21.03.2018
12:03:23
ping 10.244.0.184
из пода-)
я не закончил тебя мучать
/

Denis
21.03.2018
12:04:04
не пингует
[root@openam /]# ping 10.244.0.184
PING 10.244.0.184 (10.244.0.184) 56(84) bytes of data.
^C

Maksim
21.03.2018
12:04:32
ооо
это под с dns
У тебя нет сетевой связанности между подами

Denis
21.03.2018
12:04:55
может попробывать его в kube-system запихнуть

Vasilyev
21.03.2018
12:05:00

Maksim
21.03.2018
12:06:26
Спасибо за аналитику....только там нет сетевой связанности от пода с днс до пода с openam
А вообще там два типа и udp и tcp
На ДНС и оба 53-)
Ну это так)
udp порт резолва tcp порт обмена зонами

Andor
21.03.2018
12:08:39
не совсем правда
но не принципиально

Anton
21.03.2018
12:09:33

Google

Anton
21.03.2018
12:09:35
https://kubernetes.io/docs/concepts/storage/storage-classes/
ну и в statefulset pvc не удаляются автоматом, это помните думаю

kvaps
21.03.2018
12:14:09
да, но вопрос был скорее про pv, а не про pvc, то есть если я делаю
kubectl delete pv <my_volume>должен ли provisioner отработать это действие и удалить этот том непосредственно в моем хранилище?

Anton
21.03.2018
12:19:26

Fike
21.03.2018
12:19:58
дама с собачкой вот уже второй день как могла отплыть

Denis
21.03.2018
14:06:49
У тебя нет сетевой связанности между подами
Спасибо получилось победить, убрал в сервисе NodePort, и сервисы стали резолвится.
Единственное осталось с присвоением домена 3-ого уровня, пример consul.example.com ( example.com ) - где его прописать можно?

Maksim
21.03.2018
14:07:38
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns