Azure Kubernetes ağ ilkeleri
Ağ ilkeleri, tıpkı Ağ Güvenlik Grupları (NSG' ler) gibi podlar için mikro segmentasyon sağlar ve VM'ler için mikro segmentlere ayırma sağlar. Azure Ağ İlkesi Yöneticisi uygulaması standart Kubernetes ağ ilkesi belirtimini destekler. Etiketleri kullanarak bir pod grubu seçebilir ve bu podlara gelen ve bu podlardan gelen trafiği filtrelemek için giriş ve çıkış kurallarının listesini tanımlayabilirsiniz. Kubernetes belgelerinde Kubernetes ağ ilkeleri hakkında daha fazla bilgi edinin.
Azure Ağ İlkesi Yönetimi uygulaması, kapsayıcılar için sanal ağ tümleştirmesi sağlayan Azure CNI ile çalışır. Ağ İlkesi Yöneticisi Linux ve Windows Server'da desteklenir. Uygulama, Windows Server için Linux IPTable'larında veya Konak Ağ Hizmeti(HNS) ACLPolicies'te tanımlanan ilkelere göre izin ver ve reddet IP kurallarını yapılandırarak trafik filtrelemeyi zorlar.
Kubernetes kümeniz için güvenliği planlama
Kümeniz için güvenlik uygularken, ağ güvenlik gruplarını (NSG) kullanarak küme alt ağınıza giren ve kümenizden çıkan trafiği (Kuzey-Güney trafiği) filtreleyin. Kümenizdeki podlar arasındaki trafik için Azure Ağ İlkesi Yöneticisi'ni kullanın (Doğu-Batı trafiği).
Azure Ağ İlkesi Yöneticisi'ni kullanma
Azure Ağ İlkesi Yöneticisi, podlar için mikro segmentlere ayırma sağlamak için aşağıdaki yollarla kullanılabilir.
Azure Kubernetes Service (AKS)
Ağ İlkesi Yöneticisi AKS'de yerel olarak kullanılabilir ve küme oluşturma sırasında etkinleştirilebilir.
Daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) ağ ilkelerini kullanarak podlar arasındaki trafiğin güvenliğini sağlama.
Azure'da kubernetes kümelerini kendiniz yapın (DIY)
DIY kümeleri için önce CNI eklentisini yükleyin ve kümedeki her sanal makinede etkinleştirin. Ayrıntılı yönergeler için bkz. Eklentiyi kendi dağıttığınız Kubernetes kümesi için dağıtma.
Küme dağıtıldıktan sonra aşağıdaki kubectl
komutu çalıştırarak kümeye ayarlanan Azure Ağ İlkesi Yöneticisi daemon'unu indirip uygulayın.
Linux için:
kubectl apply -f https://raw.githubusercontent.com/Azure/azure-container-networking/master/npm/azure-npm.yaml
Windows için:
kubectl apply -f https://raw.githubusercontent.com/Azure/azure-container-networking/master/npm/examples/windows/azure-npm.yaml
Çözüm ayrıca açık kaynak ve kod Azure Container Networking deposunda kullanılabilir.
Azure NPM ile ağ yapılandırmalarını izleme ve görselleştirme
Azure Ağ İlkesi Yöneticisi, yapılandırmalarınızı izlemenize ve daha iyi anlamanıza olanak sağlayan bilgilendirici Prometheus ölçümleri içerir. Azure portalında veya Grafana Labs'de yerleşik görselleştirmeler sağlar. Azure İzleyici'yi veya Prometheus sunucusunu kullanarak bu ölçümleri toplamaya başlayabilirsiniz.
Azure Ağ İlkesi Yöneticisi ölçümlerinin avantajları
Kullanıcılar daha önce yalnızca bir küme düğümünde çalıştırılan ve ipset
komutları ile iptables
ağ yapılandırmaları hakkında bilgi edinebiliyordu ve bu da ayrıntılı ve anlaşılması zor bir çıkış oluşturuyordu.
Genel olarak ölçümler şunları sağlar:
Belirli bir ip kümesindeki ilke sayısı, ACL kuralları, ipset'ler, ipset girdileri ve girdiler
Tek tek işletim sistemi çağrıları ve kubernetes kaynak olaylarını işlemek için yürütme süreleri (ortanca, 90. yüzdebirlik ve 99. yüzdebirlik)
Kubernetes kaynak olaylarını işlemeye yönelik hata bilgileri (bir işletim sistemi çağrısı başarısız olduğunda bu kaynak olayları başarısız olur)
Örnek ölçüm kullanım örnekleri
Prometheus AlertManager aracılığıyla uyarılar
Aşağıdaki gibi bu uyarılar için bir yapılandırmaya bakın.
Ağ İlkesi Yöneticisi işletim sistemi çağrısında veya bir ağ ilkesini çevirirken bir hata olduğunda uyarır.
Bir oluşturma olayı için değişiklikleri uygulamak için ortanca süre 100 milisaniyeden uzun olduğunda uyarır.
Grafana panomuz veya Azure İzleyici çalışma kitabımız aracılığıyla görselleştirmeler ve hata ayıklama
İlkelerinizin kaç IPTable kuralı oluşturacağını görün (çok sayıda IPTable kuralına sahip olmak gecikme süresini biraz artırabilir).
Küme sayılarını (örneğin, ACL'ler) yürütme süreleriyle ilişkilendirin.
Belirli bir IPTable kuralındaki ipset'in insan dostu adını alın (örneğin,
azure-npm-487392
temsil ederpodlabel-role:database
).
Desteklenen tüm ölçümler
Aşağıdaki listede desteklenen ölçümler yer alır. Herhangi bir quantile
etiket , ve 0.99
olası değerlerine 0.5
0.9
sahiptir. Herhangi bir had_error
etiket, işlemin başarılı mı yoksa başarısız mı olduğunu gösteren olası ve değerlerine false
true
sahiptir.
Ölçüm Adı | Açıklama | Prometheus Ölçüm Türü | Etiketler |
---|---|---|---|
npm_num_policies |
ağ ilkesi sayısı | Ölçer | - |
npm_num_iptables_rules |
IPTable kuralları sayısı | Ölçer | - |
npm_num_ipsets |
IPSet sayısı | Ölçer | - |
npm_num_ipset_entries |
tüm IPSet'lerdeki IP adresi girdilerinin sayısı | Ölçer | - |
npm_add_iptables_rule_exec_time |
IPTables kuralı ekleme çalışma zamanı | Özet | quantile |
npm_add_ipset_exec_time |
IPSet eklemek için çalışma zamanı | Özet | quantile |
npm_ipset_counts (gelişmiş) |
her bir IPSet içindeki girdi sayısı | GaugeVec | set_name & set_hash |
npm_add_policy_exec_time |
ağ ilkesi ekleme çalışma zamanı | Özet | quantile & had_error |
npm_controller_policy_exec_time |
ağ ilkesini güncelleştirme/silme çalışma zamanı | Özet | quantile & had_error & operation (değerlerle update veya delete ) |
npm_controller_namespace_exec_time |
ad alanı oluşturma/güncelleştirme/silme çalışma zamanı | Özet | quantile & & had_error operation (, update veya delete değerleriyle create ) |
npm_controller_pod_exec_time |
pod oluşturma/güncelleştirme/silme çalışma zamanı | Özet | quantile & & had_error operation (, update veya delete değerleriyle create ) |
Ayrıca her "exec_time" Özet ölçümü için "exec_time_count" ve "exec_time_sum" ölçümleri de vardır.
Ölçümler kapsayıcılar için Azure İzleyici veya Prometheus aracılığıyla kazınabilir.
Azure İzleyici için ayarlama
İlk adım, Kubernetes kümeniz için kapsayıcılar için Azure İzleyici'yi etkinleştirmektir. Adımlar kapsayıcılar için Azure İzleyici'ye Genel Bakış bölümünde bulunabilir. Kapsayıcılar için Azure İzleyici'yi etkinleştirdikten sonra, Ağ İlkesi Yöneticisi tümleştirmesini ve Prometheus Ağ İlkesi Yöneticisi ölçümlerinin toplanmasını etkinleştirmek için Kapsayıcılar için Azure İzleyici ConfigMap'i yapılandırın.
Kapsayıcılar için Azure İzleyici ConfigMap'in Ağ İlkesi Yöneticisi ölçümlerini toplamaya yönelik ayarları içeren bir integrations
bölümü vardır.
Bu ayarlar, ConfigMap'te varsayılan olarak devre dışı bırakılır. temel ayarını collect_basic_metrics = true
etkinleştirme, temel Ağ İlkesi Yöneticisi ölçümlerini toplar. Gelişmiş ayarın collect_advanced_metrics = true
etkinleştirilmesi, temel ölçümlere ek olarak gelişmiş ölçümleri toplar.
ConfigMap'i düzenledikten sonra yerel olarak kaydedin ve ConfigMap'i aşağıdaki gibi kümenize uygulayın.
kubectl apply -f container-azm-ms-agentconfig.yaml
Aşağıdaki kod parçacığı, gelişmiş ölçüm koleksiyonuyla etkinleştirilen Ağ İlkesi Yöneticisi tümleştirmesini gösteren kapsayıcılar için Azure İzleyici ConfigMap'ten alınıyor.
integrations: |-
[integrations.azure_network_policy_manager]
collect_basic_metrics = false
collect_advanced_metrics = true
Gelişmiş ölçümler isteğe bağlıdır ve bunları açmak temel ölçüm toplamayı otomatik olarak açar. Gelişmiş ölçümler şu anda yalnızca Network Policy Manager_ipset_counts
içerir.
Yapılandırma haritasında kapsayıcılar için Azure İzleyici koleksiyon ayarları hakkında daha fazla bilgi edinin.
Azure İzleyici için görselleştirme seçenekleri
Ağ İlkesi Yöneticisi ölçüm koleksiyonu etkinleştirildikten sonra, kapsayıcı içgörülerini kullanarak Azure portalında veya Grafana'da ölçümleri görüntüleyebilirsiniz.
Azure portalında küme içgörüleri altında görüntüleme
Azure portalını açın. Kümenizin içgörülerine girdikten sonra Çalışma Kitapları'na gidin ve Ağ İlkesi Yöneticisi (Ağ İlkesi Yöneticisi) Yapılandırması'nı açın.
Çalışma kitabını görüntülemenin yanı sıra, İçgörüler bölümünün altındaki "Günlükler"deki Prometheus ölçümlerini doğrudan sorgulayabilirsiniz. Örneğin, bu sorgu toplanan tüm ölçümleri döndürür.
| where TimeGenerated > ago(5h)
| where Name contains "npm_"
Ayrıca ölçümler için günlük analizini doğrudan sorgulayabilirsiniz. Daha fazla bilgi için bkz . Log Analytics Sorgularını Kullanmaya Başlama.
Grafana panosunda görüntüleme
Grafana Sunucunuzu ayarlayın ve burada açıklandığı gibi bir log analytics veri kaynağı yapılandırın. Ardından Log Analytics arka ucu olan Grafana Panosu'nu Grafana Labs'inize aktarabilirsiniz.
Panoda Azure Çalışma Kitabı'na benzer görseller bulunur. Analizler Metrics tablosundan grafiğe paneller ekleyebilir ve Ağ İlkesi Yöneticisi ölçümlerini görselleştirebilirsiniz.
Prometheus sunucusu için ayarlama
Bazı kullanıcılar kapsayıcılar için Azure İzleyici yerine Prometheus sunucusuyla ölçüm toplamayı seçebilir. Ağ İlkesi Yöneticisi ölçümlerini toplamak için yalnızca kazıma yapılandırmanıza iki iş eklemeniz gerekir.
Prometheus sunucusu yüklemek için kümenize şu helm deposını ekleyin:
helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm repo update
ardından bir sunucu ekleyin
helm install prometheus stable/prometheus -n monitoring \
--set pushgateway.enabled=false,alertmanager.enabled=false, \
--set-file extraScrapeConfigs=prometheus-server-scrape-config.yaml
burada prometheus-server-scrape-config.yaml
şunlardan oluşur:
- job_name: "azure-npm-node-metrics"
metrics_path: /node-metrics
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__address__]
action: replace
regex: ([^:]+)(?::\d+)?
replacement: "$1:10091"
target_label: __address__
- job_name: "azure-npm-cluster-metrics"
metrics_path: /cluster-metrics
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
regex: kube-system
action: keep
- source_labels: [__meta_kubernetes_service_name]
regex: npm-metrics-cluster-service
action: keep
# Comment from here to the end to collect advanced metrics: number of entries for each IPSet
metric_relabel_configs:
- source_labels: [__name__]
regex: npm_ipset_counts
action: drop
Ayrıca işi aşağıdaki içerikle değiştirebilir azure-npm-node-metrics
veya Kubernetes podları için önceden var olan bir işe dahil edebilirsiniz:
- job_name: "azure-npm-node-metrics-from-pod-config"
metrics_path: /node-metrics
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
regex: kube-system
action: keep
- source_labels: [__meta_kubernetes_pod_annotationpresent_azure_Network Policy Manager_scrapeable]
action: keep
- source_labels: [__address__]
action: replace
regex: ([^:]+)(?::\d+)?
replacement: "$1:10091"
target_label: __address__
AlertManager için uyarıları ayarlama
Prometheus sunucusu kullanıyorsanız, bunun gibi bir AlertManager ayarlayabilirsiniz. Aşağıda, daha önce açıklanan iki uyarı kuralı için örnek bir yapılandırma verilmişti:
groups:
- name: npm.rules
rules:
# fire when Network Policy Manager has a new failure with an OS call or when translating a Network Policy (suppose there's a scraping interval of 5m)
- alert: AzureNetwork Policy ManagerFailureCreatePolicy
# this expression says to grab the current count minus the count 5 minutes ago, or grab the current count if there was no data 5 minutes ago
expr: (npm_add_policy_exec_time_count{had_error='true'} - (npm_add_policy_exec_time_count{had_error='true'} offset 5m)) or npm_add_policy_exec_time_count{had_error='true'}
labels:
severity: warning
addon: azure-npm
annotations:
summary: "Azure Network Policy Manager failed to handle a policy create event"
description: "Current failure count since Network Policy Manager started: {{ $value }}"
# fire when the median time to apply changes for a pod create event is more than 100 milliseconds.
- alert: AzurenpmHighControllerPodCreateTimeMedian
expr: topk(1, npm_controller_pod_exec_time{operation="create",quantile="0.5",had_error="false"}) > 100.0
labels:
severity: warning
addon: azure-Network Policy Manager
annotations:
summary: "Azure Network Policy Manager controller pod create time median > 100.0 ms"
# could have a simpler description like the one for the alert above,
# but this description includes the number of pod creates that were handled in the past 10 minutes,
# which is the retention period for observations when calculating quantiles for a Prometheus Summary metric
description: "value: [{{ $value }}] and observation count: [{{ printf `(npm_controller_pod_exec_time_count{operation='create',pod='%s',had_error='false'} - (npm_controller_pod_exec_time_count{operation='create',pod='%s',had_error='false'} offset 10m)) or npm_controller_pod_exec_time_count{operation='create',pod='%s',had_error='false'}` $labels.pod $labels.pod $labels.pod | query | first | value }}] for pod: [{{ $labels.pod }}]"
Prometheus için görselleştirme seçenekleri
Prometheus Sunucusu kullandığınızda yalnızca Grafana panosu desteklenir.
Henüz yapmadıysanız Grafana sunucunuzu ayarlayın ve bir Prometheus veri kaynağı yapılandırın. Ardından Prometheus arka ucu olan Grafana Panomuzu Grafana Labs'inize aktarabilirsiniz.
Bu panonun görselleri, kapsayıcı içgörüleri/log analytics arka ucu olan panoyla aynıdır.
Örnek panolar
Kapsayıcı içgörüleri (CI) ve Grafana'da Ağ İlkesi Yöneticisi ölçümleri için bazı örnek panolar aşağıda verilmiştir.
CI özet sayıları
Zaman içindeki CI sayıları
CI IPSet girdileri
CI çalışma zamanı nicelleri
Grafana pano özet sayıları
Grafana pano sayısı zaman içinde
Grafana panosu IPSet girişleri
Grafana pano çalışma zamanı nicelleri
Sonraki adımlar
Azure Kubernetes Service hakkında bilgi edinin.
Kapsayıcı ağı hakkında bilgi edinin.
Kubernetes kümeleri veya Docker kapsayıcıları için eklentiyi dağıtın.