Maksim
а что для подов
Denis
flannel
Denis
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
а настройкик аписервера
Maksim
для сервисов
Denis
а где их посмотреть?)
Maksim
у тебя сервисы то 10.95 то 10.106
𝚔𝚟𝚊𝚙𝚜
Расскажите какова логика удаления PersistentVolume? При удалении его из k8s должен ли драйвер обрабатывать это действие, и физически удалять Volume из хранилки?
Maksim
да и поды почему то то 244 то 226
Denis
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
Denis
- --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
ну круто
Maksim
ну теперь я примерно понимаю твою топологию
Maksim
отлично теперь поехали дебажить dns
Maksim
nslookup consul.sso.svc.cluster.local 10.96.0.10
Denis
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
nslookup consul.sso.svc.cluster.local 10.96.0.10
Denis
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
а где ты не видишь consul ?
Maksim
в подах?
Maksim
можешь дать kubectl exec <под который не видит consul> — cat /etc/resolv.conf
Denis
[root@openam /]# cat /etc/resolv.conf nameserver 10.96.0.10 search sso.svc.cluster.local svc.cluster.local cluster.local options ndots:5
Denis
внтури пода
Denis
[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
Maksim
а пинг и не должен работать..icmp не пробрасывается
Maksim
правда резолва я то же не вижу
Denis
[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
а может ли telnet по кратким именам?
Denis
да, почему нет?
Maksim
так а попробуй fqdn
Maksim
ping consul.sso.svc.cluster.local
Maksim
из пода
Denis
[root@openam /]# ping consul.sso.svc.cluster.local ^C [root@openam /]# telnet consul.sso.svc.cluster.local 8500 ^C
Denis
пусто
Maksim
оки
Maksim
telnet 10.96.0.10 53
Denis
[root@openam /]# telnet 10.96.0.10 53 Trying 10.96.0.10...
Maksim
вот и ответ
Maksim
ping 10.244.0.184
Denis
kube-dns только на определенный namespace?
Maksim
В теории нет
Maksim
там зависит от ключей при старте
Maksim
ну и от настроек SDN
Maksim
и netwrokpolixy
Denis
ок спасибо, буду думать
Maksim
ping 10.244.0.184
Maksim
из пода-)
Maksim
я не закончил тебя мучать
Maksim
/
Denis
не пингует [root@openam /]# ping 10.244.0.184 PING 10.244.0.184 (10.244.0.184) 56(84) bytes of data. ^C
Maksim
ооо
Maksim
это под с dns
Maksim
У тебя нет сетевой связанности между подами
Denis
может попробывать его в kube-system запихнуть
Й
[root@openam /]# telnet 10.96.0.10 53 Trying 10.96.0.10...
Вы к udp порту пытаетесь подключиться по tcp
Maksim
Спасибо за аналитику....только там нет сетевой связанности от пода с днс до пода с openam
Maksim
А вообще там два типа и udp и tcp
Maksim
На ДНС и оба 53-)
Maksim
Ну это так)
Maksim
udp порт резолва tcp порт обмена зонами
Andor
не совсем правда
Andor
но не принципиально
Anton
https://kubernetes.io/docs/concepts/storage/storage-classes/
Anton
ну и в statefulset pvc не удаляются автоматом, это помните думаю
𝚔𝚟𝚊𝚙𝚜
да, но вопрос был скорее про pv, а не про pvc, то есть если я делаю kubectl delete pv <my_volume>должен ли provisioner отработать это действие и удалить этот том непосредственно в моем хранилище?
Anton
шашечки и поездка
снаряжать авианосец ради поездки дамы с собачкой это не про шашечки
Etki
дама с собачкой вот уже второй день как могла отплыть
Denis
У тебя нет сетевой связанности между подами
Спасибо получилось победить, убрал в сервисе NodePort, и сервисы стали резолвится. Единственное осталось с присвоением домена 3-ого уровня, пример consul.example.com ( example.com ) - где его прописать можно?
Maksim
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns
MRY
Всем привет
MRY
Я все с той же проблемой воюю
MRY
Никак не могу победить сертификаты для etcd
MRY
Делал уже по оф гайду
MRY
https://kubernetes.io/docs/setup/independent/high-availability/
MRY
Никак не принимает