{"id":348663,"date":"2023-06-12T15:01:02","date_gmt":"2023-06-12T15:01:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=348663"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=348663","title":{"rendered":"<span>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0434\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435:<\/h2>\n<h3>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/h3>\n<h3>CNI \u0438 CRI<\/h3>\n<h3>DNS, L4\/L7<\/h3>\n<h3>\u0417\u0430\u0445\u0432\u0430\u0442 \u0442\u0440\u0430\u0444\u0438\u043a\u0430<\/h3>\n<h2>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u041e\u0421 Linux \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 SND (Software-defined networking). \u0421\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441\u0435\u0442\u0435\u0439 \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043e\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<\/p>\n<h3>iperf<\/h3>\n<p><a href=\"https:\/\/iperf.fr\" rel=\"noopener noreferrer nofollow\">https:\/\/iperf.fr<\/a><\/p>\n<p>iperf \u2013 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442,<br \/> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<br \/> \u0422\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0445\u043e\u0441\u0442\u0430\u043c\u0438 Linux, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441.<br \/> \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c iperf \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043d\u0443\u0436\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre><code>apiVersion: apps\/v1 kind: Deployment metadata:   name: iperf3-deployment spec:   replicas: 3   selector:     matchLabels:       app: iperf3   template:     metadata:       labels:         app: iperf3     spec:       containers:       - name: iperf3         image: leodotcloud\/swiss-army-knife         ports:         - containerPort: 5201 <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<pre><code>kubectl apply -f iperf3-deployment.yaml <\/code><\/pre>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>~$ kubectl get pods -o wide NAME                                 READY   STATUS    RESTARTS   AGE     IP            NODE       NOMINATED NODE   READINESS GATES iperf3-deployment-64c767596d-9r4jm   1\/1     Running   0          3h36m   10.244.0.13   minikube   &lt;none>           &lt;none> iperf3-deployment-64c767596d-jgqx9   1\/1     Running   0          3h36m   10.244.0.14   minikube   &lt;none>           &lt;none> iperf3-deployment-64c767596d-l5tg8   1\/1     Running   0          3h36m   10.244.0.15   minikube   &lt;none>           &lt;none> <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c iperf \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u043e\u0434\u043e\u0432, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">kubectl exec -it &lt;pod-name> -- iperf3 -s -p 12345 <\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c [pod-name] \u043d\u0430 \u0438\u043c\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0434\u043e\u0432 \u0432 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438:<br \/> kubectl exec -it [pod-name] &#8212; iperf3 -s -p 12345<\/p>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>~$ kubectl exec -it pod\/iperf3-deployment-64c767596d-l5tg8 -- iperf3 -s -p 12345 ----------------------------------------------------------- Server listening on 12345 ----------------------------------------------------------- <\/code><\/pre>\n<p>\u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Iperf \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code>~$ kubectl exec -it iperf3-deployment-64c767596d-9r4jm -- iperf3 -c 10.244.0.15 -p 12345 Connecting to host 10.244.0.15, port 12345 [  4] local 10.244.0.13 port 43842 connected to 10.244.0.15 port 12345 [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd [  4]   0.00-1.00   sec  2.78 GBytes  23.9 Gbits\/sec  1296506932   0.00 Bytes [  4]   1.00-2.00   sec  2.56 GBytes  22.0 Gbits\/sec    0   0.00 Bytes [  4]   2.00-3.00   sec  3.02 GBytes  25.9 Gbits\/sec    0   0.00 Bytes [  4]   3.00-4.00   sec  3.17 GBytes  27.2 Gbits\/sec    0   0.00 Bytes [  4]   4.00-5.00   sec  2.91 GBytes  25.0 Gbits\/sec    0   0.00 Bytes [  4]   5.00-6.00   sec  2.76 GBytes  23.7 Gbits\/sec    0   0.00 Bytes [  4]   6.00-7.00   sec  2.47 GBytes  21.2 Gbits\/sec    0   0.00 Bytes [  4]   7.00-8.00   sec  2.43 GBytes  20.9 Gbits\/sec    0   0.00 Bytes [  4]   8.00-9.00   sec  2.43 GBytes  20.9 Gbits\/sec    0   0.00 Bytes [  4]   9.00-10.00  sec  2.82 GBytes  24.2 Gbits\/sec  2998460368   0.00 Bytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval           Transfer     Bandwidth       Retr [  4]   0.00-10.00  sec  27.3 GBytes  23.5 Gbits\/sec    4             sender [  4]   0.00-10.00  sec  27.3 GBytes  23.5 Gbits\/sec                  receiver <\/code><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 iperf &#8212; \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0438: \u043c\u0435\u0436\u0434\u0443 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441<br \/> \u0438\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u0441\u0442\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<p>Iperf \u043c\u043e\u0436\u0435\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e TCP \u043d\u043e \u0438 UDP:<\/p>\n<pre><code>~$ kubectl exec -it iperf3-deployment-64c767596d-9r4jm -- iperf3 -c 10.244.0.15 -u -p 12345 Connecting to host 10.244.0.15, port 12345 warning: Unable to set socket pacing, using application pacing instead [  4] local 10.244.0.13 port 51612 connected to 10.244.0.15 port 12345 [ ID] Interval           Transfer     Bandwidth       Total Datagrams [  4]   0.00-1.00   sec   120 KBytes   983 Kbits\/sec  15 [  4]   1.00-2.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   2.00-3.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   3.00-4.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   4.00-5.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   5.00-6.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   6.00-7.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   7.00-8.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   8.00-9.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   9.00-10.00  sec   128 KBytes  1.05 Mbits\/sec  16 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval           Transfer     Bandwidth       Jitter    Lost\/Total Datagrams [  4]   0.00-10.00  sec  1.24 MBytes  1.04 Mbits\/sec  0.207 ms  0\/159 (0%) [  4] Sent 159 datagrams <\/code><\/pre>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0438 \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 &#171;\u0436\u0435\u043b\u0435\u0437\u0430&#187; (CRC \u043e\u0448\u0438\u0431\u043a\u0438 NIC \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u043c\u0438)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 MTU)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5681\" rel=\"noopener noreferrer nofollow\">Link congestion<\/a><\/p>\n<\/li>\n<\/ul>\n<h2>CNI \u0438 CRI<\/h2>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 UNIX: \u0414\u0435\u043b\u0430\u0439\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u043e\u0434\u043d\u043e, \u043d\u043e \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u2013 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 (decoupling) \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c.<\/p>\n<h3>CRI<\/h3>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u043d\u043e \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435\u043f\u043e\u0441\u0442\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e\u0439 \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 \u0443\u0437\u043b\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u2013 CRI (Container Runtime Interface). CRI \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b Linux (cgroups \u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d) \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. Kubelet \u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u041a\u0443\u0431\u0435\u0440\u043d\u0442\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 Container Runtime.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/888\/208\/26a\/88820826af59178a688b20ef61fca15f.png\" alt=\"CRI (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c Docker\\containerd) \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. Kubelet \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 CNI, \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u041f\u043e\u0434\u0430.\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/888\/208\/26a\/88820826af59178a688b20ef61fca15f.png\"\/><\/p>\n<div><figcaption>CRI (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c Docker\\containerd) \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. Kubelet \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 CNI, \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u041f\u043e\u0434\u0430.<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441\u0435\u0440\u0432\u0438\u0441 kubelet \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>strings \/proc\/$(pgrep kubelet)\/cmdline<\/code>:<\/p>\n<pre><code class=\"bash\">$ strings \/proc\/$(pgrep kubelet)\/cmdline \/usr\/bin\/kubelet --bootstrap-kubeconfig=\/etc\/kubernetes\/bootstrap-kubelet.conf --kubeconfig=\/etc\/kubernetes\/kubelet.conf --config=\/var\/lib\/kubelet\/config.yaml --container-runtime=remote --container-runtime-endpoint=\/run\/containerd\/containerd.sock --node-ip=192.168.61.11 --pod-infra-container-image=k8s.gcr.io\/pause:3.4.1 <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043d\u0430 \u0443\u0437\u043b\u0430\u0445 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b CRI (Container Runtime Interface).<br \/> crio:<br \/> <a href=\"https:\/\/github.com\/cri-o\/cri-o\/blob\/main\/docs\/crio.8.md\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/cri-o\/cri-o\/blob\/main\/docs\/crio.8.md<\/a><\/p>\n<pre><code class=\"bash\">$ crictl pull docker.io\/library\/busybox:latest <\/code><\/pre>\n<p>containerd:<br \/> <a href=\"https:\/\/github.com\/projectatomic\/containerd\/blob\/master\/docs\/cli.md\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/projectatomic\/containerd\/blob\/master\/docs\/cli.md<\/a><\/p>\n<pre><code class=\"bash\">$ ctr images pull docker.io\/library\/busybox:latest <\/code><\/pre>\n<p>crictl inspect \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 jq \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c PID:<\/p>\n<pre><code class=\"bash\">crictl ps crictl inspect $CONTAINER_ID PID=$(crictl inspect $CONTAINER_ID | jq '.info.pid') ps -ef | grep $PID | grep -v grep <\/code><\/pre>\n<h3>CNI<\/h3>\n<p>\u0423 CNI \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438: \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0430\u0437\u0430\u043d\u0430\u0447\u044f\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u041f\u043e\u0434\u043e\u0432 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e IP \u0430\u0434\u0440\u0435\u0441\u0430 \u041f\u043e\u0434\u0430.<br \/> \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0437\u043b\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0434\u0438\u043a\u0442\u0443\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 CNI \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 CNI: <code>flat networks<\/code> \u0438 <code>overlay networks<\/code>. <code>flat networks<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 IP \u0438\u0437 \u0441\u0435\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0412 \u0441\u0435\u0442\u044f\u0445 <code>overlay<\/code>, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 CNI \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u0435\u0442\u044c \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u0438 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u0443\u044e \u0441\u0435\u0442\u044c (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f ]underlay network]) \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>ip route<\/code> \u043d\u0430 \u0443\u0437\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e CNI \u043f\u043b\u0430\u0433\u0438\u043d Calico:<\/p>\n<pre><code class=\"bash\">$ ip route default via 10.6.16.1 dev eth0  10.6.16.0\/21 dev eth0 proto kernel scope link src 10.6.22.111  111.97.95.0\/26 via 10.6.145.224 dev tunl0 proto bird onlink  111.98.108.64\/26 via 10.6.144.128 dev tunl0 proto bird onlink  111.98.163.0\/26 via 10.6.147.100 dev tunl0 proto bird onlink  111.101.172.128\/26 via 10.6.86.141 dev tunl0 proto bird onlink  111.103.57.192\/26 via 10.6.17.44 dev eth0 proto bird  111.103.80.128\/26 via 10.6.85.178 dev tunl0 proto bird onlink  111.105.231.0\/26 via 10.6.23.120 dev eth0 proto bird  111.115.208.128\/26 via 10.6.80.11 dev tunl0 proto bird onlink  blackhole 111.126.117.128\/26 proto bird  111.126.117.129 dev cali8934275ty scope link  111.126.117.132 dev cali983hfsdf4 scope link  111.126.117.140 dev cali443gfby45 scope link <\/code><\/pre>\n<p>kubelet \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u041f\u043e\u0434\u044b \u043a CNI. \u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a CNI \u043f\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 TCP\/IP (\u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u043a\u0435\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 CNI). \u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f CNI, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 service mesh. \u0415\u0441\u043b\u0438 \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0438\u0437 \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u041f\u043e\u0434\u0430 \u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0441\u0442\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u0443\u0437\u043b\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441.<\/p>\n<p>\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e kubelet \u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0438\u0444\u0438\u0433 CNI \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>\/etc\/cni\/net.d\/<\/code> \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b CNI \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/opt\/cni\/bin\/.<br \/> \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u043b\u0433\u043e\u0432 <code>--cni-config-dir=[directory]<\/code> \u0438 <code>--cni-bin-dir=[directory]<\/code>.<\/p>\n<h3>Cilium<\/h3>\n<p>Cilium &#8212; \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 CNI. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 Berkeley Packet Filter (eBPF). \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u044f\u0434\u0440\u0435 (Linux kernel space). \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 Xpress Data Path (XDP), \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. Cilium \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0431\u043e\u0440 CNI \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.<\/p>\n<h3>NetworkPolicy<\/h3>\n<p>\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u041f\u043e\u0434\u0430\u043c\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<br \/> NetworkPolicy \u042d\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0434\u043b\u044f \u043c\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430.<br \/> \u0420\u0435\u0441\u0443\u0440\u0441\u044b NetworkPolicy \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 CNI \u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u041f\u043e\u0434\u0430\u043c\u0438.<\/p>\n<h3>Iptables<\/h3>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439 CNI \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 kube-proxy \u0438 iptables \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Cilium \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 eBPF.<\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 (kube-proxy) \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 iptables \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0443\u0437\u043b\u0435 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441:<\/p>\n<pre><code>$ sudo iptables -t nat -L KUBE-SERVICES <\/code><\/pre>\n<p>\u042d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441. \u041e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438.<\/p>\n<h2>DNS, L4\/L7<\/h2>\n<p>\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 DNS \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u044d\u0442\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430: \u041f\u043e\u0434\u044b \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f, \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439  \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b: \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442, \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u041f\u043e\u0434\u044b \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.<\/p>\n<h3>CoreDNS<\/h3>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/dns-debugging-resolution\" rel=\"noopener noreferrer nofollow\">https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/dns-debugging-resolution<\/a><\/p>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 CoreDNS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0443\u0442\u0440\u0438\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u0433\u043e DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u041f\u043e\u0434\u043e\u0432.<\/p>\n<p>CoreDNS \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 API \u0421\u0435\u0440\u0432\u0435\u0440\u0430. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0421\u0435\u0440\u0432\u0438\u0441\u0430 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 CoreDNS \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430: [service-name].[namespace-name].svc.cluster.local.<br \/> \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0421\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f nginx \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d default, \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u044c &#8212; nginx.default.svc.cluster.local.<\/p>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u041f\u043e\u0434\u043e\u0432, kubelet \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0444\u0430\u0439\u043b <code>\/etc\/resolv.conf<\/code>. \u0415\u0441\u043b\u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 nameserver \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d  CoreDNS. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u043e\u0433\u0434\u0430 \u041f\u043e\u0434 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0421\u0435\u0440\u0432\u0438\u0441 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 &#8212; \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 CoreDNS:<\/p>\n<pre><code>cat \/etc\/resolv.conf search default.svc.cluster.local svc.cluster.local cluster.local nameserver 10.96.0.10 options ndots:5 <\/code><\/pre>\n<p>\u0421\u0435\u0440\u0432\u0438\u0441 kube-dns \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e (Deployment) CoreDNS:<\/p>\n<pre><code>kubectl -n kube-system get services NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE kube-dns   ClusterIP   10.96.0.10   &lt;none>        53\/UDP,53\/TCP,9153\/TCP   2d3h <\/code><\/pre>\n<p>\u0421\u0435\u0440\u0432\u0438\u0441 kube-dns \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441. \u0421\u0435\u0440\u0432\u0438\u0441 kube-dns \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e CoreDNS \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<ul>\n<li>\n<p>CoreDNS \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>CoreDNS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Corefile \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433 CoreDNS \u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437 &#8212; \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e CoreDNS \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<\/li>\n<\/ul>\n<pre><code>kubectl get configmaps coredns -n kube-system -o yaml <\/code><\/pre>\n<h3>dnstools<\/h3>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441\u0435\u0442\u0435\u0439 \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: dig, nslookup, curl, ping, nc \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#8212; dnstools:<br \/> dnstools.yaml:<\/p>\n<pre><code class=\"yaml\">apiVersion: v1 kind: Pod metadata:   name: dnstools spec:   containers:   - name: dnstools     image: infoblox\/dnstools     command: ['sh', '-c', 'while true; do sleep 1; done'] <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<pre><code>kubectl apply -f dnstools.yaml <\/code><\/pre>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>kubectl get pods dnstools NAME       READY   STATUS    RESTARTS   AGE dnsutils   1\/1     Running   0          36s <\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e dnstools \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c L4\\L7 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u041f\u043e\u0434\u0430\u043c\u0438, \u043f\u043e\u0440\u0442\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code>~$ kubectl exec -i -t dnstools -- nc -z -vv 10.244.0.6 80 nc: 10.244.0.6 (10.244.0.6:80): Connection refused sent 0, rcvd 0 command terminated with exit code 1  ~$ kubectl exec -i -t dnstools -- nc -z -vv 10.244.0.6 8080 10.244.0.6 (10.244.0.6:8080) open sent 0, rcvd 0  ~$ kubectl exec -i -t dnstools -- ping google.com -c 4 PING google.com (64.233.165.100): 56 data bytes 64 bytes from 64.233.165.100: seq=0 ttl=36 time=200.956 ms 64 bytes from 64.233.165.100: seq=1 ttl=36 time=18.517 ms 64 bytes from 64.233.165.100: seq=2 ttl=36 time=31.825 ms 64 bytes from 64.233.165.100: seq=3 ttl=36 time=16.783 ms <\/code><\/pre>\n<p>layer 7 HTTP API:<\/p>\n<pre><code>~$ kubectl exec -i -t dnstools -- wget -qO- 10.244.0.6:8080 Hello, world! <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u043d \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<pre><code>$ kubectl exec -i -t dnstools -- nslookup kubernetes.default Server:10.96.0.10 Address:10.96.0.10#53  Name:kubernetes.default.svc.cluster.local Address: 10.96.0.1  $ kubectl exec -i -t dnstools -- dig hello-world.default.svc.cluster.example.com <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0441 dnstools:<\/p>\n<pre><code>kubectl run --restart=Never -it --image infoblox\/dnstools dnstools dnstools# <\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 DNS (UDP 53) \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 dnstools:<\/p>\n<pre><code>kubectl exec -it dnstools sh dnstools# tcpdump -ni eth0 udp and port 53 <\/code><\/pre>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 DNS \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \/etc\/resolv.conf:<\/p>\n<pre><code>dnstools# cat \/etc\/resolv.conf nameserver 10.96.0.10 search default.svc.cluster.local svc.cluster.local cluster.local options ndots:5 <\/code><\/pre>\n<p><a href=\"https:\/\/linux.die.net\/man\/5\/resolv.conf\" rel=\"noopener noreferrer nofollow\">https:\/\/linux.die.net\/man\/5\/resolv.conf<\/a><\/p>\n<h2>\u0417\u0430\u0445\u0432\u0430\u0442 \u0442\u0440\u0430\u0444\u0438\u043a\u0430<\/h2>\n<p>Wireshark \u0438 tcpdump \u2013 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0432 \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u0438 \u0445\u043e\u0442\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441\u0435\u0442\u0435\u0439, \u044d\u0442\u0438 \u0434\u0432\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043c\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/3ee\/af5\/03d\/3eeaf503d1b0193cb84dd592da79074c.png\" alt=\"tcpdump \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b (NIC) \u0438 \u0432\u0442\u043e\u0440\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c (layer 2) OSI\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3ee\/af5\/03d\/3eeaf503d1b0193cb84dd592da79074c.png\"\/><\/p>\n<div><figcaption>tcpdump \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b (NIC) \u0438 \u0432\u0442\u043e\u0440\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c (layer 2) OSI<\/figcaption><\/div>\n<\/figure>\n<h3>ksniff<\/h3>\n<p><a href=\"https:\/\/github.com\/eldadru\/ksniff\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/eldadru\/ksniff<\/a><\/p>\n<p>ksniff &#8212; \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d kubectl, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 tcpdump \u0434\u043b\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430.<br \/> \u0422\u0440\u0430\u0444\u0438\u043a \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PCAP \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0442\u0435\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Wireshark \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 ksniff \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c krew &#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0434\u043b\u044f kubectl:<\/p>\n<pre><code class=\"bash\">kubectl krew install sniff <\/code><\/pre>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 krew \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u041e\u0421:<br \/> <a href=\"https:\/\/krew.sigs.k8s.io\/docs\/user-guide\/setup\/install\" rel=\"noopener noreferrer nofollow\">https:\/\/krew.sigs.k8s.io\/docs\/user-guide\/setup\/install<\/a><\/p>\n<p>Ksniff \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c kubectl.<br \/> \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 ksniff \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 tcpdump \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u041f\u043e\u0434\u0443. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 PCAP \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Wireshark.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043asniff \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442:<\/p>\n<pre><code class=\"bash\">kubectl sniff &lt;POD_NAME> [-n &lt;NAMESPACE_NAME>] [-c &lt;CONTAINER_NAME>] [-i &lt;INTERFACE_NAME>] [-f &lt;CAPTURE_FILTER>] [-o OUTPUT_FILE] [-l LOCAL_TCPDUMP_FILE] [-r REMOTE_TCPDUMP_FILE] <\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u0435 tcpdump \u0441\u0435\u0442\u0435\u0442\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u0444\u0430\u0439\u043b out.pcap:<\/p>\n<pre><code class=\"bash\">kubectl sniff -n &lt;NAMESPACE> &lt;POD_NAME> -p -f \"port 80\" -o out.pcap <\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c tcpdump \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 &#8212; \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b POST \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 HTTP \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 8080:<\/p>\n<pre><code class=\"bash\">kubectl sniff -p &lt;POD_NAME> -n &lt;NAMESPACE> -f 'tcp dst port 8080 and (tcp[((tcp[12:1] &amp; 0xf0) >> 2):4] = 0x504f5354)' -o - | tshark -r - <\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043b\u0430\u0433\u043e\u0432 <code>--image<\/code> \u0438 <code>--tcpdump-image<\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b Docker. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435.<\/p>\n<h3>Kubeshark<\/h3>\n<p><a href=\"https:\/\/docs.kubeshark.co\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.kubeshark.co<\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435:<br \/> <a href=\"https:\/\/docs.kubeshark.co\/en\/install\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.kubeshark.co\/en\/install<\/a><\/p>\n<p>\u042d\u0442\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0438\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0430\u043f\u0440\u043e\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 ksniff. \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 ksniff \u2013 \u0434\u043b\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 tcpdump.<br \/> \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e Kubeshark \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0440\u044f\u0434 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d\u044b \u043b\u0438\u0448\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 enterprise.<\/p>\n<p>kubeshark \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Javascript. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b \u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0435\u0442\u0438 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441.<\/p>\n<\/li>\n<li>\n<p>c\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PCAP \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0432 Wireshark.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421 kubeshark \u043c\u043e\u0436\u043d\u043e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 (REST, gRPC, Kafka, AMQP \u0438 Redis) \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435,<br \/> \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0421\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 &#8212; <a href=\"https:\/\/docs.kubeshark.co\/en\/service_map\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.kubeshark.co\/en\/service_map<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/741246\/\"> https:\/\/habr.com\/ru\/articles\/741246\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435:<\/h2>\n<h3>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/h3>\n<h3>CNI \u0438 CRI<\/h3>\n<h3>DNS, L4\/L7<\/h3>\n<h3>\u0417\u0430\u0445\u0432\u0430\u0442 \u0442\u0440\u0430\u0444\u0438\u043a\u0430<\/h3>\n<h2>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u041e\u0421 Linux \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 SND (Software-defined networking). \u0421\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441\u0435\u0442\u0435\u0439 \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043e\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<\/p>\n<h3>iperf<\/h3>\n<p><a href=\"https:\/\/iperf.fr\" rel=\"noopener noreferrer nofollow\">https:\/\/iperf.fr<\/a><\/p>\n<p>iperf \u2013 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442,<br \/> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<br \/> \u0422\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0445\u043e\u0441\u0442\u0430\u043c\u0438 Linux, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441.<br \/> \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c iperf \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043d\u0443\u0436\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre><code>apiVersion: apps\/v1 kind: Deployment metadata:   name: iperf3-deployment spec:   replicas: 3   selector:     matchLabels:       app: iperf3   template:     metadata:       labels:         app: iperf3     spec:       containers:       - name: iperf3         image: leodotcloud\/swiss-army-knife         ports:         - containerPort: 5201 <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<pre><code>kubectl apply -f iperf3-deployment.yaml <\/code><\/pre>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>~$ kubectl get pods -o wide NAME                                 READY   STATUS    RESTARTS   AGE     IP            NODE       NOMINATED NODE   READINESS GATES iperf3-deployment-64c767596d-9r4jm   1\/1     Running   0          3h36m   10.244.0.13   minikube   &lt;none>           &lt;none> iperf3-deployment-64c767596d-jgqx9   1\/1     Running   0          3h36m   10.244.0.14   minikube   &lt;none>           &lt;none> iperf3-deployment-64c767596d-l5tg8   1\/1     Running   0          3h36m   10.244.0.15   minikube   &lt;none>           &lt;none> <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c iperf \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u043e\u0434\u043e\u0432, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">kubectl exec -it &lt;pod-name> -- iperf3 -s -p 12345 <\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c [pod-name] \u043d\u0430 \u0438\u043c\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0434\u043e\u0432 \u0432 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438:<br \/> kubectl exec -it [pod-name] &#8212; iperf3 -s -p 12345<\/p>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>~$ kubectl exec -it pod\/iperf3-deployment-64c767596d-l5tg8 -- iperf3 -s -p 12345 ----------------------------------------------------------- Server listening on 12345 ----------------------------------------------------------- <\/code><\/pre>\n<p>\u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Iperf \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code>~$ kubectl exec -it iperf3-deployment-64c767596d-9r4jm -- iperf3 -c 10.244.0.15 -p 12345 Connecting to host 10.244.0.15, port 12345 [  4] local 10.244.0.13 port 43842 connected to 10.244.0.15 port 12345 [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd [  4]   0.00-1.00   sec  2.78 GBytes  23.9 Gbits\/sec  1296506932   0.00 Bytes [  4]   1.00-2.00   sec  2.56 GBytes  22.0 Gbits\/sec    0   0.00 Bytes [  4]   2.00-3.00   sec  3.02 GBytes  25.9 Gbits\/sec    0   0.00 Bytes [  4]   3.00-4.00   sec  3.17 GBytes  27.2 Gbits\/sec    0   0.00 Bytes [  4]   4.00-5.00   sec  2.91 GBytes  25.0 Gbits\/sec    0   0.00 Bytes [  4]   5.00-6.00   sec  2.76 GBytes  23.7 Gbits\/sec    0   0.00 Bytes [  4]   6.00-7.00   sec  2.47 GBytes  21.2 Gbits\/sec    0   0.00 Bytes [  4]   7.00-8.00   sec  2.43 GBytes  20.9 Gbits\/sec    0   0.00 Bytes [  4]   8.00-9.00   sec  2.43 GBytes  20.9 Gbits\/sec    0   0.00 Bytes [  4]   9.00-10.00  sec  2.82 GBytes  24.2 Gbits\/sec  2998460368   0.00 Bytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval           Transfer     Bandwidth       Retr [  4]   0.00-10.00  sec  27.3 GBytes  23.5 Gbits\/sec    4             sender [  4]   0.00-10.00  sec  27.3 GBytes  23.5 Gbits\/sec                  receiver <\/code><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 iperf &#8212; \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0438: \u043c\u0435\u0436\u0434\u0443 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441<br \/> \u0438\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u0441\u0442\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<p>Iperf \u043c\u043e\u0436\u0435\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e TCP \u043d\u043e \u0438 UDP:<\/p>\n<pre><code>~$ kubectl exec -it iperf3-deployment-64c767596d-9r4jm -- iperf3 -c 10.244.0.15 -u -p 12345 Connecting to host 10.244.0.15, port 12345 warning: Unable to set socket pacing, using application pacing instead [  4] local 10.244.0.13 port 51612 connected to 10.244.0.15 port 12345 [ ID] Interval           Transfer     Bandwidth       Total Datagrams [  4]   0.00-1.00   sec   120 KBytes   983 Kbits\/sec  15 [  4]   1.00-2.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   2.00-3.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   3.00-4.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   4.00-5.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   5.00-6.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   6.00-7.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   7.00-8.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   8.00-9.00   sec   128 KBytes  1.05 Mbits\/sec  16 [  4]   9.00-10.00  sec   128 KBytes  1.05 Mbits\/sec  16 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval           Transfer     Bandwidth       Jitter    Lost\/Total Datagrams [  4]   0.00-10.00  sec  1.24 MBytes  1.04 Mbits\/sec  0.207 ms  0\/159 (0%) [  4] Sent 159 datagrams <\/code><\/pre>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0438 \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 &#171;\u0436\u0435\u043b\u0435\u0437\u0430&#187; (CRC \u043e\u0448\u0438\u0431\u043a\u0438 NIC \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u043c\u0438)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 MTU)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5681\" rel=\"noopener noreferrer nofollow\">Link congestion<\/a><\/p>\n<\/li>\n<\/ul>\n<h2>CNI \u0438 CRI<\/h2>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 UNIX: \u0414\u0435\u043b\u0430\u0439\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u043e\u0434\u043d\u043e, \u043d\u043e \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u2013 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 (decoupling) \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c.<\/p>\n<h3>CRI<\/h3>\n<p>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u043d\u043e \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435\u043f\u043e\u0441\u0442\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e\u0439 \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 \u0443\u0437\u043b\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u2013 CRI (Container Runtime Interface). CRI \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b Linux (cgroups \u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d) \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. Kubelet \u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u041a\u0443\u0431\u0435\u0440\u043d\u0442\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 Container Runtime.<\/p>\n<figure class=\"\">\n<div><figcaption>CRI (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c Docker\\containerd) \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. Kubelet \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 CNI, \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u041f\u043e\u0434\u0430.<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441\u0435\u0440\u0432\u0438\u0441 kubelet \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>strings \/proc\/$(pgrep kubelet)\/cmdline<\/code>:<\/p>\n<pre><code class=\"bash\">$ strings \/proc\/$(pgrep kubelet)\/cmdline \/usr\/bin\/kubelet --bootstrap-kubeconfig=\/etc\/kubernetes\/bootstrap-kubelet.conf --kubeconfig=\/etc\/kubernetes\/kubelet.conf --config=\/var\/lib\/kubelet\/config.yaml --container-runtime=remote --container-runtime-endpoint=\/run\/containerd\/containerd.sock --node-ip=192.168.61.11 --pod-infra-container-image=k8s.gcr.io\/pause:3.4.1 <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043d\u0430 \u0443\u0437\u043b\u0430\u0445 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b CRI (Container Runtime Interface).<br \/> crio:<br \/> <a href=\"https:\/\/github.com\/cri-o\/cri-o\/blob\/main\/docs\/crio.8.md\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/cri-o\/cri-o\/blob\/main\/docs\/crio.8.md<\/a><\/p>\n<pre><code class=\"bash\">$ crictl pull docker.io\/library\/busybox:latest <\/code><\/pre>\n<p>containerd:<br \/> <a href=\"https:\/\/github.com\/projectatomic\/containerd\/blob\/master\/docs\/cli.md\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/projectatomic\/containerd\/blob\/master\/docs\/cli.md<\/a><\/p>\n<pre><code class=\"bash\">$ ctr images pull docker.io\/library\/busybox:latest <\/code><\/pre>\n<p>crictl inspect \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 jq \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c PID:<\/p>\n<pre><code class=\"bash\">crictl ps crictl inspect $CONTAINER_ID PID=$(crictl inspect $CONTAINER_ID | jq '.info.pid') ps -ef | grep $PID | grep -v grep <\/code><\/pre>\n<h3>CNI<\/h3>\n<p>\u0423 CNI \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438: \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0430\u0437\u0430\u043d\u0430\u0447\u044f\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u041f\u043e\u0434\u043e\u0432 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e IP \u0430\u0434\u0440\u0435\u0441\u0430 \u041f\u043e\u0434\u0430.<br \/> \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0437\u043b\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0434\u0438\u043a\u0442\u0443\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 CNI \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 CNI: <code>flat networks<\/code> \u0438 <code>overlay networks<\/code>. <code>flat networks<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 IP \u0438\u0437 \u0441\u0435\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0412 \u0441\u0435\u0442\u044f\u0445 <code>overlay<\/code>, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 CNI \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u0435\u0442\u044c \u0432 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441, \u0438 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u0443\u044e \u0441\u0435\u0442\u044c (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f ]underlay network]) \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>ip route<\/code> \u043d\u0430 \u0443\u0437\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e CNI \u043f\u043b\u0430\u0433\u0438\u043d Calico:<\/p>\n<pre><code class=\"bash\">$ ip route default via 10.6.16.1 dev eth0  10.6.16.0\/21 dev eth0 proto kernel scope link src 10.6.22.111  111.97.95.0\/26 via 10.6.145.224 dev tunl0 proto bird onlink  111.98.108.64\/26 via 10.6.144.128 dev tunl0 proto bird onlink  111.98.163.0\/26 via 10.6.147.100 dev tunl0 proto bird onlink  111.101.172.128\/26 via 10.6.86.141 dev tunl0 proto bird onlink  111.103.57.192\/26 via 10.6.17.44 dev eth0 proto bird  111.103.80.128\/26 via 10.6.85.178 dev tunl0 proto bird onlink  111.105.231.0\/26 via 10.6.23.120 dev eth0 proto bird  111.115.208.128\/26 via 10.6.80.11 dev tunl0 proto bird onlink  blackhole 111.126.117.128\/26 proto bird  111.126.117.129 dev cali8934275ty scope link  111.126.117.132 dev cali983hfsdf4 scope link  111.126.117.140 dev cali443gfby45 scope link <\/code><\/pre>\n<p>kubelet \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u041f\u043e\u0434\u044b \u043a CNI. \u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a CNI \u043f\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 TCP\/IP (\u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u043a\u0435\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 CNI). \u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f CNI, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 service mesh. \u0415\u0441\u043b\u0438 \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0438\u0437 \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u041f\u043e\u0434\u0430 \u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0441\u0442\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u0443\u0437\u043b\u0435 \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441.<\/p>\n<p>\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e kubelet \u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0438\u0444\u0438\u0433 CNI \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>\/etc\/cni\/net.d\/<\/code> \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b CNI \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/opt\/cni\/bin\/.<br \/> \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u043b\u0433\u043e\u0432 <code>--cni-config-dir=[directory]<\/code> \u0438 <code>--cni-bin-dir=[directory]<\/code>.<\/p>\n<h3>Cilium<\/h3>\n<p>Cilium &#8212; \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 CNI. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 Berkeley Packet Filter (eBPF). \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u044f\u0434\u0440\u0435 (Linux kernel space). \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 Xpress Data Path (XDP), \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. Cilium \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0431\u043e\u0440 CNI \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.<\/p>\n<h3>NetworkPolicy<\/h3>\n<p>\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u041f\u043e\u0434\u0430\u043c\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-348663","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348663","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348663"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348663\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}