30歳以上の方のためのKubernetes。NikolaySivko(2018)



ある時点で、okmeter.ioは、CI / CDさえ持っていなくても、本番環境でk8も必要であることに気付きましたが、アプリケーション間で共通のサーバープールを共有するタスクがあり、クラスターに容量を追加するのは非常に簡単です。同時に、k8の実装を複雑にするいくつかの状況がありました。



  • 私たちはフォールトトレランスを非常に重視しています(十分なレベルで理解するまで、新しいテクノロジーを製品にドラッグしません)。
  • 応答時間が10ミリ秒未満のサービスがあります。
  • このタスクに必要な人的資源はほとんどありません(10個の新しいOK用語を学習し、50個はもう学習しません)。




: 2018 , issue .





. Okmeter.io. . , . , . .





?



, , , , – .



Kubernetes.





.



Okmeter.io. :



  • , , , auto discovery.
  • , .


:



  • , , . . , . Python Go.
  • - , . Kafka, Cassandra, Elasticsearch, PostgreSQL.
  • . , , latency. .
  • DevOps , CI/CD, pipeline. , .
  • . , ( ), . , . read , . . , , .
  • , , , , – , 2 , , , .
  • .




, .



Google App Engine. . , . .



, , . , latency . .



, - . . Cassandra, Elasticsearch, Go Python.





, Elasticsearch.



, Elasticsearch , , CPU. Python.





. , Go stateless, , -, , , CPU - .



, . , , .





?



  • Ansible , , , , server -> roles . .
  • , . Ansible , , . , , , .
  • , Ansible, , , . – playbooks . , , playbooks production. , , . , .




, , instance, ?



  • inventory. , - - .
  • . , , . , . .




, , , .



  • , Kubernetes , . , .
  • , , . . , , , , , , .
  • , . . Request + Limit – , .




Kubernetes. . . . , , . , , , instances. , OOM killer, , . , , .



, , , . .



, health checks , . , , .





Ansible . Ansible? , , . , . Ansible, , .



Kubernetes, , . - . , , over kill.





, ? :



  • — , , .
  • – Ansible , , Kubernetes .




Kubernetes , Ansible? Kubernetes apply, , , . . -, , . , – , .



, ? - ? , . , pod. , , Ansible. , , .





? service discovery. , . nginx, upstream’. . . . . , , service discovery. . Kubernetes.



, . , , . - , . DNS, ETCD. , , . .





, , , , . , readiness/ liveness-. , , curl, , Kubernetes .



? , pull . , , . pod, IP, . pull . , . , , .



, , pod . , , . graceful shutdown . . , .



. , RequestID, tracing, , , . , pod – , .





– . Kubernetes, , , L2 , , .





, , ? , 20 , . ? . bgp. , bgp. bgp 10 ?



Kubernetes , service discovery iptables , . . daemon, iptables. , . , , , , .





. 20 , . iptables , .



, , . IP pod’ IP . , . SR-IOV. , 128 . switch . . , , .



, . . , -, , , . - . flannel host-gw. 24- . , , -. , .





iptables kube-proxy, , iptables Kubernetes. Google , . . headless services .





?



  • , K8s .
  • , , CI/CD.
  • . . . , ? , .
  • production .




, :



  • , K8s. docker , , Python. Go – . , docker . .
  • docker . Ansible docker: « , , ».
  • , . .




. , - etcd, ConfigMap, . , . , reconfig. , .



Helm . , .





, Helm. update/ rollback pod’, immutable ConfigMap, . , , , , , rolling update, , . , . . , production , . ConfigMap, ConfigMag.





, , – .



– , . - . pod, , immutable. , . , Helm.





. Go- , YAML . , - , -. YAML, . – .





Python Django . Settings.py – . settings . .





, , , K8s stateful . , : Cassandra, Kafka. -, , .



, , Ansible. Ansible , - K8s . ?





Kubernetes – Ansible playbook. . . playbook, , , K8s.





production - - .



. request/ limit.



, , . CPU . . , pod’ . , - , CPU.





, . , , - , OOM Killer . , 100 , .





– deployments - . , , selector , pod deployments. OOM Killer , . . deployment , . , .





- - . , – . K8s back-off. . .





, , , …, back-off .



, rollout, . . , . , , . . . . , .





, , , iptables headless. ? selector, pod’, . pod’ readiness probe, . endpoint, , . . endpoint – pod’.



IP . IP, pod.



IP. , . , iptables , upstream, .



DNS-.





? , pod. readiness probe kubelet . . , kubelet’ apiserver.



kube-proxy . kube-proxy . , .





?



  • Probes . , , .
  • . 10 000 rps, , .
  • . Kubelet -> apiserver -> kube-proxy-> iptables. , .
  • , kubelet apiserver? kube-proxy iptables? , .
  • , iptables pod, . , , . retries.




, headless service – , .



. etcd, apiserver, DNS.





envoy, L7, retry. http, retry , . , , application level . , ? Envoy.





. envoy. DNS. K8s DNS, endpoints. , . , .



envoy DeamonSet, , sidecar container. ? - .



envoy, -, , , pod’ . . . rolling-update. - , , pod .





. . . envoy nginx -t. . , : «, ». . , pod’ .



, sidecar . envoy , .





. envoy. , resolve , , 3 DNS. , envoy resolve. . . . , health check, retry.





, service mesh . service mesh, . . , .



- , GitHub , . envoy. , istio , . .





ingress-. IP, K8s-. K8s, , .



DaemonSet envoy, . DaemonSet – . IP , DaemonSet, IP - . . 3 - 4, 5, 10 upstream .



DaemonSet rolling .





ingress controller, , nginx - ingress K8s. , . . , , envoy, DaemonSet, ingress controller. . DaemonSet, . ingress.





, . .



Kubespray – , , 20 K8s-.



, , , , . , , .



playbook .





?



etcd c apiserver’. . full mesh.





, Kubelet …, . , , . . pod , . , .





CoreDNS. deployment. deployment, iptables, .



iptables, DNS deployment DaemonSet. , , . DNS , -, .





3 + N . , , . , Ansible. , .



Stateful- , , . .



, Kafka 4 10 . Kubelet , . , overbooked .





, , flannel . pod’. . 1/0. pod’ . . . . . , .





, , . , , , egress, , . flannel NAT. pod’ .



, . NAT.





  • . .
  • , . , .
  • - . . , , . , - , . 3 , , , , .
  • , Kubernetes, , . , , .




Kubernetes .





Kubernetes .



, . !



:



, ! follower, , , , Kubernetes, - ? Kubernetes ?



, , Kubernetes . , . , . . , .



, , , , , , , , . , service discovery . , , , , .



! Stateful- , . HA ? HAProxy K8s?



Cassandra . , , . . endpoints IP , .



Postgres?



Postgres . Postgres’ , . . , . , , . Postgres - . , , -, . Postgres , .



, ! ! latency. , , latency . , ?



. . . iptables , . iptables, . , , .



20 . - ?



flannel .



, , Open vSwitch ?



私はこれらの言葉を恐れています。K8の監視を行い、監視のデモを作成するために仮想マシン上にテストベンチを作成する必要がありました。そこで、デフォルトで、KubesprayはCalicoを展開しました。動作しますが、どのように動作するのかわかりません。そこではベンチマークを実行していません。どのように機能するのかわかりません。そしてそれがどのように壊れるのか、私にはわかりません。私はフランネルがどのように壊れるのか知っています、私はそれの準備ができています。そして、他の19個のプラグインがどのように壊れるかはわかりません。



この質問は、安全なネットワークと安全でないネットワークを分離するためのデータ保護の観点から興味深いものです。



私たちはこの点で祝福されています、私たちはそのようなものは何もありません。



あなたはとても幸運だ。



だから、あなたをタンク!




All Articles