0 added
0 removed
Original
2026-01-01
Modified
2026-02-19
1
<p>Чтобы стать действительно крутым инженером, недостаточно просто знать, как строить большие системы. Нужно понимать, как они ломаются. В этом смысле публичные постмортемы лучшее, что случилось с интернетом с точки зрения профессионального роста.</p>
1
<p>Чтобы стать действительно крутым инженером, недостаточно просто знать, как строить большие системы. Нужно понимать, как они ломаются. В этом смысле публичные постмортемы лучшее, что случилось с интернетом с точки зрения профессионального роста.</p>
2
<p><strong>Пример подобного постмортема:</strong></p>
2
<p><strong>Пример подобного постмортема:</strong></p>
3
<p>🔅 SNAT нам все сломал, или сначала нужно проверить на staging (подробнее -<a>тут</a>).</p>
3
<p>🔅 SNAT нам все сломал, или сначала нужно проверить на staging (подробнее -<a>тут</a>).</p>
4
<ul><li><strong>Ключевой симптом</strong>: Все сетевое взаимодействие внутри кластера работало, а все запросы наружу из кластера не работали должным образом.</li>
4
<ul><li><strong>Ключевой симптом</strong>: Все сетевое взаимодействие внутри кластера работало, а все запросы наружу из кластера не работали должным образом.</li>
5
</ul><ul><li><strong>Что пошло не так:</strong></li>
5
</ul><ul><li><strong>Что пошло не так:</strong></li>
6
</ul><p>Проблема заключалась в механизме SNAT, реализованном в AWS VPC CNI плагине. По умолчанию, при отправке трафика из подов на адреса за пределами VPC, CNI плагин выполняет SNAT, заменяя исходный IP-адрес пода на основной IP-адрес сетевого интерфейса ноды. Поскольку нужно было обращаться в другой VPC, SNAT приводил к сбоям в сетевом взаимодействии. Включение параметра AWS_VPC_K8S_CNI_EXTERNALSNAT=true отключило этот механизм, позволив трафику из подов выходить напрямую без трансляции, что решило проблему.</p>
6
</ul><p>Проблема заключалась в механизме SNAT, реализованном в AWS VPC CNI плагине. По умолчанию, при отправке трафика из подов на адреса за пределами VPC, CNI плагин выполняет SNAT, заменяя исходный IP-адрес пода на основной IP-адрес сетевого интерфейса ноды. Поскольку нужно было обращаться в другой VPC, SNAT приводил к сбоям в сетевом взаимодействии. Включение параметра AWS_VPC_K8S_CNI_EXTERNALSNAT=true отключило этот механизм, позволив трафику из подов выходить напрямую без трансляции, что решило проблему.</p>
7
<ul><li><strong>Что следовало сделать по-другому:</strong></li>
7
<ul><li><strong>Что следовало сделать по-другому:</strong></li>
8
</ul><p>Тестирование в staging-среде: Перед развертыванием изменений в production необходимо проводить обширное тестирование в изолированной среде, имитирующей production, чтобы выявить потенциальные проблемы.</p>
8
</ul><p>Тестирование в staging-среде: Перед развертыванием изменений в production необходимо проводить обширное тестирование в изолированной среде, имитирующей production, чтобы выявить потенциальные проблемы.</p>
9
<p>Больше публичных постмортемов можно найти<a>на этом ресурсе.</a></p>
9
<p>Больше публичных постмортемов можно найти<a>на этом ресурсе.</a></p>
10
<p>Учиться на чужих ошибках здорово и весело.</p>
10
<p>Учиться на чужих ошибках здорово и весело.</p>
11
<p>В этом смысле публичные постмортемы лучшее, что случилось с интернетом с точки зрения профессионального роста.<strong>А еще классно учиться на курсе<a>"Kubernetes База"</a></strong>- там есть стенды для практики, поэтому даже если система сломается, продакшен не пострадает.</p>
11
<p>В этом смысле публичные постмортемы лучшее, что случилось с интернетом с точки зрения профессионального роста.<strong>А еще классно учиться на курсе<a>"Kubernetes База"</a></strong>- там есть стенды для практики, поэтому даже если система сломается, продакшен не пострадает.</p>
12
<p>2025-07-04 20:07<a>Kubernetes</a></p>
12
<p>2025-07-04 20:07<a>Kubernetes</a></p>