Azure Kubernetes Service (AKS) düğüm havuzları için düğüm yapılandırmasını özelleştirme
Düğüm yapılandırmanızı özelleştirmek, işletim sistemi (OS) ayarlarını veya kubelet parametrelerini iş yüklerinizin gereksinimlerine uyacak şekilde ayarlamanıza olanak tanır. AKS kümesi oluşturduğunuzda veya kümenize bir düğüm havuzu eklediğinizde, yaygın olarak kullanılan işletim sistemi ve kubelet ayarlarının bir alt kümesini özelleştirebilirsiniz. Bu alt kümenin ötesindeki ayarları yapılandırmak için, düğümleriniz için AKS desteğini kaybetmeden gerekli yapılandırmalarınızı özelleştirmek üzere bir daemon kümesi kullanabilirsiniz.
Özelleştirilmiş düğüm yapılandırmasıyla AKS kümesi oluşturma
Yapılandırma dosyaları oluşturma
İşletim sistemi ve kubelet yapılandırma değişiklikleri, parametreleri ve istediğiniz ayarları içeren yeni bir yapılandırma dosyası oluşturmanızı gerektirir. Parametre için bir değer belirtilmezse, değer varsayılan olarak ayarlanır.
Kubelet yapılandırması
Aşağıdaki içeriklere sahip bir linuxkubeletconfig.json
dosya oluşturun:
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
İşletim sistemi yapılandırması
Aşağıdaki içeriklere sahip bir linuxosconfig.json
dosya oluşturun:
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
Özel yapılandırma dosyalarını kullanarak yeni küme oluşturma
Yeni küme oluştururken kubelet yapılandırmasını, işletim sistemi yapılandırmasını veya her ikisini belirtmek için önceki adımlarda oluşturulan özelleştirilmiş yapılandırma dosyalarını kullanabilirsiniz.
Not
Küme oluştururken bir yapılandırma belirtirseniz, yalnızca ilk düğüm havuzundaki düğümlerde bu yapılandırma uygulanır. JSON dosyasında yapılandırılmamış tüm ayarlar varsayılan değeri korur. CustomLinuxOsConfig
işletim sistemi türü için desteklenmez: Windows.
komutunu kullanarak ve yapılandırma dosyalarınızı belirterek özel yapılandırma dosyalarını kullanarak az aks create
yeni bir küme oluşturun. Aşağıdaki örnek komut, özel ./linuxkubeletconfig.json
ve ./linuxosconfig.json
dosyalarıyla yeni bir küme oluşturur:
az aks create --name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
Özel yapılandırma dosyalarını kullanarak düğüm havuzu ekleme
Kümeye düğüm havuzu eklerken, kubelet yapılandırmasını belirtmek için önceki adımda oluşturulan özelleştirilmiş yapılandırma dosyasını kullanabilirsiniz. CustomKubeletConfig
, Linux ve Windows düğüm havuzları için desteklenir.
Not
Mevcut bir kümeye Linux düğüm havuzu eklediğinizde kubelet yapılandırmasını, işletim sistemi yapılandırmasını veya her ikisini de belirtebilirsiniz. Var olan bir kümeye Windows düğüm havuzu eklediğinizde, yalnızca kubelet yapılandırmasını belirtebilirsiniz. Düğüm havuzu eklerken bir yapılandırma belirtirseniz, yalnızca yeni düğüm havuzundaki düğümlerde bu yapılandırma uygulanır. JSON dosyasında yapılandırılmamış tüm ayarlar varsayılan değeri korur.
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json
Diğer yapılandırmalar
Diğer işletim sistemi ayarlarını değiştirmek için aşağıdaki ayarlar kullanılabilir:
Günün Mesajı
--message-of-the-day
Küme oluşturma veya düğüm havuzu oluşturma sırasında Linux düğümlerinde Günün İletisi'ni değiştirmek için dosyanın konumuyla bayrağını geçirin.
az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Nodepool oluşturma
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Özel düğüm yapılandırmalarıyla ilgili sorunları giderme
Ayarların uygulandığını onaylayın
Özel düğüm yapılandırmasını uyguladıktan sonra, ana bilgisayara bağlanarak ve dosya sisteminde yapılandırma değişiklikleri yapıldığını doğrulayarak sysctl
ayarların düğümlere uygulandığını onaylayabilirsiniz.
Özel düğüm yapılandırması desteklenen parametreler
Kubelet özel yapılandırması
Kubelet özel yapılandırması Linux ve Windows düğüm havuzları için desteklenir. Desteklenen parametreler farklılık gösterir ve aşağıda belgelenmiştir.
Linux Kubelet özel yapılandırması
Parametre | İzin verilen değerler/aralık | Varsayılan | Açıklama |
---|---|---|---|
cpuManagerPolicy |
none, static | yok | Statik ilke, tamsayı CPU'su olan Garantili podlardaki kapsayıcıların düğümdeki özel CPU'lara erişmesini sağlar. |
cpuCfsQuota |
true, false | true | CPU sınırlarını belirten kapsayıcılar için CPU CFS kota zorlamasını etkinleştirin/devre dışı bırakın. |
cpuCfsQuotaPeriod |
Milisaniye cinsinden aralık (ms) | 100ms |
CPU CFS kota dönemi değerini ayarlar. |
imageGcHighThreshold |
0-100 | 85 | Görüntü çöp toplama işleminin her zaman çalıştırıldığı disk kullanımı yüzdesi. Çöp toplamayı tetikleyecek en düşük disk kullanımı. Görüntü çöp toplamayı devre dışı bırakmak için 100 olarak ayarlayın. |
imageGcLowThreshold |
0-100, en yüksek değer imageGcHighThreshold |
80 | Görüntü atık toplama işleminin hiçbir zaman çalıştırılamadan önce disk kullanımı yüzdesi. Çöp toplamayı tetikleyebilen en düşük disk kullanımı. |
topologyManagerPolicy |
none, best-effort, restricted, single-numa-node | yok | NUMA düğümü hizalamasını iyileştirin, daha fazla bilgi için buraya bakın. |
allowedUnsafeSysctls |
kernel.shm* , kernel.msg* , kernel.sem , fs.mqueue.* , , net.* |
Hiçbiri | Güvenli olmayan sysctl veya güvenli olmayan sysctl desenlerinin izin verilen listesi. |
containerLogMaxSizeMB |
Megabayt cinsinden boyut (MB) | 50 | Bir kapsayıcı günlük dosyasının döndürülmeden önce en büyük boyutu (örneğin, 10 MB). |
containerLogMaxFiles |
≥ 2 | 5 | Kapsayıcı için mevcut olabilecek en fazla kapsayıcı günlüğü dosyası sayısı. |
podMaxPids |
-1 - çekirdek PID sınırı | -1 (∞) | Podda çalıştırılabilen işlem kimlikleri üst sınırı |
seccompDefault |
Unconfined , RuntimeDefault |
Unconfined |
Tüm iş yükleri için varsayılan sekcomp profilini ayarlar. RuntimeDefault , güvenliği artırmak için belirli sistem çağrılarını kısıtlayarak containerd'ın varsayılan seccomp profilini kullanır. Kısıtlı syscall'lar başarısız olur. Unconfined syscalls üzerinde hiçbir kısıtlama yoktur ve güvenliği azaltan tüm sistem çağrılarına izin verilir. Diğer ayrıntılar için bkz . containerD varsayılan seccomp profili. Bu parametre önizleme aşamasındadır. --namespace "Microsoft.ContainerService" komutunu kullanarak "KubeletDefaultSeccompProfilePreview" özellik bayrağını az feature register kaydedin. |
Windows Kubelet özel yapılandırması
Parametre | İzin verilen değerler/aralık | Varsayılan | Açıklama |
---|---|---|---|
imageGcHighThreshold |
0-100 | 85 | Görüntü çöp toplama işleminin her zaman çalıştırıldığı disk kullanımı yüzdesi. Çöp toplamayı tetikleyecek en düşük disk kullanımı. Görüntü çöp toplamayı devre dışı bırakmak için 100 olarak ayarlayın. |
imageGcLowThreshold |
0-100, en yüksek değer imageGcHighThreshold |
80 | Görüntü atık toplama işleminin hiçbir zaman çalıştırılamadan önce disk kullanımı yüzdesi. Çöp toplamayı tetikleyebilen en düşük disk kullanımı. |
containerLogMaxSizeMB |
Megabayt cinsinden boyut (MB) | 10 | Bir kapsayıcı günlük dosyasının döndürülmeden önce en büyük boyutu (örneğin, 10 MB). |
containerLogMaxFiles |
≥ 2 | 5 | Kapsayıcı için mevcut olabilecek en fazla kapsayıcı günlüğü dosyası sayısı. |
Linux özel işletim sistemi yapılandırma ayarları
Önemli
Arama ve okunabilirliği basitleştirmek için, işletim sistemi ayarları bu makalede adıyla görüntülenir, ancak bunlar camelCase büyük harfe çevirme kuralı kullanılarak yapılandırma JSON dosyasına veya AKS API'sine eklenmelidir.
Örneğin, 'vm.max_map_count ayarını değiştirirseniz, yapılandırma JSON dosyasında 'vmMaxMapCount' olarak yeniden biçimlendirmelisiniz.
Dosya tutamacı sınırları
Çok fazla trafik sunulurken trafik genellikle çok sayıda yerel dosyadan gelir. Aşağıdaki çekirdek ayarlarını ve yerleşik sınırları, bazı sistem belleğine bağlı olarak daha fazlasını işlemenizi sağlayacak şekilde ayarlayabilirsiniz.
Ayar | İzin verilen değerler/aralık | Varsayılan | Açıklama |
---|---|---|---|
fs.file-max |
8192 - 12000500 | 709620 | Linux çekirdeğinin ayıracağı dosya tanıtıcı sayısı üst sınırı, bu değeri artırarak izin verilen en fazla açık dosya sayısını artırabilirsiniz. |
fs.inotify.max_user_watches |
781250 - 2097152 | 1048576 | Sistem tarafından izin verilen en fazla dosya izleme sayısı. Her saat , 32 bit çekirdekte kabaca 90 bayt, 64 bit çekirdekte ise kabaca 160 bayttır. |
fs.aio-max-nr |
65536 - 6553500 | 65536 | aio-nr, geçerli sistem genelinde zaman uyumsuz io isteklerinin sayısını gösterir. aio-max-nr, aio-nr değerinin büyüyebileceği maksimum değeri değiştirmenize olanak tanır. |
fs.nr_open |
8192 - 20000500 | 1048576 | Bir işlemin ayırabileceği en fazla dosya işleyicisi sayısı. |
Yuva ve ağ ayarlama
Çok fazla sayıda eşzamanlı oturumu işlemesi beklenen aracı düğümleri için aşağıdaki TCP ve ağ seçeneklerinin alt kümesini kullanarak düğüm havuzu başına ince ayar yapabilirsiniz.
Ayar | İzin verilen değerler/aralık | Varsayılan | Açıklama |
---|---|---|---|
net.core.somaxconn |
4096 - 3240000 | 16384 | Herhangi bir dinleme yuvası için kuyruğa alınabilecek en fazla bağlantı isteği sayısı. listen(2) işlevine geçirilen kapsam parametresinin değeri için üst sınır. Kapsam bağımsız değişkeni değerinden somaxconn büyükse, bu sınıra kadar sessizce kesilir. |
net.core.netdev_max_backlog |
1000 - 3240000 | 1000 | Arabirim paketleri çekirdekten daha hızlı aldığında INPUT tarafında kuyruğa alınan en fazla paket sayısı. |
net.core.rmem_max |
212992 - 134217728 | 212992 | Bayt cinsinden en büyük alma yuvası arabellek boyutu. |
net.core.wmem_max |
212992 - 134217728 | 212992 | Bayt cinsinden en büyük gönderme yuvası arabellek boyutu. |
net.core.optmem_max |
20480 - 4194304 | 20480 | Yuva başına izin verilen en fazla yardımcı arabellek boyutu (seçenek bellek arabelleği). Yuva seçeneği belleği, yuva kullanımıyla ilgili ek yapıları depolamak için birkaç durumda kullanılır. |
net.ipv4.tcp_max_syn_backlog |
128 - 3240000 | 16384 | Bağlantı istemcisinden hala bildirim almayan kuyruğa alınmış en fazla bağlantı isteği sayısı. Bu sayı aşılırsa çekirdek istekleri bırakmaya başlar. |
net.ipv4.tcp_max_tw_buckets |
8000 - 1440000 | 32768 | Sistem tarafından aynı anda tutulan en fazla yuva sayısı timewait . Bu sayı aşılırsa, bekleme süresi yuvası hemen yok edilir ve uyarı yazdırılır. |
net.ipv4.tcp_fin_timeout |
5 - 120 | 60 | Yalnız bırakılmış (artık herhangi bir uygulama tarafından başvurulmayacak) bağlantının yerel uçta durdurulmadan önce FIN_WAIT_2 durumunda kalma süresi. |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | ETKINLEŞTIRildiğinde keepalive TCP'nin iletileri gönderme keepalive sıklığı. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | Bağlantının kesildiğini belirleyene kadar TCP'nin gönderdiği yoklama.keepalive |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | Yoklamaların ne sıklıkta gönderildiği. Bununla çarpılması tcp_keepalive_probes , yoklamalar başlatıldıktan sonra yanıt vermeyen bir bağlantıyı sonlandırma zamanını verir. |
net.ipv4.tcp_tw_reuse |
0 veya 1 | 0 | Protokol bakış açısından güvenli olduğunda yeni bağlantılar için yuvaların yeniden kullanılmasına TIME-WAIT izin verin. |
net.ipv4.ip_local_port_range |
İlk: 1024 - 60999 ve Son: 32768 - 65535] | İlk: 32768 ve Son: 60999 | Tcp ve UDP trafiği tarafından yerel bağlantı noktasını seçmek için kullanılan yerel bağlantı noktası aralığı. İki sayıdan oluşur: İlk sayı aracı düğümünde TCP ve UDP trafiği için izin verilen ilk yerel bağlantı noktasıdır, ikincisi ise son yerel bağlantı noktası numarasıdır. |
net.ipv4.neigh.default.gc_thresh1 |
128 - 80000 | 4096 | ARP önbelleğinde olabilecek en az girdi sayısı. Girdi sayısı bu ayarın altındaysa çöp toplama tetiklenmez. |
net.ipv4.neigh.default.gc_thresh2 |
512 - 90000 | 8192 | ARP önbelleğinde olabilecek geçici en fazla girdi sayısı. Bu ayar muhtemelen en önemli ayardır çünkü ARP atık toplama işlemi bu yumuşak maksimuma ulaştıktan yaklaşık 5 saniye sonra tetiklenir. |
net.ipv4.neigh.default.gc_thresh3 |
1024 - 100000 | 16384 | ARP önbelleğindeki sabit en fazla girdi sayısı. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 131072 | nf_conntrack , Linux içindeki NAT için bağlantı girdilerini izleyen bir modüldür. Modül, nf_conntrack TCP protokolünün kurulan bağlantı kaydını kaydetmek için bir karma tablo kullanır. nf_conntrack_max karma tablosundaki düğüm sayısı üst sınırıdır; yani modül tarafından nf_conntrack desteklenen bağlantı sayısı üst sınırı veya bağlantı izleme tablosunun boyutudur. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 65536 | nf_conntrack , Linux içindeki NAT için bağlantı girdilerini izleyen bir modüldür. Modül, nf_conntrack TCP protokolünün kurulan bağlantı kaydını kaydetmek için bir karma tablo kullanır. nf_conntrack_buckets karma tablosunun boyutudur. |
Çalışan sınırları
Dosya tanımlayıcı sınırları gibi, bir işlemin oluşturabileceği çalışan veya iş parçacığı sayısı da hem çekirdek ayarı hem de kullanıcı sınırlarıyla sınırlıdır. AKS'de kullanıcı sınırı sınırsızdır.
Ayar | İzin verilen değerler/aralık | Varsayılan | Açıklama |
---|---|---|---|
kernel.threads-max |
20 - 513785 | 55601 | İşlemler çalışan iş parçacıklarını oluşturabilir. Oluşturulabilecek tüm iş parçacıklarının en fazla sayısı çekirdek ayarıyla kernel.threads-max ayarlanır. |
Sanal bellek
Aşağıdaki ayarlar, Linux çekirdeğinin sanal bellek (VM) alt sisteminin ve writeout
kirli verilerin diske çalışmasını ayarlamak için kullanılabilir.
Ayar | İzin verilen değerler/aralık | Varsayılan | Açıklama |
---|---|---|---|
vm.max_map_count |
65530 - 262144 | 65530 | Bu dosya, bir işlemin sahip olabileceği en fazla bellek eşleme alanı sayısını içerir. Bellek eşleme alanları, doğrudan , mprotect ve madvise tarafından ve paylaşılan kitaplıkları yüklerken çağrısının mmap malloc yan etkisi olarak kullanılır. |
vm.vfs_cache_pressure |
1 - 100 | 100 | Bu yüzde değeri, çekirdeğin dizini ve inode nesnelerini önbelleğe almak için kullanılan belleği geri kazanma eğilimini denetler. |
vm.swappiness |
0 - 100 | 60 | Bu denetim, çekirdeğin bellek sayfalarını ne kadar agresif değiştireceğini tanımlamak için kullanılır. Daha yüksek değerler agresifliği artırır, daha düşük değerler takas miktarını azaltır. 0 değeri, boş ve dosya destekli sayfa miktarı bir bölgedeki yüksek su işaretinden az olana kadar çekirdeğin değiştirme işlemini başlatmamasını bildirir. |
swapFileSizeMB |
1 MB - Geçici diskin boyutu (/dev/sdb) | Hiçbiri | SwapFileSizeMB, bu düğüm havuzundan aracı düğümlerinde bir takas dosyasının MB cinsinden boyutunu belirtir. |
transparentHugePageEnabled |
always , madvise , never |
always |
Transparent Hugepages , işlemcinizin bellek eşleme donanımını daha verimli bir şekilde kullanarak performansı geliştirmeye yönelik bir Linux çekirdek özelliğidir. Etkinleştirildiğinde çekirdek mümkün olduğunda ayırma hugepages girişiminde bulunur ve bölge doğal olarak 2 MB hizalanmışsa mmap tüm Linux işlemleri 2 MB sayfa alır. Sistem genelinde etkinleştirildiğinde hugepages bazı durumlarda uygulamalar daha fazla bellek kaynağı ayırabilir. Bir uygulama büyük bir bölge olabilir mmap , ancak yalnızca 1 bayt'a dokunur, bu durumda iyi bir neden olmadan 4k sayfa yerine 2 MB'lık bir sayfa tahsis edilebilir. Bu senaryo, sistem genelinde devre dışı bırakmanın hugepages veya yalnızca bölgelerin içinde MADV_HUGEPAGE madvise bulunmanın mümkün olmasının nedenidir. |
transparentHugePageDefrag |
always , defer , defer+madvise , madvise , , never |
madvise |
Bu değer, çekirdeğin daha fazla hugepages kullanılabilir hale getirmek için bellek sıkıştırmasını agresif bir şekilde kullanıp kullanmayacağını denetler. |
Sonraki adımlar
- AKS kümenizi yapılandırmayı öğrenin.
- Kümenizdeki düğüm görüntülerini yükseltmeyi öğrenin.
- Kümenizi Kubernetes'in en son sürümüne yükseltmeyi öğrenmek için bkz . Azure Kubernetes Service (AKS) kümesini yükseltme.
- Bazı yaygın AKS sorularının yanıtlarını bulmak için AKS hakkında sık sorulan sorular listesine bakın.
Azure Kubernetes Service