ProHoster > Blog > yönetim > Kubernetes için çalışma zamanı ortamı olarak Docker'ın yerine geçen CRI-O: CentOS 8'de kurulum
Kubernetes için çalışma zamanı ortamı olarak Docker'ın yerine geçen CRI-O: CentOS 8'de kurulum
Merhaba! Adım Sergey, Surf'te DevOps'um. Surf'teki DevOps departmanı, yalnızca uzmanlar arasında etkileşim kurarak iş süreçlerini entegre etmeyi değil, aynı zamanda hem kendi altyapısında hem de müşterinin altyapısında güncel teknolojileri aktif olarak araştırıp uygulamayı hedefliyor.
Aşağıda dağıtımı incelerken karşılaştığımız konteynerler için teknoloji yığınındaki değişikliklerden biraz bahsedeceğim. 8 CentOS ve nedir CRI-O ve yürütülebilir bir ortamın hızlı bir şekilde nasıl kurulacağını Kubernetes.
Docker neden CentOS 8'e dahil değil?
En son ana sürümleri yükledikten sonra RHEL 8 veya 8 CentOS kimse yardım edemez ama fark edemez: bu dağıtımlar ve resmi depolar uygulamayı içermiyor liman işçisiideolojik ve işlevsel olarak paketlerin yerini alan podman, Buildah (dağıtımda varsayılan olarak bulunur) ve CRI-O. Bunun nedeni, diğer şeylerin yanı sıra, Açık Konteyner Girişimi (OCI) projesinin bir parçası olarak Red Hat tarafından geliştirilen standartların pratikte uygulanmasıdır.
Linux Vakfı'nın bir parçası olan OCI'nin hedefi, aynı anda birçok sorunu çözen konteyner formatları ve çalışma zamanları için açık endüstri standartları oluşturmaktır. Öncelikle Linux'un felsefesine aykırı değillerdi (örneğin her programın bir eylemi gerçekleştirmesi gerektiği kısmında ve liman işçisi bir tür hepsi bir arada kombinasyondur). İkincisi, yazılımdaki mevcut tüm eksiklikleri ortadan kaldırabilirler. liman işçisi. Üçüncüsü, konteynerli uygulamaların (örneğin Red Hat OpenShift) konuşlandırılması, yönetilmesi ve sunulmasına yönelik önde gelen ticari platformların iş gereksinimleriyle tamamen uyumlu olacaklar.
Dezavantajları: liman işçisi ve yeni yazılımın avantajları daha önce ayrıntılı olarak anlatılmıştı. Bu makaledeve OCI projesi kapsamında sunulan tüm yazılım yığınının ve mimari özelliklerinin ayrıntılı bir açıklaması resmi belgelerde ve Red Hat'in kendi makalelerinde bulunabilir (fena değil) makale Red Hat blogunda) ve üçüncü taraflarda yorumlar.
Önerilen yığının bileşenlerinin hangi işlevselliğe sahip olduğuna dikkat etmek önemlidir:
podman — runC süreci aracılığıyla konteynerler ve görüntü depolamayla doğrudan etkileşim;
Buildah - görüntülerin kayıt defterine montajı ve yüklenmesi;
CRI-O — konteyner düzenleme sistemleri için yürütülebilir bir ortam (örneğin, Kubernetes).
Yığının bileşenleri arasındaki genel etkileşim şemasını anlamak için burada bir bağlantı şeması sağlamanın tavsiye edildiğini düşünüyorum. Kubernetes c koşC ve düşük seviyeli kütüphaneler kullanarak CRI-O:
CRI-O и Kubernetes aynı sürüm ve destek döngüsüne bağlı kalın (uyumluluk matrisi çok basittir: ana sürümler Kubernetes и CRI-O çakışıyor) ve bu, bu yığının çalışmasının geliştiriciler tarafından eksiksiz ve kapsamlı bir şekilde test edilmesine odaklanılması dikkate alındığında, bize herhangi bir kullanım senaryosu altında operasyonda elde edilebilecek maksimum stabiliteyi bekleme hakkını verir (burada göreceli hafiflik de faydalıdır) CRI-O ile karşılaştırıldığında liman işçisi işlevselliğin kasıtlı olarak sınırlandırılması nedeniyle).
Yüklediğinizde Kubernetes kullanarak "doğru yol" yolunu (elbette OCI'ye göre) kullanarak CRI-O üzerinde 8 CentOS Bazı küçük zorluklarla karşılaştık ama bunları başarıyla aştık. Toplamda 10 dakika kadar sürecek olan kurulum ve konfigürasyon talimatlarını sizlerle paylaşmaktan mutluluk duyacağım.
CRI-O çerçevesini kullanarak Kubernetes'i CentOS 8'e nasıl dağıtabilirim?
Önkoşullar: yüklü en az bir ana bilgisayarın (2 çekirdek, 4 GB RAM, en az 15 GB depolama) varlığı 8 CentOS ("Sunucu" kurulum profili önerilir) ve bunun için yerel DNS'deki girişler (son çare olarak /etc/hosts dosyasına bir giriş yaparak geçebilirsiniz). Ve unutma takası devre dışı bırak.
Host üzerindeki tüm işlemleri root kullanıcı olarak gerçekleştiriyoruz, dikkatli olun.
İlk adımda işletim sistemini yapılandıracağız, CRI-O için ön bağımlılıkları kurup yapılandıracağız.
İşletim sistemini güncelleyelim:
dnf -y update
Daha sonra güvenlik duvarını ve SELinux'u yapılandırmanız gerekir. Burada her şey, sunucumuzun veya sunucularımızın çalışacağı ortama bağlıdır. Aşağıdaki önerilere göre bir güvenlik duvarı kurabilirsiniz: belgelemeveya güvenilen bir ağ üzerindeyseniz veya üçüncü taraf bir güvenlik duvarı kullanıyorsanız, varsayılan bölgeyi güvenilir olarak değiştirin veya güvenlik duvarını kapatın:
gerekli sürümü ayarlayın CRI-O (ana sürüm CRI-Odaha önce de belirtildiği gibi gerekli sürümle eşleşin Kubernetes), en son kararlı sürümden bu yana Kubernetes şu anda 1.18:
Kurulum sürecinde karşılaştığımız ilk nüansa dikkat edin: konfigürasyonu düzenlemeniz gerekiyor CRI-O Gerekli ortak bileşen belirtilenden farklı bir konuma sahip olduğundan hizmeti başlatmadan önce:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Artık arka plan programını etkinleştirip başlatabilirsiniz CRI-O:
İkinci önemli nüans: arka plan programı kullanmadığımız için liman işçisi, ancak biz arka plan programını kullanıyoruz CRI-O, başlatma ve başlatmadan önce Kubernetes İstediğiniz dizini oluşturduktan sonra /var/lib/kubelet/config.yaml yapılandırma dosyasında uygun ayarları yapmanız gerekir:
Kurulum sırasında karşılaştığımız üçüncü önemli nokta: Kullanılan sürücüyü belirtmemize rağmen grupve iletilen bağımsız değişkenler aracılığıyla yapılandırılması kübelet güncel değilse (belgelerde açıkça belirtildiği gibi), dosyaya argümanlar eklememiz gerekir, aksi takdirde kümemiz başlatılmayacaktır:
özelleştirmek için kontrol Paneli veya işçi düğümleri birkaç dakika içinde kullanabilirsiniz bu komut dosyasıyla.
Kümemizi başlatmanın zamanı geldi.
Kümeyi başlatmak için şu komutu çalıştırın:
kubeadm init --pod-network-cidr=10.244.0.0/16
Çıktı sonunda kullanmanız istenen “kubeadm join…” kümesine katılma komutunu veya en azından belirtilen tokenları mutlaka yazın.
Pod ağı için eklentiyi (CNI) yükleyelim. kullanmanı tavsiye ederim patiska. Muhtemelen daha popüler flanel ile uyumluluk sorunları var nftablesve patiska - proje tarafından önerilen ve tamamen test edilen tek CNI uygulaması Kubernetes:
Bir çalışan düğümü kümemize bağlamak için onu 1. ve 2. talimatlara göre yapılandırmanız veya kullanmanız gerekir. senaryo, ardından önceki adımda yazdığımız “kubeadm init...” çıktısından komutu çalıştırın:
Kümemizin başlatıldığını ve çalışmaya başladığını kontrol edelim:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Hazır! Verileri zaten K8s kümenizde barındırabilirsiniz.
Önümüzde bizi neler bekliyor
Umarım yukarıdaki talimatlar zamandan ve sinirlerden tasarruf etmenize yardımcı olmuştur.
Sektörde meydana gelen süreçlerin sonucu genellikle bunların son kullanıcıların büyük bir kısmı ve ilgili alandaki diğer yazılım geliştiricileri tarafından nasıl kabul edildiğine bağlıdır. OCI girişimlerinin birkaç yıl içinde nelere yol açacağı henüz tam olarak belli değil ama keyifle izleyeceğiz. Hemen yorumlarda düşüncelerinizi paylaşabilirsiniz.
Bizi izlemeye devam edin!
Bu makale aşağıdaki kaynaklar sayesinde ortaya çıktı: