Bu konu, düğümler ve düğüm havuzları hakkında sık sorulan soruları yanıtlar. Bir düğümdeki maksimum pod sayısını nasıl değiştireceğinizi, bir düğüm havuzu için işletim sistemi görüntüsünü nasıl güncelleyeceğinizi ve düğüm zaman aşımı sorunlarını nasıl gidereceğinizi öğrenin.
İçindekiler
Düğüm sorunlarını tanılamak ve gidermek için bkz. Anormal düğümleri giderme .
Bir düğüm havuzunda spot örnekleri kullanma
Spot örnekleri kullanmak için yeni bir düğüm havuzu oluşturun veya spot-instance-advisor komutunu kullanın. Daha fazla bilgi için bkz. Spot örnek düğüm havuzları için en iyi uygulamalar.
Bir düğüm havuzu içinde tutarlılığı korumak için, spot örnek düğüm havuzunu kullandıkça öde veya abonelik düğüm havuzuna ya da tam tersine dönüştüremezsiniz.
Düğüm havuzu başına birden çok ECS örnek türü
Evet, mümkündür. Örnek türü kullanılamazlığı veya envanter eksikliği nedeniyle düğüm ölçeklendirme hatalarını önlemek için düğüm havuzunuzu birden çok ECS örnek türüyle yapılandırmanızı öneririz. Bunu yapmak için birden çok kullanılabilirlik alanında birden çok vSwitch yapılandırın, birden çok ECS örnek türü seçin veya vCPU ve belleğe göre örnek türlerini belirtin. Düğüm havuzu oluşturulduktan sonra, konsoldaki ölçeklenebilirlik düzeyi önerilerine dayanarak örnek türleri ekleyebilir veya bir düğüm havuzunun ölçeklenebilirlik düzeyini görüntüleyebilirsiniz.
Desteklenen örnek türlerinin listesi ve düğüm yapılandırma önerileri için bkz. ECS örnek türü yapılandırma önerileri .
Düğüm başına maksimum pod sayısı
Düğüm başına maksimum Pod sayısının hesaplanması, kümenin ağ eklentisine bağlıdır. Daha fazla bilgi için bkz. Düğüm başına maksimum Pod sayısı.
Terway: Düğüm başına maksimum Pod sayısı, konteyner ağındaki ve ana bilgisayar ağındaki Podların toplamıdır.
Flannel: Sınır, küme oluşturma sırasında belirtilen Number of Pods per Node değeridir.
Konsolun Nodes Nodes sayfasında, düğüm başına maksimum Pod sayısını (diğer adıyla Pod Kotası) görüntüleyebilirsiniz.
Bir küme oluşturduktan sonra düğüm başına maksimum Pod sayısını değiştiremezsiniz. Bir düğüm bu sınıra ulaşırsa, Pod kapasitesini artırmak için düğümlerinizi ölçeklendirin. Daha fazla bilgi için bkz. Bir düğümde kullanılabilir Podları ayarlama.
Düğüm pod kapasitesini ayarlama
Ağ eklentisi, bir çalışan düğümün destekleyebileceği maksimum pod sayısını belirler; bu sınır genellikle değiştirilemez. Terway modunda, sınır ECS örneğinin sağladığı esnek ağ arayüzü (ENI) sayısına bağlıdır. Flannel modunda, sınır bir küme oluştururken belirtilir ve daha sonra değiştirilemez. Pod sınırına ulaşırsanız, toplam kullanılabilir pod sayısını artırmak için düğüm havuzunuza düğüm eklemenizi öneririz.
Daha fazla bilgi için bkz. Bir kümedeki maksimum pod sayısını artırma.
Düğüm yapılandırmasını değiştirme
Hizmet kararlılığını sağlamak için, belirli parametreler—özellikle kullanılabilirlik ve ağ ile ilgili olanlar—bir düğüm havuzu oluşturulduktan sonra değiştirilemez. Örneğin, bir düğümün ait olduğu konteyner çalışma zamanını veya VPC'yi değiştiremezsiniz.
Değiştirilebilir parametreler için, düğüm havuzu yapılandırmasındaki değişiklikler yalnızca yeni düğümler için geçerlidir. Mevcut düğümler, Mevcut Düğümlerin ECS Etiketlerini Güncelle veya Mevcut Düğümlerin Etiketlerini ve Taint'lerini Güncelle gibi özel seçenekleri kullanmadığınız sürece etkilenmez.
Değiştirilebilir parametreler ve değişikliklerin ne zaman etkili olacağıyla ilgili ayrıntılar için bkz. Düğüm havuzları oluşturma ve yönetme.
Alternatif olarak, yeni bir yapılandırmayı uygulamak için istediğiniz yapılandırmaya sahip yeni bir düğüm havuzu oluşturabilirsiniz. Ardından, eski düğüm havuzundaki düğümleri bakım dışı bırakın ve boşaltarak iş yüklerinizi taşıyın. Taşıma tamamlandıktan sonra, eski düğüm havuzundaki örnekleri serbest bırakabilirsiniz. Talimatlar için bkz. Düğümleri bakım dışı bırakma ve boşaltma.
İstenen Düğümler devre dışı bırakılabilir mi?
Bir düğüm havuzunun Scaling Mode Manual olarak ayarlanmışsa, Expected Nodes yapılandırmanız gerekir. Bu özellik devre dışı bırakılamaz.
Belirli bir düğümü kaldırmak için bkz. Bir düğümü kaldırma. Belirli bir düğüm eklemek için bkz. mevcut bir düğüm ekleme. Bir düğümü kaldırdıktan veya mevcut bir düğüm ekledikten sonra İstenen Düğümler otomatik olarak yeni düğüm sayısına güncellenir. Manuel olarak değiştirmeniz gerekmez.
İstenen Düğümler içeren ve içermeyen düğüm havuzları
İstenen Düğümler parametresi, bir düğüm havuzunun amaçlanan kapasitesini tanımlar. Bu değeri ayarlayarak bir düğüm havuzunu içeri veya dışarı ölçeklendirebilirsiniz. Ancak, bazı eski düğüm havuzlarında bu özellik etkinleştirilmemiş olabilir.
Aşağıdaki tabloda, İstenen Düğümler özelliği etkinleştirilmiş ve etkinleştirilmemiş düğüm havuzları için sistemin işlemlere nasıl yanıt verdiği açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yönetilmeyen düğümleri bir düğüm havuzuna taşıma
Düğüm havuzu özelliği yayınlanmadan önce oluşturulan eski ACK kümelerinde, bazı çalışan düğümler herhangi bir düğüm havuzuna ait olmayabilir. Bu yönetilmeyen düğümleri gruplu yönetim ve otomatik bakım altına almak için bunları bir düğüm havuzuna taşıyın: bir düğüm havuzu oluşturun, yönetilmeyen düğümleri kümeden kaldırın ve ECS örneklerini yeniden düğüm havuzuna ekleyin.
Bunu yapmak için yeni bir düğüm havuzu oluşturun veya mevcut birini ölçeklendirin, yönetilmeyen düğümleri kümeden kaldırın ve ardından bunları hedef düğüm havuzuna ekleyin. Daha fazla bilgi için bkz. Yönetilmeyen düğümleri bir düğüm havuzuna taşıma.
Bir düğüm havuzunun işletim sistemi görüntüsünü değiştirme
Bir düğüm havuzunun işletim sistemini değiştirebilirsiniz, örneğin kullanım ömrü sona ermiş (EOL) bir sürümden desteklenen bir sürüme geçmek için. Başlamadan önce, desteklenen işletim sistemleri, en son görüntü sürümleri ve kullanım sınırlamaları için İşletim sistemi görüntüsü sürüm notlarına bakın.
Ayrıntılı talimatlar ve dikkat edilmesi gerekenler için bkz. Bir düğüm havuzunun işletim sistemini değiştirme.
Belirli bir ECS örneğini serbest bırakma
Belirli bir ECS örneğini serbest bırakmak için düğümü kaldırın. Bu eylem istenen düğüm sayısını otomatik olarak günceller. Rastgele bir ölçek daraltmayı tetiklediği ve hedeflenen örneğin kaldırılmasının garanti edilmediği için istenen düğüm sayısını değiştirerek belirli bir örneği serbest bırakmaya çalışmayın.
Düğüm ekleme zaman aşımları nasıl çözülür?
Düğüm ile API Server CLB arasındaki ağ bağlantısını kontrol edin. İlk olarak güvenlik grubunun gereksinimleri karşıladığını doğrulayın. Mevcut bir düğüm eklerken güvenlik grubu sınırlamaları için bkz. Sınırlamalar. Diğer ağ bağlantısı sorunları için bkz. Ağ yönetimi SSS.
Çalışan düğüm ana bilgisayar adlarını değiştirme
Kümeyi oluşturduktan sonra bir çalışan düğümün ana bilgisayar adını özelleştiremezsiniz. Geçici çözüm olarak, ana bilgisayar adını değiştirmek için düğüm havuzunun adlandırma kuralını kullanabilirsiniz.
Bir küme oluştururken, Custom Node Name parametresinde bir çalışan düğümün ana bilgisayar adını tanımlayabilirsiniz. Daha fazla bilgi için bkz. ACK yönetilen küme oluşturma.
Düğümü kaldırın. Daha fazla bilgi için bkz. Bir düğümü kaldırma.
-
Kaldırdığınız düğümü tekrar düğüm havuzuna ekleyin. Daha fazla bilgi için bkz. Düğümleri manuel ekleme.
Düğüm daha sonra düğüm havuzunun adlandırma kuralına göre otomatik olarak yeniden adlandırılır.
GPU düğüm çekirdeğini manuel yükseltme
Bu konuda, mevcut bir kümedeki bir GPU düğümünde çekirdek ve ilgili NVIDIA sürücüsünün manuel olarak nasıl yükseltileceği açıklanmaktadır.
Mevcut çekirdek sürümü 3.10.0-957.21.3 değerinden düşüktür.
Çekirdek yükseltmek hassas bir işlemdir. Hedef çekirdek sürümünüzü onaylayın ve dikkatli ilerleyin.
Bu kılavuz, çekirdek yükseltmesinden sonra gerekli olan NVIDIA sürücü yükseltmesine odaklanmaktadır. Çekirdek yükseltme işlemi ele alınmamaktadır.
Bir kümenin kubeconfig dosyasını alma ve kubectl ile bağlanma.
-
GPU düğümünü (örneğin, cn-beijing.i-2ze19qyi8votgjz* düğümünü) bakım dışı bırakın.
kubectl cordon cn-beijing.i-2ze19qyi8votgjz***** node/cn-beijing.i-2ze19qyi8votgjz***** cordoned -
Sürücüyü yükseltmek istediğiniz GPU düğümünü boşaltın.
kubectl drain cn-beijing.i-2ze19qyi8votgjz***** --grace-period=120 --ignore-daemonsets=true node/cn-beijing.i-2ze19qyi8votgjz***** cordoned WARNING: Ignoring DaemonSet-managed pods: flexvolume-9scb4, kube-flannel-ds-r2qmh, kube-proxy-worker-l62sf, logtail-ds-f9vbg pod/nginx-ingress-controller-78d847fb96-***** evicted -
Mevcut NVIDIA sürücüsünü kaldırın.
NotBu adımda kaldırılan sürücü paketi 384.111 sürümüdür. Sürücü sürümünüz 384.111 değilse, resmi NVIDIA web sitesinden ilgili sürücü yükleyicisini indirmeniz ve bu adımdaki
384.111ifadesini gerçek sürümünüzle değiştirmeniz gerekir.-
GPU düğümünde oturum açın ve sürücü sürümünü kontrol etmek için
nvidia-smikomutunu çalıştırın.sudo nvidia-smi -a | grep 'Driver Version' Driver Version : 384.111 -
NVIDIA sürücü yükleyicisini indirin.
cd /tmp/ sudo curl -O https://cn.download.nvidia.cn/tesla/384.111/NVIDIA-Linux-x86_64-384.111.runNotNVIDIA sürücüsünü kaldırmak için yükleyiciyi kullanmanız gerekir.
-
Mevcut NVIDIA sürücüsünü kaldırın.
sudo chmod u+x NVIDIA-Linux-x86_64-384.111.run sudo sh ./NVIDIA-Linux-x86_64-384.111.run --uninstall -a -s -q
-
-
Çekirdeği yükseltin.
Çekirdeği yükseltmek için işletim sisteminizin prosedürlerini izleyin.
-
GPU örneğini yeniden başlatın.
sudo reboot -
GPU düğümünde tekrar oturum açın ve ilgili kernel-devel paketini yükleyin.
sudo yum install -y kernel-devel-$(uname -r) -
Gerekli NVIDIA sürücüsünü indirmek ve yüklemek için resmi NVIDIA web sitesine gidin. Bu konuda örnek olarak 410.79 sürümü kullanılmıştır.
# Change to the /tmp directory. cd /tmp/ # Download the NVIDIA driver installer. sudo curl -O https://cn.download.nvidia.cn/tesla/410.79/NVIDIA-Linux-x86_64-410.79.run # Add executable permissions to the installer. sudo chmod u+x NVIDIA-Linux-x86_64-410.79.run # Run the installer in silent mode. sudo sh ./NVIDIA-Linux-x86_64-410.79.run -a -s -q # Warm up the GPU. sudo nvidia-smi -pm 1 || true sudo nvidia-smi -acp 0 || true sudo nvidia-smi --auto-boost-default=0 || true sudo nvidia-smi --auto-boost-permission=0 || true sudo nvidia-modprobe -u -c=0 -m || true -
/etc/rc.d/rc.local dosyasını kontrol edin ve aşağıdaki yapılandırmayı içerip içermediğini doğrulayın. İçermiyorsa, manuel olarak ekleyin.
sudo nvidia-smi -pm 1 || true sudo nvidia-smi -acp 0 || true sudo nvidia-smi --auto-boost-default=0 || true sudo nvidia-smi --auto-boost-permission=0 || true sudo nvidia-modprobe -u -c=0 -m || true -
kubelet ve Docker'ı yeniden başlatın.
sudo service kubelet stop sudo service docker restart sudo service kubelet start -
Podların tekrar planlanabilmesi için GPU düğümünün bakım dışı bırakmasını kaldırın.
kubectl uncordon cn-beijing.i-2ze19qyi8votgjz***** node/cn-beijing.i-2ze19qyi8votgjz***** uncordoned -
GPU düğümündeki cihaz eklentisi podunun sürümünü doğrulayın.
kubectl exec -n kube-system -t nvidia-device-plugin-cn-beijing.i-2ze19qyi8votgjz***** nvidia-smi Thu Jan 17 00:33:27 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 410.79 Driver Version: 410.79 CUDA Version: N/A | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla P100-PCIE... On | 00000000:00:09.0 Off | 0 | | N/A 27C P0 28W / 250W | 0MiB / 16280MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+Notdocker pskomutunu çalıştırırsanız ve GPU düğümünde hiçbir konteynerin başlatılmadığını görürseniz bkz. GPU düğüm konteyner başlatma sorunlarını giderme.
GPU düğümlerinde konteyner başlatma sorunlarını giderme
Kubernetes'in belirli sürümlerini çalıştıran bir GPU düğümünde, kubelet ve Docker hizmetlerini yeniden başlattıktan sonra konteynerler başlatılamayabilir. sudo docker ps komutu boş bir liste döndürür.
sudo service kubelet stop
# Redirecting to /bin/systemctl stop kubelet.service
sudo service docker stop
# Redirecting to /bin/systemctl stop docker.service
sudo service docker start
# Redirecting to /bin/systemctl start docker.service
sudo service kubelet start
# Redirecting to /bin/systemctl start kubelet.service
sudo docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Bu sorun, Docker tarafından kullanılan Cgroup Sürücüsü ile kubelet'in beklediği sürücü eşleşmediğinde ortaya çıkar. Sorunu tanılamak için Docker'ın Cgroup Sürücüsünü kontrol edin.
sudo docker info | grep -i cgroup
Cgroup Driver: cgroupfs
Çıktı cgroupfs ise, kubelet systemd sürücüsünü kullanacak şekilde yapılandırıldığından bu bir uyumsuzluğu doğrular.
Bu sorunu çözmek için Docker Cgroup Sürücüsünü systemd olarak değiştirin.
-
/etc/docker/daemon.json dosyasının yedeğini alın ve ardından /etc/docker/daemon.json dosyasını güncellemek için aşağıdaki komutu çalıştırın.
sudo cat >/etc/docker/daemon.json <<-EOF { "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } }, "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "10" }, "oom-score-adjust": -1000, "storage-driver": "overlay2", "storage-opts":["overlay2.override_kernel_check=true"], "live-restore": true } EOF -
Değişiklikleri uygulamak için Docker ve kubelet'i yeniden başlatın.
sudo service kubelet stop # Redirecting to /bin/systemctl stop kubelet.service sudo service docker restart # Redirecting to /bin/systemctl restart docker.service sudo service kubelet start # Redirecting to /bin/systemctl start kubelet.service -
Docker Cgroup Sürücüsünün
systemdolarak ayarlandığını doğrulayın.sudo docker info | grep -i cgroup Cgroup Driver: systemd
Başarısız bir düğümden Podları taşıma
Uygulama Podlarını başarısız bir düğümden taşımak için düğümü planlanamaz olarak işaretleyin ve ardından boşaltın. Bu işlem, Podları güvenli bir şekilde tahliye eder ve sağlıklı düğümlere yeniden planlar.
ACK konsoluna oturum açın. Nodes sayfasında başarısız düğümü bulun. Actions sütununda More > Drain seçeneğini belirleyin.
Başarısız düğümde sorun giderme. Daha fazla bilgi için bkz. Düğüm sorunlarını giderme.
Kullanılabilirlik alanı arızaları sırasında düğüm tahliye ilkesi
Bir düğüm sağlıksız hale geldiğinde, düğüm denetleyicisi bir tahliye başlatır. Varsayılan tahliye oranı saniyede 0,1 düğümdür ve --node-eviction-rate parametresi tarafından kontrol edilir. Bu, Podların en fazla 10 saniyede bir düğümden tahliye edildiği anlamına gelir.
Ancak, birden çok kullanılabilirlik alanında düğümleri olan bir ACK kümesi için düğüm denetleyicisi, her kullanılabilirlik alanının sağlık durumuna ve küme boyutuna göre bu ilkeyi ayarlar.
Bir kullanılabilirlik alanı üç sağlık durumundan birinde olabilir.
FullDisruption: Kullanılabilirlik alanında sağlıklı düğüm yoktur ve en az bir sağlıksız düğüm vardır.
PartialDisruption: Kullanılabilirlik alanında en az iki sağlıksız düğüm vardır ve sağlıksız düğümlerin toplam düğümlere oranı (
(sağlıksız düğümler / (sağlıksız düğümler + sağlıklı düğümler))olarak hesaplanır) 0,55'i aşar.Normal: Kullanılabilirlik alanı FullDisruption veya PartialDisruption kriterlerini karşılamaz.
Kümeler ayrıca boyuta göre sınıflandırılır:
Büyük küme: 50'den fazla düğümü olan bir küme.
Küçük küme: 50 veya daha az düğümü olan bir küme.
Düğüm denetleyicisi, bu durumlara göre tahliye oranını belirler:
Tüm kullanılabilirlik alanları FullDisruption durumundaysa, tahliye tüm küme için devre dışı bırakılır.
-
En az bir kullanılabilirlik alanı FullDisruption durumunda değilse, tahliye oranı şu şekilde belirlenir:
FullDisruption durumundaki bir kullanılabilirlik alanı için, küme boyutundan bağımsız olarak tahliye oranı varsayılan değer olan saniyede 0,1 düğüm olarak ayarlanır.
PartialDisruption durumundaki bir kullanılabilirlik alanı için, tahliye oranı küme boyutuna bağlıdır. Büyük bir kümede oran saniyede 0,01 düğüme düşürülür. Küçük bir kümede oran 0 olarak ayarlanır, bu da tahliyeyi devre dışı bırakır.
Normal durumundaki bir kullanılabilirlik alanı için, küme boyutundan bağımsız olarak tahliye oranı varsayılan değer olan saniyede 0,1 düğüm olarak ayarlanır.
Daha fazla bilgi için bkz. Tahliye üzerindeki oran sınırları.
Kubelet yolunu özelleştirme
Hayır. Bir ACK kümesindeki kubelet yolu /var/lib/kubelet şeklindedir ve değiştirilemez. Bu yolu değiştirmeyin.
Veri diskini özel bir dizine bağlama
Bu özellik şu anda kanaryada (canary release) bulunmaktadır. Bu özelliği etkinleştirmek için bir bilet gönderin. Etkinleştirildikten sonra, sistem düğüm havuzuna eklediğiniz herhangi bir veri diskini belirtilen bir dizine otomatik olarak biçimlendirir ve bağlar. Bağlama dizini için aşağıdaki kısıtlamalar geçerlidir.
-
Bir veri diskini aşağıdaki kritik işletim sistemi dizinlerine bağlamayın:
/
/etc
/var/run
/run
/boot
-
Bir veri diskini sistem ve konteyner çalışma zamanları tarafından kullanılan aşağıdaki dizinlere veya alt dizinlerine bağlamayın:
/usr
/bin
/sbin
/lib
/lib64
/ostree
/sysroot
/proc
/sys
/dev
/var/lib/kubelet
/var/lib/docker
/var/lib/containerd
/var/lib/container
Her veri diskinin benzersiz bir bağlama dizini olmalıdır.
Bağlama dizini,
/ile başlayan mutlak bir yol olmalıdır.Bağlama dizini satır başı veya satır sonu karakterleri (
\rve\n) içermemeli ve ters eğik çizgi (\) ile bitmemelidir.
Dosya tanımlayıcı sınırlarını değiştirme
Maksimum dosya tanımlayıcı sayısı, aynı anda açık olabilecek dosya sayısını sınırlar. Alibaba Cloud Linux ve CentOS sistemlerinde iki düzeyde dosya tanımlayıcı sınırı vardır:
Sistem düzeyi: Sistemdeki tüm işlemlerin aynı anda açılabileceği maksimum dosya sayısı.
Kullanıcı düzeyi: Tek bir kullanıcının işlemlerinin açabileceği maksimum dosya sayısı.
Konteyner ortamlarında ek bir dosya tanımlayıcı sınırı vardır: bir konteyner içindeki işlem başına maksimum dosya tanımlayıcı sayısı.
Bir düğüm havuzu yükseltmesi, komut satırından manuel olarak yapılan değişikliklerin üzerine yazabilir. Ayarlarınızın kalıcı olmasını sağlamak için düğüm havuzunu düzenleyin.
Sistem düzeyi dosya tanımlayıcı sınırını değiştirme
Talimatlar için bkz. Bir düğüm havuzu için işletim sistemi parametrelerini özelleştirme.
İşlem başına dosya tanımlayıcı sınırını değiştirme
-
Düğümde oturum açın ve
/etc/security/limits.confdosyasını kontrol edin.cat /etc/security/limits.confDüğümdeki tek bir işlem için maksimum dosya tanımlayıcı sayısını yapılandırmak üzere aşağıdaki parametreleri kullanın:
... root soft nofile 65535 root hard nofile 65535 * soft nofile 65535 * hard nofile 65535 -
Maksimum dosya tanımlayıcı sayısını değiştirmek için
sedkomutunu çalıştırın. Önerilen değer 65535'tir.sed -i "s/nofile.[0-9]*$/nofile 65535/g" /etc/security/limits.conf -
Düğümde tekrar oturum açın ve değişikliğinizi doğrulamak için aşağıdaki komutu çalıştırın.
Çıktı yapılandırdığınız değerle eşleşiyorsa değişiklik başarılı olmuştur.
# ulimit -n 65535
Konteyner dosya tanımlayıcı sınırını değiştirme
Bir konteyner için dosya tanımlayıcı sınırını değiştirmek, Docker veya containerd hizmetinin yeniden başlatılmasını gerektirir; bu da çalışan konteynerleri kesintiye uğratır. Hizmet kesintilerini önlemek için bu işlemi yoğun olmayan saatlerde gerçekleştirin.
-
Düğümde oturum açın ve yapılandırma dosyasını görüntülemek için aşağıdaki komutu çalıştırın.
containerd düğümü:
cat /etc/systemd/system/containerd.serviceDocker düğümü:
cat /etc/systemd/system/docker.service
Aşağıdaki parametreler, bir konteyner içindeki tek bir işlem için dosya tanımlayıcı sınırını ayarlar:
... LimitNOFILE=1048576 LimitNPROC=1048576 ... -
Parametre değerlerini değiştirmek için aşağıdaki komutları çalıştırın. Dosya tanımlayıcı sınırı için önerilen değer
1048576değeridir.-
containerd düğümü:
sed -i "s/LimitNOFILE=[0-9a-zA-Z]*$/LimitNOFILE=1048576/g" /etc/systemd/system/containerd.service;sed -i "s/LimitNPROC=[0-9a-zA-Z]*$/LimitNPROC=1048576/g" /etc/systemd/system/containerd.service && systemctl daemon-reload && systemctl restart containerd -
Docker düğümü:
sed -i "s/LimitNOFILE=[0-9a-zA-Z]*$/LimitNOFILE=1048576/g" /etc/systemd/system/docker.service && sed -i "s/LimitNPROC=[0-9a-zA-Z]*$/LimitNPROC=1048576/g" /etc/systemd/system/docker.service && systemctl daemon-reload && systemctl restart docker
-
-
Konteyner içindeki tek bir işlem için dosya tanımlayıcı sınırını kontrol etmek için aşağıdaki komutu çalıştırın.
Çıktı yapılandırdığınız değerle eşleşiyorsa değişiklik başarılı olmuştur.
-
containerd düğümü:
# cat /proc/`pidof containerd`/limits | grep files Max open files 1048576 1048576 files -
Docker düğümü:
# cat /proc/`pidof dockerd`/limits | grep files Max open files 1048576 1048576 files
-
Yönetilmeyen çalışan düğümler için konteyner çalışma zamanını yükseltme
Düğüm havuzları tanıtılmadan önce oluşturulan eski kümelerde yönetilmeyen çalışan düğümler bulunabilir. Bu düğümler için konteyner çalışma zamanını yükseltmek amacıyla bunları bir düğüm havuzuna taşımanız gerekir.
Aşağıdaki adımları izleyin:
Bir düğüm havuzu oluşturun: Kümede uygun bir düğüm havuzu yoksa, yönetilmeyen düğümlerle eşleşen bir yapılandırmaya sahip yeni bir tane oluşturun.
Düğümü kaldırın: Bir düğümü kaldırdığınızda, sistem onu bakım dışı bırakır (planlanamaz olarak işaretler) ve ardından podlarını tahliye etmek için boşaltır. Boşaltma başarısız olursa kaldırma işlemi durur. Düğüm, yalnızca boşaltma başarılı olursa kümeden kaldırılır.
-
Mevcut bir düğüm ekleyin: Düğümü mevcut bir düğüm havuzuna ekleyin. Alternatif olarak, sıfır düğümlü bir düğüm havuzu oluşturabilir ve ardından düğümü buna ekleyebilirsiniz. Düğüm eklendikten sonra, konteyner çalışma zamanı otomatik olarak düğüm havuzunun yapılandırmasında belirtilen çalışma zamanıyla eşleşecek şekilde güncellenir.
NotDüğüm havuzu özelliği ücretsiz olsa da, düğüm havuzu tarafından kullanılan ECS örnekleri gibi temel cloud kaynakları için ücretlendirilirsiniz. Daha fazla bilgi için bkz. Cloud kaynak ücretleri.
"Diğer Düğümler" olarak görüntülenen düğüm havuzu
ACK, konsol, OpenAPI veya CLI aracılığıyla bir kümeye hesaplama kaynakları eklemek için standart yöntemler sağlar. Daha fazla bilgi için bkz. Mevcut bir düğüm ekleme. Düğümleri standart ACK iş akışlarının dışındaki yöntemlerle eklerseniz, ACK kaynaklarını tanımlayamaz ve bunları Nodes sayfasındaki Other Nodes grubuna atar. ACK bu düğümleri bir düğüm havuzu aracılığıyla yönetemez, bu nedenle yaşam döngüsü yönetimi, otomatik O&M ve garantili teknik destek gibi özellikler kullanılamaz.
Bu düğümleri kullanmaya devam ederseniz, küme eklentileriyle uyumluluklarını sağlamanız ve tüm potansiyel riskleri üstlenmeniz gerekir. Bu riskler şunları içerir ancak bunlarla sınırlı değildir:
Sürüm uyumluluğu: Kontrol düzlemi veya sistem bileşenleri yükseltmeleri sırasında, bu yönetilmeyen düğümlerdeki işletim sistemi ve bileşenler yeni sürümlerle uyumsuz hale gelebilir ve bu da hizmet kesintilerine neden olabilir.
İş yükü planlama uyumluluğu: Küme, bu düğümlerin kullanılabilirlik alanı ve kalan kaynak kapasitesi gibi durumlarını doğru bir şekilde raporlayamayabilir. Bu durum, yanlış iş yükü planlama kararlarına, kullanılabilirlik sorunlarına veya performans düşüşüne yol açabilir.
Veri düzlemi uyumluluğu: Düğüm tarafı bileşenlerin ve işletim sisteminin kümenin kontrol düzlemi ve sistem bileşenleriyle uyumluluğu doğrulanmaz, bu da potansiyel kararlılık riskleri oluşturur.
O&M uyumluluğu: Bu düğümlerde konsol veya OpenAPI aracılığıyla yapılan bakım işlemleri, bu düğümler için yönetim kanalı ve yürütme ortamı doğrulanmadığından başarısız olabilir veya beklenmeyen sonuçlar üretebilir.
Düğüm vSwitch'leri için ağ ACL'lerini yapılandırma
Bir düğüm havuzunun vSwitch'inde, gerekli CIDR bloklarından gelen trafiği reddeden bir ağ ACL'si varsa, yeni düğümler kümeye katılamaz ve Başarısız veya Çevrimdışı durumunda kalır.
Gerekli CIDR bloklarına izin vermek ve düğümleri yeniden eklemek için şu adımları izleyin:
-
Ağ ACL kurallarını yapılandırma. Gelen ve giden kurallarda aşağıdaki CIDR bloklarından gelen trafiğe izin verin:
100.104.0.0/16: ACK kontrol düzlemi için yönetim CIDR bloğu.100.64.0.0/10: Alibaba Cloud dahili hizmet CIDR bloğu.100.100.100.200/32: ECS örneği meta veri hizmeti uç noktası.Kümenin VPC'sinin birincil ve varsa ikincil CIDR blokları veya düğümleri içeren vSwitch'in CIDR bloğu.
Sorunlu düğümleri kaldırın. Yeni ağ ACL kuralları etkinleşmeden önce Başarısız veya Çevrimdışı durumunda olan tüm düğümleri kaldırın.
Yeni düğümler eklemek için düğüm havuzları oluşturun ve yönetin veya mevcut bir düğüm havuzunu genişletin. Yeni düğümlerde Hazır durumu, ağ ACL kurallarının doğru yapılandırıldığını onaylar.