Service Mesh (ASM), seyrek dağıtılmış hizmetler için merkezi bir yönetim ve İşletim ve Bakım (O&M) platformu sağlamak amacıyla birden fazla Container Service for Kubernetes (ACK) kümesini tek bir ASM örneğine entegre etmenize olanak tanır. ASM çapraz küme mesh proxy'leri, çoklu küme ağları için daha esnek bir bağlantı çözümü sunar. Bu konuda, birden fazla küme için ağlar arası iletişimi yapılandırmak üzere ASM çapraz küme mesh proxy'lerinin nasıl kullanılacağı açıklanmaktadır.
Arka plan bilgileri
ASM, çoklu küme modunu destekler. Bu, birden fazla ACK kümesini aynı ASM örneğine ekleyebileceğiniz anlamına gelir. ASM'nin çoklu küme modu, farklı ağlarda bulunan birden fazla ACK kümesinin aynı ASM örneğine eklenmesine izin verir. Tesis kısıtlamaları, CIDR bloğu çakışmaları ve ücretler gibi nedenlerle bu kümeler arasında Katman 3 düzeyinde ağlar arası iletişim kurulamıyorsa kümeleri bağlamak için ASM çapraz küme mesh proxy'lerini kullanabilirsiniz. ASM çapraz küme mesh proxy'leri, bu kümeleri genel ve özel ağları kullanarak esnek bir şekilde bağlamanıza olanak tanır. Bu sayede, hizmet kodunuzda değişiklik yapmadan CIDR bloğu çakışmalarını çözebilir ve birden fazla küme için merkezi trafik yönetimi, güvenlik koruması ve uçtan uca gözlemlenebilirlik uygulayabilirsiniz. Bu konuda, aynı ASM örneğine eklenen birden fazla küme için ağlar arası iletişimin ASM çapraz küme mesh proxy'leri kullanılarak nasıl yapılandırılacağı açıklanmaktadır. Bu örnekte, sleep uygulaması HTTPBin uygulamasına kümeler arasında erişmek için kullanılır.
Avantajlar
V1,22 ve sonraki sürümlerdeki ASM örnekleri tarafından sağlanan ASM çapraz küme mesh proxy'leri, Katman 7 yük dengelemeyi tamamen uygular. Çapraz küme iletişim senaryolarındaki doğu-batı ASM ağ geçitlerinin yönlendirme yetenekleri, çapraz küme olmayan iletişim senaryolarındakilerle aynıdır.
Önkoşullar
Sürümü 1,22 veya üzeri olan bir ASM örneği oluşturdunuz. Daha fazla bilgi için bkz. ASM örneği oluşturma.
ASM örneğine birden fazla küme eklediniz. Daha fazla bilgi için bkz. ASM örneğine küme ekleme. (Bu örnekte iki küme eklenmiştir.)
ASM örneği için otomatik sidecar proxy enjeksiyonunu etkinleştirdiniz. Daha fazla bilgi için Genel ad alanlarını yönetme konusunun "Otomatik sidecar proxy enjeksiyonunu etkinleştirme" bölümüne bakın.
-
Hizmetler arasında çapraz küme erişimi yalnızca aşağıdaki iki koşuldandan biri karşılandığında mümkündür:
ASM örneğinde Domain Name System (DNS) proxy özelliğini etkinleştirdiniz. Daha fazla bilgi için bkz. ASM'de DNS proxy kullanma. Bu yöntem önerilir.
İstemciye hizmet veren kümede, sunucuya hizmet veren kümedekiyle aynı bir hedef hizmeti manuel olarak oluşturdunuz.
Adım 1: Elastic IP Address (EIP) adresini ASM örneğinin kontrol düzlemine ilişkilendirme
Veri düzlemindeki kümeniz ASM örneğinizin bulunduğu sanal özel cloud (VPC) ile iletişim kuramıyorsa ve veri düzlemi ile ASM örneğinin kontrol düzlemini İnternet üzerinden bağlamak istiyorsanız Istio Pilot uç noktasını İnternet'e açmak için ASM örneğinin kontrol düzlemindeki Istio Pilot uç noktasının SLB örneğine bir EIP adresi ilişkilendirebilirsiniz.
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde seçeneğini belirleyin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneğini belirleyin.
Basic Information sayfasının sağ tarafında Istio Pilot Endpoint öğesini seçin ve Bind EIP öğesini tıklayın.
Bu durumda, ASM örneği silindiğinde EIP adresi de silinir.
Adım 2: Kümeler için ağ ayarlarını yapılandırma ve çapraz küme mesh proxy'lerini etkinleştirme
Her küme için mantıksal bir ağ belirtebilirsiniz. Aynı mantıksal ağdaki hizmetler birbirine doğrudan erişebilir. Farklı mantıksal ağlardaki hizmetler birbirine erişmek için çapraz küme mesh proxy'lerini kullanmalıdır.
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde seçeneğini belirleyin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneğini belirleyin.
-
Multi-cluster Network Configurations öğesini tıklayın ve aşağıdaki yöntemleri kullanarak yapılandırmayı tamamlayın:
ACK 1 için Homing Logical Network Name değerini network1 olarak ayarlayın.
ACK 2 için Homing Logical Network Name değerini network2 olarak ayarlayın ve ACK 2'de Enable Access Through Cross-cluster Mesh Proxy seçeneğini açın.

Yukarıdaki yapılandırmaları uyguladıktan sonra ASM, ACK 2'de varsayılan bir çapraz küme mesh proxy'si oluşturur. Bu mesh proxy'si bir EIP adresiyle ilişkilendirilir. ACK 1'deki hizmetler, ACK 2'deki hizmetlere erişmek için bu çapraz küme mesh proxy'sini otomatik olarak kullanır ve bu iletişim yolu için mutual transport layer security (mTLS) şifrelemesi varsayılan olarak etkinleştirilir.
Çapraz küme mesh proxy'sinin tanımını ilgili kümenin kubeconfig dosyasında görüntüleyebilirsiniz. Bir çapraz küme mesh proxy'si aşağıdaki biçimde adlandırılır: asm-cross-network-${ACK ID}. İş gereksinimlerinize göre kaynaklar ve çoğaltma sayısı gibi bir çapraz küme mesh proxy'sinin yapılandırmalarını ayarlayabilirsiniz.
Çapraz küme mesh proxy'si bir TCP proxy'sidir ve Katman 7 yük dengeleme yapamaz. Bazı durumlarda yük dengesizlikleri oluşabilir.
Adım 3: Çapraz küme erişimini denetleme
Önceki ağ yapılandırmaları, karşılık gelen uygulama pod'ları başlatıldığında etkili olur. Ağ yapılandırmalarını değiştirmeden önce bir uygulama pod'u zaten başlatılmışsa uygulama pod'unu yeniden başlatmanız gerekir.
-
ACK 1'de sleep uygulamasını oluşturun. Örnek YAML içeriği:
-
ACK 2'de HTTPBin uygulamasını oluşturun. Örnek YAML içeriği:
-
HTTPBin uygulamasına sleep uygulamasını çalıştıran pod'dan erişin. (ACK 1'in kubeconfig dosyasındaki bilgilere göre pod'a bağlanın.)
-
Sleep uygulamasını çalıştıran pod'un adını alın.
kubectl get pod | grep sleep -
Curl komutunu çalıştırarak sleep uygulamasından HTTPBin uygulamasına erişin.
kubectl exec ${Name of the pod running the sleep application} -- curl httpbin:8000/status/418Aşağıdaki çıktı erişimin başarılı olduğunu gösterir:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 135 100 135 0 0 16075 0 --:--:-- --:--:-- --:--:-- 16875 -=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`
-
-
Sleep uygulamasının HTTPBin uygulamasına erişmek için çapraz küme mesh proxy'sini kullandığını doğrulayın.
-
Sleep uygulamasını çalıştıran pod'un günlüklerini denetleyin. (ACK 1'in kubeconfig dosyasındaki bilgilere göre pod'a bağlanın.)
kubectl logs ${Name of the pod running the sleep application} -c istio-proxy | tail -1Aşağıdaki komut çıktısı döndürülür:
{"authority_for":"httpbin:8000","bytes_received":"0","bytes_sent":"135","downstream_local_address":"xxx.xxx.xxx.xx:8000","downstream_remote_address":"xx.x.xxx.xxx:xxxxx","duration":"7","istio_policy_status":"-","method":"GET","path":"/status/418","protocol":"HTTP/1.1","request_id":"08dc43e9-60c8-4f2f-910a-b727172ce311","requested_server_name":"-","response_code":"418","response_flags":"-","route_name":"default","start_time":"2024-05-23T10:06:27.289Z","trace_id":"-","upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local","upstream_host":"xxx.xx.xxx.xxx:15443","upstream_local_address":"xx.x.xxx.xxx:60248","upstream_response_time":"7","upstream_service_time":"7","upstream_transport_failure_reason":"-","user_agent":"curl/8.1.2","x_forwarded_for":"-"}upstream_hostalanı, sleep uygulamasını çalıştıran pod tarafından doğrudan erişilen hedef hizmeti tanımlar. Çıktı, erişimin15443bağlantı noktası üzerinden gerçekleştirildiğini gösterir.15443bağlantı noktası, çapraz küme mesh proxy'sinin özel bağlantı noktasıdır. -
Çapraz küme mesh proxy'sinin günlüklerini denetleyin. (ACK 2'nin kubeconfig dosyasındaki bilgilere göre pod'lara bağlanın.)
Önce çapraz küme mesh proxy'sini çalıştıran pod'u alın.
kubectl -n istio-system get pod | grep asm-cross-network istio-asm-cross-network-c0859be51XXX 1/1 Running 0 20h istio-asm-cross-network-c0859be51XXX 1/1 Running 0 20hÇıktı, varsayılan olarak iki pod'un çapraz küme mesh proxy'sini çalıştırdığını gösterir. Bu iki pod'un günlüklerini ayrı ayrı denetleyebilirsiniz. Günlükleri benzerdir.
kubectl logs istio-asm-cross-network-c0859be51XXX -n istio-system | tail -1 {"authority_for":"-","bytes_received":"xxxx","bytes_sent":"xxxx","downstream_local_address":"xx.xx.x.xx:15443","downstream_remote_address":"xx.xx.xx.xx:xxxxx","duration":"1568569","istio_policy_status":"-","method":"-","path":"-","protocol":"-","request_id":"-","requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local","response_code":"0","response_flags":"-","route_name":"-","start_time":"2024-05-23T08:41:16.618Z","trace_id":"-","upstream_cluster":"outbound_.8000_._.httpbin.default.svc.cluster.local","upstream_host":"xx.xx.xx.xxx:80","upstream_local_address":"xx.x.xx.xx:xxxxx","upstream_response_time":"-","upstream_service_time":"-","upstream_transport_failure_reason":"-","user_agent":"-","x_forwarded_for":"-"}
-