Docker ve Kubernetes ile mikroservisler nasıl uygulanır?

Son Güncelleme: 23/01/2026
Yazar: isaac
  • Mikroservisler, her bir servisin özerk ve bağımsız olarak dağıtılabilir olduğu, modüler ve ölçeklenebilir uygulamaların geliştirilmesine olanak tanır.
  • Docker, her bir mikro hizmeti tüm bağımlılıklarıyla birlikte paketleyen, hafif ve taşınabilir konteynerler oluşturmayı kolaylaştırır.
  • Kubernetes, konteynerleri düzenleyerek küme içindeki mikro hizmetlerin dağıtımını, ölçeklendirilmesini, ağ iletişimini ve otomatik kurtarılmasını yönetir.
  • Üretim ortamında mikro hizmetlerin başarılı bir şekilde çalıştırılması için iyi güvenlik, izleme ve otomasyon uygulamalarının hayata geçirilmesi çok önemlidir.

Docker ve Kubernetes ile Mikroservisler

Son yıllarda Mikroservislerin, Docker'ın ve Kubernetes'in birleşimi Modern, ölçeklenebilir ve bakımı kolay uygulamaların dağıtımı için fiili standart haline geldi. Giderek daha fazla şirket, değişen ortamlara ve DevOps stratejilerine daha uygun olan dağıtık mimariler lehine monolitik uygulamalardan uzaklaşıyor.

Merak ediyorsan Docker ve Kubernetes ile mikroservislerin pratikte nasıl uygulanacağıBu içerik tam size göre: temel kavramları, avantajları ve zorlukları, konteynerlerin nasıl oluşturulacağını, bir kümede nasıl yönetileceğini ve kurulum için hangi adımların izleneceğini inceleyeceğiz. Windows y LinuxAyrıca, bunları gerçek dünya ortamlarında akıllıca kullanmaya yönelik bir dizi ipucu da içeriyor.

Mikroservis mimarisi nedir ve monolit mimariden farkı nedir?

Mikro hizmet mimarisi şunlara dayanmaktadır: Bir uygulamayı birden fazla küçük, özerk ve bağımsız olarak dağıtılabilir hizmete bölmek.Her biri belirli bir işlevselliğe (kullanıcılar, ödemeler, katalog, siparişler vb.) odaklanmıştır ve çoğunlukla hafif API'ler (HTTP/REST, gRPC, mesajlaşma vb.) aracılığıyla iletişim kurarlar.

Öte yandan, monolitik bir uygulamada, Tüm iş mantığı, sunum katmanı ve veri erişimi tek bir dağıtım bloğunda paketlenmiştir.Herhangi bir değişiklik, tüm sistemin yeniden derlenmesini, test edilmesini ve devreye alınmasını gerektirir; bu da evrimi zorlaştırır ve üretime hata girme riskini artırır.

Mikro hizmetlerde, her hizmetin kendi yaşam döngüsü vardır: Bağımsız olarak geliştirilebilir, test edilebilir, dağıtılabilir, ölçeklendirilebilir ve sürümlendirilebilir.Bu, birden fazla ekibin paralel olarak çalışmasına olanak tanır, yeni teknolojilerin benimsenmesini kolaylaştırır ve CI/CD uygulamalarıyla entegrasyonu kolaylaştırır.

Dahası, bu mimari şu kavramı ortaya koymaktadır: bileşen bağımsız ölçeklenebilirlikBelirli bir modüldeki yükü artırmak için tüm monolitik uygulamayı ölçeklendirmek yerine, yalnızca gerçekten ihtiyaç duyan mikro hizmetler ölçeklendirilir ve böylece altyapı kaynakları daha iyi optimize edilir.

Mikroservislerin gerçek avantajları ve zorlukları

Mikro hizmetlere geçiş sadece bir moda değil: Ölçeklenebilirlik, dayanıklılık ve dağıtım hızı açısından somut faydalar sağlar.Ancak bu durum, yönetilmesi gereken operasyonel bir karmaşıklığı da beraberinde getiriyor.

En dikkat çekici avantajlardan biri de şudur: her bir hizmetin bağımsız ölçeklenebilirliğiÖrneğin, ödeme modülü yönetim modülünden daha fazla trafik alıyorsa, uygulamanın geri kalanına dokunmadan veya kaynak israfına yol açmadan yalnızca ödeme mikroservisinin kopyalarını artırabilirsiniz.

Ayrıca çok şey kazanırsınız sürekli dağıtım ve sık teslimatlarHer bir hizmeti ayrı ayrı ele alarak, uygulamanın tamamını durdurmaya veya yeniden dağıtmaya gerek kalmadan yeni sürümleri kademeli olarak yayınlamak mümkün olur; bu da bakım sürelerini kısaltır ve pazara sunma süresini iyileştirir.

Bir diğer önemli nokta ise dayanıklılık ve hata toleransıDoğru tasarlandığında, bir mikro hizmetin arızalanması tüm sistemi çökertmez. Zaman aşımı, yeniden deneme ve devre kesici gibi yöntemlerle diğer hizmetler yanıt vermeye devam edebilir ve arızaların etkisini sınırlayabilir.

Ayrıca, mikro hizmetler şunlara olanak tanır: teknolojik esneklikHer ekip, iletişim sözleşmelerine ve platformun genel politikalarına uymak koşuluyla, hizmetleri için en uygun dili, çerçeveyi veya veritabanını seçebilir.

Madalyonun diğer yüzünde ise şunu buluyoruz: operasyonel ve gözlemlenebilirlik karmaşıklığıDüzinelerce veya yüzlerce hizmeti yönetmek, dağıtık ağlar, hizmetler arası izleme, merkezi günlük kaydı, güvenlik, API sürümleme ve veri tutarlılığı ile ilgilenmeyi gerektirir; bu da gelişmiş araçlar ve olgun süreçler gerektirir.

Ayrıca işler karmaşıklaşıyor. hizmetler arası iletişimin yönetimiVeri alışverişinin nasıl yapılacağı, hataların nasıl ele alınacağı, gecikmenin nasıl yönetileceği ve yavaş bir bağımlılığın sistemin geri kalanını yavaşlatmasının nasıl önleneceği konusunda dikkatli bir tasarım şarttır. Test ve hata ayıklama artık önemsiz olmaktan çıkar, çünkü Test edilen tek bir blok değil, birbirine bağlı hizmetler kümesidir..

Konteynerlerle mikro hizmet mimarisi

Konteynerler: Mikroservisleri izole bir şekilde çalıştırmanın temeli

Konteyner teknolojisi, mikro hizmetler için ideal bir destek haline geldi çünkü Bu özellik, bir uygulamayı ve tüm bağımlılıklarını standartlaştırılmış ve taşınabilir bir birim halinde paketlemenizi sağlar.Her sunucuya kütüphaneler, çalışma ortamları ve araçlar kurmak yerine, her şey konteyner içinde taşınır.

Bir kap, özünde, işletim sistemi düzeyinde sanallaştırmanın hafif bir biçimi: Ana bilgisayar çekirdeğini paylaşır ancak işlemleri yalıtılmış ad alanlarında ve cgroup'lar tarafından sınırlandırılmış kaynaklarla çalıştırır; bu da onların daha hızlı başlatılmasını ve sanal makineye göre daha az kaynak tüketmesini sağlar.

Başlıca özelliklerinden bazıları şunlardır: yalıtım, taşınabilirlik, hafiflik ve modülerlikKendi konteynerinde çalışan her bir mikro hizmetin dağıtımı, durdurulması, güncellenmesi veya çoğaltılması daha kolay hale gelir ve bu da dağıtık mimarilerin prensipleriyle mükemmel bir uyum sağlar.

ile karşılaştırıldığında üretim için sanal makinelerkonteynerler Her bir örnek için tam bir işletim sistemine ihtiyaç duymazlar.Ancak bunun yerine sunucunun belleğini paylaşır. Bu, resimlerin boyutunu önemli ölçüde azaltır ve El tiempo de çizmeKonteynerleri saniyeler içinde kaldırmanıza veya imha etmenize olanak tanır.

  Google Chrome Ağ Hatasını 3 Kolay Adımda Düzeltin

Docker: Mikroservisleri konteynerleştirmek için referans platform.

Docker, konteynerlerle çalışmak için en popüler araçtır çünkü Konteynerleştirilmiş uygulamaların oluşturulmasını, paketlenmesini, dağıtımını ve yürütülmesini kolaylaştırır. hem geliştirme ortamlarında hem de test ve üretim ortamlarında.

Onların temel fikri, yazılımı paketlemektir. Docker görüntüleriBunlar, uygulama kodunu, ihtiyaç duyduğu kütüphaneleri, sistem araçlarını ve temel yapılandırmaları içeren değiştirilemez yapılardır. Uygulamalar bu imajlardan oluşturulur. faaliyette olan konteynerlerBunlar, söz konusu görüntüye dayalı olarak oluşturulmuş izole örneklerdir.

Görüntü oluşturma şu şekilde tanımlanır: DockerfileBu, temel imaj, çalışma dizini, kopyalanacak dosyalar, kurulacak bağımlılıklar, açılacak portlar ve konteyner başlatılırken çalıştırılacak komut gibi talimatları belirten bir metin dosyasıdır.

Node.js ile yazılmış bir API'niz olduğunu hayal edin. Aşağıdakine benzer bir Dockerfile oluşturabilirsiniz; burada Resmi bir Node imajı ile başlayarak, dosyalar kopyalanır, bağımlılıklar yüklenir ve önyükleme komutu tanımlanır.:

FROM node:14
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD

Bu dosya, uygulamanın belirtilen dizinde çalışacağını gösterir. /app konteynerin içindeBağımlılıkların npm ile kurulacağı, 3000 portunun açılacağı ve konteyner başlatıldığında aşağıdaki işlemlerin gerçekleştirileceği belirtiliyor. npm başlangıç.

Bu konteyneri oluşturmak ve başlatmak için, proje klasöründen komutu çalıştırmanız yeterlidir. liman işçisi inşa y después docker koşmakAna bilgisayardan erişime izin vermek için portların eşlenmesi veya çoklu kapsayıcı uygulamaları için kullanım liman işçisi-oluşturma:

docker build -t mi-app .
docker run -p 3000:3000 mi-app

Bu model sayesinde, Klasik "benim bilgisayarımda çalışıyor" sorunu en aza indirgenmiştir.Çünkü çalışma ortamı uygulama ile birlikte hareket eder. Dahası, Docker, CI/CD sistemleri, özel kayıt defterleri ve Kubernetes gibi orkestrasyon araçlarıyla sorunsuz bir şekilde entegre olur.

Docker'ın temel bileşenleri ve mikro hizmetlerdeki rolleri

Tipik bir kurulumda, şunlardan bahsediyoruz: Docker Ana BilgisayarıBu, Docker'ın kurulu olduğu sistemdir (fiziksel veya sanal); Docker onun üzerinde çalışır. liman işçisi motoruGörüntüleri, ağları, disk birimlerini ve konteyner yaşam döngüsünü yöneten arka plan programı.

Kapların içinde şunlar bulunur: Uygulama ve bağımlılıklarının bir imaj içinde paketlenmiş haliBu, Docker yüklü herhangi bir sunucunun bu imajı tutarlı bir şekilde çalıştırmasına olanak tanır. Bu tutarlılık, çeşitli ortamlarda (geliştirme, QA, üretim vb.) dağıtılmış birçok mikro hizmetiniz olduğunda çok önemlidir.

Docker'ın en ilgi çekici avantajlarından bazıları şunlardır: Ortamlar arası taşınabilirlik, dağıtım otomasyonu, süreç modülerliği ve imajlarda katmanlama ve sürüm kontrolü desteği.Bu da değişiklikleri geri almayı ve optimizasyonu kolaylaştırır. depolama.

Kubernetes: Yüzlerce konteyneri yönetmek için kullanılan düzenleyici.

Birkaç kaptan düzinelerce veya yüzlerce kaba geçtiğinizde, Bunları elle yönetmek delilik haline geliyor.İşte tam bu noktada Kubernetes devreye giriyor; konteynerleri büyük ölçekte yönetmek için tasarlanmış açık kaynaklı bir platform.

Kubernetes, aşağıdakiler gibi kritik görevleri otomatikleştirir: dağıtım, ölçeklendirme, hata kurtarma, ağ yapılandırması ve depolama Konteynerleştirilmiş uygulamalar için tasarlanmıştır. Genel bulutlarda, özel bulutlarda, hibrit ortamlarda ve hatta şirket içi ortamlarda çalışacak şekilde tasarlanmıştır.

Odak noktası, konteynerlerin çalıştığı birden fazla düğümden (makineden) oluşan kümeleri yönetmektir. Amaç, şunları sağlamaktır: Uygulamalar her zaman istenilen durumda olur.Kopya sayısı, dağıtılan sürümler, tahsis edilen kaynaklar ve hizmetler arasındaki bağlantı.

Kubernetes'in temel unsurları

Kubernetes'teki en küçük birim şudur: KozaBir Pod, birlikte çalışması gereken bir veya daha fazla kapsayıcı örneğini temsil eder (örneğin, bir uygulama kapsayıcısı ve günlük kaydı için bir yan kapsayıcı). Pod'lar geçicidir. Bunlar, kümenin ihtiyaçlarına göre oluşturulur, yok edilir ve yenileriyle değiştirilir..

Pod'larınızı kullanıma açmak için Kubernetes, şu kaynağı sunar: HizmetBu, ağ soyutlama katmanı görevi görür. Bir Servis, bir dizi Pod'u gruplandırır ve Sabit bir IP adresi, bir DNS adı ve dahili yük dengelemesi sağlar.Böylece müşterilerin her bir Pod'un detaylarını bilmesine gerek kalmaz.

Kaynak açılma Pod'ların nasıl dağıtılacağı ve güncelleneceği, kaç kopya oluşturulacağı, hangi imajın kullanılacağı, hangi etiketlerin uygulanacağı ve hangi güncelleme stratejisinin izleneceği gibi konuları tanımlamak için kullanılır. Kubernetes bunu yönetir. Her zaman istenen sayıda Pod'un çalışır durumda kalmasını sağlayın. Yapılandırmayı değiştirdiğinizde kademeli güncellemeler veya geri alma işlemleri gerçekleştirmek için.

Ayrıca şu gibi kaynaklar da mevcuttur: ConfigMap ve SecretBu özellikler, yapılandırmayı dışarıya taşımanıza ve hassas verileri (şifreler, belirteçler, API anahtarları) imajlar içine paketlemek zorunda kalmadan saklamanıza olanak tanır. Bu, farklı ortamlarda güvenli yapılandırma yönetimini büyük ölçüde basitleştirir.

Kubernetes kümesi nasıl organize edilir?

Kümenin "başı" şudur: Kubernetes Kontrol PlanıBu, tüm sistemi yönetmekten sorumlu çeşitli bileşenleri bir araya getirir. Bunlar arasında şunlar yer alır: API SunucusuBu, kümenin yönetimine açılan kapıdır; herhangi bir işlem (bir Dağıtım oluşturmak, Pod'ları listelemek, bir Hizmeti değiştirmek) bu API üzerinden gerçekleşir.

El Zamanlayıcı Her Pod'un hangi düğümde çalışacağına karar vermekten sorumludur; bu karar verilirken mevcut kaynaklar, yakınlıklar ve kısıtlamalar dikkate alınır; Denetleyici Yöneticisi Kümenin durumunu izleyin ve manifest dosyalarında belirttiğiniz durumla gerçekliğin örtüşmesini sağlamak için gerekli önlemleri alın (örneğin, talep ettiğinizden daha az Pod varsa yenilerini oluşturun).

  Düzeltme: “Windows Kurtarma Medyasını veya Kurulum Medyasını Takın” Hatası

Durum depolaması şu kişiye devredilmiştir: vb.Dağıtılmış bir veritabanı, kümenin tüm kaynaklarının yapılandırmasını ve bilgilerini depolar. Ek olarak, her bir çalışan düğümde aşağıdaki gibi işlemler yürütülür: kübelet (düğüm ile API Sunucusu arasında iletişimi sağlayan aracı), kube-proxy (ağ trafiğini ve yük dengelemesini yöneten) ve konteyner çalışma zamanı (Docker, containerd, CRI-O, vb.)

Kubernetes'te YAML dosyaları kullanarak mikroservislerin dağıtımı

Kubernetes'te bir mikroservisi dağıtmak için, genellikle onu şu şekilde tanımlamak yaygındır: YAML manifestosuBurada, Dağıtımı (Pod şablonu, imaj, portlar, kopya sayısı, etiketler) ve bunu küme içinde veya dışında kullanıma sunmak için ilgili Hizmeti tanımlarsınız.

"My-app" adlı bir uygulama için temel bir dağıtım örneği şöyle görünebilir: Üç kopya ve 3000 numaralı port tanımlanmıştır. konteyner limanı olarak:

apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-app
spec:
replicas: 3
selector:
matchLabels:
app: mi-app
template:
metadata:
labels:
app: mi-app
spec:
containers:
- name: mi-app
image: mi-app:latest
ports:
- containerPort: 3000

Bu bildiri, kümenin sürdürülmesi gerektiğini belirtiyor. üç Pod faaliyette “my-app:latest” imajı ile tüm Pod'lar app=my-app etiketiyle işaretlenir, böylece bir Servis onları bulabilir ve aralarında trafiği dağıtabilir. Kubernetes, ölçeklendirme, güncellemeler ve arıza durumunda Pod'ların değiştirilmesi mantığını otomatik olarak yönetir.

Dağıtımlarla birlikte, genellikle şu türde Hizmetler tanımlanır: ClusterIP, NodePort veya LoadBalancerMikroservisin yalnızca küme içinden, düğümlerden veya internetten erişilebilir olması gerekip gerekmediğine bağlı olarak, tüm bu yapılandırma, CI/CD işlem hatlarıyla sorunsuz bir şekilde entegre olacak şekilde depolarda sürümlendirilir.

Kubernetes'te ölçeklendirme, yükseltmeler ve kendi kendini onarma

Kubernetes kullanmanın en büyük nedenlerinden biri, sahip olduğu yetenektir; Uygulamayı durdurmadan mikro servisleri ölçeklendirin ve güncelleyin.Manifest dosyasında (veya kubectl komutuyla) çoğaltma sayısını değiştirebilirsiniz ve küme, istenen değere ulaşılana kadar Pod'ları oluşturma veya kaldırma işlemini otomatik olarak gerçekleştirecektir.

Bu ölçeklendirme, aşağıdakiler gibi kaynaklar kullanılarak manuel veya otomatik olarak yapılabilir: Yatay Pod Otomatik Ölçekleyici (HPA)Bu özellik, CPU veya bellek gibi ölçütlere bağlı olarak kopyaları dinamik olarak ayarlar. Böylece, yüksek talep dönemlerinde kapasite artırılır ve yük azaldığında kaynaklar serbest bırakılır.

Güncellemelerle ilgili olarak, Kubernetes şu uygulamayı kullanır: yuvarlanan güncellemeler Varsayılan olarak: yeni sürüme sahip Pod'lar oluşturur ve önceki sürüme ait olanları kademeli olarak siler, ani bir kesinti yapmaz. Bir sorun oluşursa, geri alma Önceki sürüme hızlıca geri dönmenizi sağlar.

Bir diğer kritik işlev ise şudur: kendi kendini onarmaBir konteyner veya Pod ölürse, Kubernetes onu otomatik olarak yeniden oluşturur; bir düğüm yanıt vermeyi durdurursa, etkilenen Pod'lar diğer kullanılabilir düğümlere yeniden planlanır ve uygulamanın çalışır durumda kalması sağlanır.

Kubernetes'te mikroservislerin izlenmesi ve gözlemlenebilirliği

Mikro hizmet ortamını doğru şekilde çalıştırmak için yalnızca dağıtım ve ölçeklendirme yeterli değildir: Hizmetlerin performansı ve durumu hakkında gerçek zamanlı bilgiye ihtiyacınız var.Kubernetes'te, metrikleri toplamak için Prometheus ve bunları görselleştirmek için Grafana gibi araçları entegre etmek çok yaygındır.

Prometheus, Pod'lardan, düğümlerden ve küme bileşenlerinden metrikleri "toplar", depolar ve bunlar hakkında uyarılar tanımlamanıza olanak tanır; Grafana ile birlikte, aşağıdaki gibi gösterge panoları oluşturabilirsiniz: CPU kullanımını, belleği, HTTP hatalarını, gecikmeyi, kopya sayısını veya düğüm durumunu izleyin. Çok açık bir şekilde.

Ek olarak, kubectl şunları sunar: komutlar Dağıtımların, Hizmetlerin, Pod'ların ve diğer kaynakların durumunu incelemek için bkz. günlükleriBu, olayları tanımlamayı veya hata ayıklama için konteynerlere erişmeyi içerir. Tüm bunlar, mikro hizmetlerde gözlemlenebilirlik stratejisinin bir parçasıdır. Huzurlu bir şekilde uyumak istiyorsanız bu bir zorunluluktur..

Mikroservisler, Docker ve Kubernetes arasındaki ilişki

Mikroservisler, Docker ve Kubernetes, aynı yapbozun parçaları gibi birbirine uyuyor: Mikroservis mimarisi, uygulamanın nasıl tasarlanacağını tanımlar; Docker, her bir servisin paketlenmesini ve çalıştırılmasını yönetir ve Kubernetes, tüm bu konteynerleri düzenler. Bir küme halinde.

Her mikro hizmet şu şekilde kapsüllenmiştir: Kodu ve bağımlılıklarını içeren bir Docker imajı.Bu, geliştiricinin dizüstü bilgisayarında, test ortamında veya bulut üretim ortamında aynı şekilde davranmasını sağlar. Bu tutarlı paketleme, DevOps felsefesi için hayati önem taşır.

Kubernetes ise kendi payına şu şekilde işlev görür: konteyner düzenleyicisiBu, her bir mikro hizmetin kaç örneğinin çalışması gerektiğine, nerede konumlandırılacaklarına, trafiğin bunlara nasıl dağıtılacağına, arızalardan nasıl kurtulacaklarına ve talep arttığında veya azaldığında nasıl ölçekleneceklerine karar verir.

Örneğin, bir e-ticaret uygulamasında, her biri kendi Docker imajına ve Kubernetes dağıtımına sahip kimlik doğrulama, katalog, alışveriş sepeti ve ödemeler için mikro servisleriniz olabilir. Bu şekilde, Büyük kampanyalar veya kritik zamanlarda yapılan ödemelerde kataloğunuzu diğer süreçleri etkilemeden ölçeklendirebilirsiniz.ve CI/CD süreçlerinden üretim sonrası izlemeye kadar tüm yaşam döngüsünü yönetir.

Windows'a Docker ve Kubernetes Kurulumu

Windows kullanıyorsanız, başlamanın en kolay yolu yüklemektir. Docker MasaüstüBu, Docker motorunu ve ek araçları, hatta Kubernetes'i makinenize entegre etme seçeneklerini bile içerir.

  Windows 11'de ebeveyn denetimleri nasıl etkinleştirilir ve yapılandırılır

Tipik süreç şunları içerir: Docker Desktop'ı resmi web sitesinden indirin.Kurulum dosyasını (Docker Desktop Installer.exe) çalıştırın ve sihirbazı takip edin. Kurulum sırasında Hyper-V veya Docker Desktop'ı kullanmayı seçebilirsiniz. WSL 2 Sanallaştırma teknolojisi olarak; eğer yalnızca bir tane mevcutsa, o kullanılacaktır.

Sistem yeniden başlatıldıktan sonra, Docker Desktop'ı açmak konteyner ortamını başlatır; sanallaştırma etkinleştirilmemişse, yükleyici genellikle bunu kendisi sunar. otomatik olarak etkinleştirinBuradan konteynerleri, örneğin Nginx'i veya kendi uygulamalarınızı başlatabilirsiniz.

Windows'ta Kubernetes kullanmak için öncelikle Docker ve sanallaştırma özelliklerinin etkinleştirilmiş olması gerekir. Ardından, Kubernetes'i Docker Desktop'tan veya kubectl'i kurun ve yapılandırın. Harici kümeleri yönetmek ve gerekirse Kubernetes kontrol panelini uzaktan bir manifest aracılığıyla dağıtmak.

Yapılandırma tamamlandıktan sonra, kubectl ile oluşturulan ve örneğin yapılandırma dosyasına işaret eden bir kimlik doğrulama belirteci kullanarak yerel bir proxy üzerinden kontrol paneline erişebileceksiniz. .kube/config Tarayıcıdan kümeye erişimi yönetmek.

Linux'a Docker ve Kubernetes Kurulumu

Ubuntu gibi Linux sistemlerinde Docker kurulumu genellikle oldukça basittir: Paketler güncellendi, Docker motoru kuruldu ve ortamın doğru çalıştığından emin olmak için kontrol edildi. Bir test konteyneri çalıştırılıyor.

Tipik adımlar arasında sistemin güncellenmesi yer alır. apt-get update ve apt-get upgradeVarsa, Docker Desktop'ın önceki sürümlerini kaldırın ve ardından resmi depolardan veya istediğiniz sürümü belirterek docker-ce, docker-ce-cli, containerd.io ve docker-compose eklentisini yükleyin.

Her şeyin yolunda olduğunu doğrulamak için genellikle bir "hello-world" konteyneri başlatılır. Minimal bir imaj dosyasını indirip çalıştırır.Mesaj doğru şekilde görüntüleniyorsa, Docker'ınız çalışır durumda ve mikro hizmetlerinizi konteynerleştirmeye hazır demektir.

Kubernetes'e gelince, Linux'ta aşağıdaki gibi araçlar kullanılarak kurulabilir: kubeadmTipik iş akışı, Kubernetes deposu anahtarını eklemeyi, paket listesi dosyasını yapılandırmayı, kubeadm'ı kurmayı ve sürümünü kontrol etmeyi içerir.

Ardından küme, ana düğümde şu şekilde başlatılır: kubeadm başlat (Pod'lar için ağ aralığını belirterek), çalışan düğümlerin kümeye katılması ve yerel erişimin dizin oluşturularak yapılandırılması için "join" komutu alınır. $HOME/.kubeadmin.conf dosyasını kopyalayarak ve izinleri ayarlayarak.

Böylece, temel bir kümeniz hazır olacak. kapsayıcılaştırılmış mikro hizmetleri dağıtmakPod'lardan oluşan bir ağ kurun (Flannel, Calico, vb.) ve Deployment'lar, Services'lar ve diğer Kubernetes kaynaklarıyla çalışmaya başlayın.

Docker ve Kubernetes kullanımı için en iyi uygulamalar ve öneriler

Bu ortamlardan en iyi şekilde yararlanmak için, Docker ile ilgili bir dizi en iyi uygulamayı takip etmek önerilir; bunlardan ilki şudur: resmi veya güvenilir görseller kullanınGüvenlik risklerini azaltmak için, dosyalar Docker Hub'dan veya doğrulanmış özel depolardan alınabilir.

Şiddetle tavsiye edilir resim boyutunu optimize et hafif temel görüntüler, çok aşamalı derlemeler ve kaldırma işlemleri kullanılarak geçici dosyalar veya gereksiz dosyalar. Daha küçük resimler daha hızlı indirilir ve Kubernetes'te dağıtımları hızlandırır.

Bir diğer önemli nokta ise kullanmaktır. veri kalıcılığı için hacimlerBilgilerin konteynerler içinde saklanması yerine, bir konteynerin kaybolması veya yeniden oluşturulması önemli verilerin kaybolması anlamına gelmez.

Her bir konteynere ayrılan kaynakları (CPU, bellek, G/Ç) sınırlamak şu konularda yardımcı olur: tek bir hizmetin sunucuyu tekeline almasını önlemek ve geri kalanını bozar. Ayrıca, üretimde kontrolü sağlamak için konteynerlerin Docker Stats gibi araçlar veya daha gelişmiş çözümlerle izlenmesi gerekir.

Kubernetes ile üretime geçmeden önce küme mimarisini ve bileşenlerini anlamak çok önemlidir. Bu, birçok sorunu önler.

Bu da iyi bir fikir mümkün olduğunca otomatikleştirinToplu yüklemeler için çoğaltma denetleyicilerini, otomatik ölçekleyicileri ve İşleri kullanın; kademeli güncellemelerden ve geri alma işlemlerinden yararlanın; ve Git depolarında sürümlü bildirimsel bildirimler tanımlayın.

Güvenlik her zaman en öncelikli konu olmalıdır: API Sunucusuna erişimi kısıtlayın, Secrets kullanarak kimlik bilgilerini yönetin, verileri iletim sırasında ve depolama esnasında şifreleyin.Yama güncellemelerini düzenli olarak uygulayın ve hizmetler arasındaki iletişimi en az ayrıcalık ilkesine göre sınırlayan ağ politikaları tanımlayın.

Son olarak, sahip olmak şarttır. iyi merkezi izleme ve kayıt sistemleriÜretim öncesi ortamlar da dahil olmak üzere, değişikliklerin üretim kümesine getirilmeden önce kapsamlı bir şekilde test edilebildiği, böylece risklerin ve istenmeyen sürprizlerin azaltılabildiği ortamlar mevcuttur.

Mikro hizmetler, Docker konteynerleri ve Kubernetes orkestrasyonundan oluşan bu ekosistem, geleneksel monolitlere kıyasla çok daha esnek, ölçeklenebilir ve dayanıklı sistemler oluşturmanıza olanak tanır. İyi düşünülmüş bir mimariyi, uygun araçları ve DevOps en iyi uygulamalarını birleştirerek, iş yükündeki değişikliklere sorunsuz bir şekilde uyum sağlayan, arızalardan hızla kurtulan ve zaman içinde geliştirilmesi daha kolay olan uygulamalar dağıtabilirsiniz.

Docker Compose eğitim rehberi
İlgili makale:
Konteynerlerin düzenlenmesi için eksiksiz Docker Compose eğitimi.