
Pada titik tertentu, kami di okmeter.io menyadari bahwa kami juga memerlukan k8s dalam produksi, meskipun kami bahkan tidak memiliki CI / CD, tetapi ada tugas untuk berbagi kumpulan server umum antar aplikasi dan cukup mudah untuk menambahkan kapasitas ke cluster. Pada saat yang sama, ada beberapa kondisi yang memperumit implementasi k8s:
- kami sangat peduli tentang toleransi kesalahan (kami tidak menyeret teknologi baru ke dalam produksi sampai kami memahaminya pada tingkat yang memadai);
- kami memiliki layanan dengan waktu respons kurang dari 10ms;
- kami memiliki sangat sedikit sumber daya manusia untuk tugas ini (pelajari 10 istilah OK baru, 50 - tidak lagi).
: 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 ?
Saya hanya takut dengan kata-kata ini. Kami melakukan pemantauan terhadap K8, dan kami harus membuat bangku pengujian di mesin virtual untuk membuat demo pemantauan. Di sana, secara default, Kubespray menggunakan Calico. Ini berhasil, tetapi saya tidak mengerti cara kerjanya. Kami tidak menjalankan benchmark apa pun di sana, saya tidak tahu cara kerjanya. Dan bagaimana itu akan pecah, saya tidak tahu. Saya tahu bagaimana flanel akan pecah, saya siap untuk itu. Dan bagaimana 19 plugin lainnya akan rusak, saya tidak tahu.
Pertanyaan ini menarik dalam hal perlindungan data untuk memisahkan jaringan yang aman, yang tidak aman.
Kami diberkati dalam hal ini, kami tidak memiliki yang seperti itu.
Kamu sangat beruntung.
Jadi terima kasih!