Kubernetes, karmaşıklık konusunda bir üne sahiptir ancak modern sürümlerin kurulumu nispeten kolaydır. Resmi küme yönetim aracı Kubeadm, kontrol düzleminizi başlatmak ve çalışan düğümlerini kaydetmek için otomatik bir deneyim sağlar.
Bu makale, varsayılan yapılandırmayı kullanarak basit bir Kubernetes kümesi kurma konusunda size yol gösterecektir. Bu, yeni sağlanan bir ana bilgisayar üzerinde çalışması gereken “sıfırdan” bir kılavuzdur. Debian tabanlı bir sistem varsayılmıştır, ancak komutların çoğunu işletim sisteminizin paket yöneticisine uyacak şekilde ayarlayabilirsiniz. Bu adımlar Ubuntu 22.04 ve Kubernetes v1.25 kullanılarak test edilmiştir.
Container Runtime Yükleme
Kubernetes, kapsayıcılarınızı başlatmak ve çalıştırmak için CRI uyumlu bir kapsayıcı çalışma zamanına ihtiyaç duyar. Standart Kubernetes dağıtımı bir çalışma zamanı ile birlikte gelmez, bu yüzden devam etmeden önce bir tane kurmalısınız. containerd en popüler seçimdir. Modern Docker sürümlerine dahil olan çalışma zamanıdır.
Docker’ın Apt deposunu kullanarak containerd’yi yükleyebilirsiniz. İlk önce kurulum prosedürü sırasında kullanılacak bazı bağımlılıkları ekleyin:
$ sudo apt update $ sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release
Ardından, deponun GPG anahtarını Apt’s’e ekleyin keyrings
dizin:
$ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Şimdi bu komutu çalıştırarak sisteminiz için doğru depoyu ekleyebilirsiniz:
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker deposunun içeriğini dahil etmek için paket listenizi güncelleyin:
$ sudo apt update
Sonunda containerd’i kurun:
$ sudo apt install -y containerd.io
Containerd hizmetinin başlatıldığını kontrol edin:
$ sudo service containerd status containerd.service - containerd container runtime Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-09-13 16:50:12 BST; 6s ago
Kubernetes ile düzgün çalışmasını sağlamak için containerd yapılandırma dosyasında birkaç ince ayar yapılması gerekir. İlk önce dosyanın içeriğini containerd’ın varsayılan yapılandırmasıyla değiştirin:
$ sudo containerd config default > /etc/containerd/config.toml
Bu, mevcut tüm yapılandırma alanlarını doldurur ve yeni kurulumlarda CRI desteğinin devre dışı bırakılması gibi bazı sorunları çözer.
Sonraki açık /etc/containerd/config.toml
ve aşağıdaki satırı bulun:
SystemdCgroup = false
Değeri şununla değiştir: true
:
SystemdCgroup = true
için tam desteği etkinleştirmek için bu değişiklik gereklidir. systemd
grup yönetimi. Bu seçenek olmadan Kubernetes sistem kapsayıcıları kendilerini periyodik olarak yeniden başlatır.
Değişikliklerinizi uygulamak için containerd’ı yeniden başlatın:
$ sudo service containerd restart
Kubeadm, Kubectl ve Kubelet’i Yükleme
Sürecin ikinci aşaması Kubernetes araçlarını kurmaktır. Bu üç yardımcı program aşağıdaki yetenekleri sağlar:
- Kubeadm – Küme düzeyinde çalışan bir yönetim aracı. Bunu kümenizi oluşturmak ve ek düğümler eklemek için kullanacaksınız.
- Kubectl – Kubectl, çalıştığında Kubernetes kümenizle etkileşim kurmak için kullandığınız CLI’dir.
- Kubelet – Bu, kümenizin çalışan düğümlerinde çalışan Kubernetes işlemidir. Kontrol düzlemi ile teması sürdürmek ve istendiğinde yeni konteynerleri başlatmaktan sorumludur.
Üç ikili dosya, Google Cloud tarafından barındırılan bir Apt deposunda bulunur. Önce havuzun GPG anahtarlığını kaydedin:
$ sudo curl -fsSLo /etc/apt/keyrings/kubernetes.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
Ardından depoyu kaynaklarınıza ekleyin…
$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
…ve paket listenizi güncelleyin:
$ sudo apt update
Şimdi paketleri kurun:
$ sudo apt install -y kubeadm kubectl kubelet
Apt’nin çalıştırdığınızda bunları otomatik olarak güncellememesi için bu paketleri “tutmak” en iyi uygulamadır. apt upgrade
. Kubernetes küme yükseltmeleri, kapalı kalma süresini ve istenmeyen kesinti değişikliklerini önlemek için manuel olarak başlatılmalıdır.
$ sudo apt-mark hold kubeadm kubectl kubelet
Değiştirmeyi Devre Dışı Bırakma
Kubernetes, takas etkinleştirildiğinde çalışmaz. Kümenizi oluşturmadan önce takası kapatmalısınız. Aksi takdirde, Kubelet’in başlamasını beklerken sağlama işleminin askıda kaldığını göreceksiniz.
Takas işlemini devre dışı bırakmak için bu komutu çalıştırın:
$ sudo swapoff -a
Sonraki /etc/fstab
dosya ve takas bağlantılarını devre dışı bırakın:
UUID=ec6efe91-5d34-4c80-b59c-cafe89cc6cb2 / ext4 errors=remount-ro 0 1 /swapfile none swap sw 0 0
Bu dosya, swap
son satır olarak yazın. Sistem yeniden başlatıldıktan sonra takasın devre dışı kalması için kaldırılmalı veya yorumlanmalıdır.
br_netfilter Modülünü Yükleme
bu br_netfilter
iptables’ın köprülü trafiği görmesini sağlamak için çekirdek modülü gereklidir. Kubeadm, bu modül eksik olduğunda kümenizi oluşturmanıza izin vermez.
Aşağıdaki komutla etkinleştirebilirsiniz:
$ sudo modprobe br_netfilter
Sisteminizin modüller listesine ekleyerek yeniden başlatmanın ardından devam etmesini sağlayın:
$ echo br_netfilter | sudo tee /etc/modules-load.d/kubernetes.conf
Kümenizi Oluşturma
Kubernetes kümenizi oluşturmaya hazırsınız. Koşmak kubeadm init
kontrol uçağınızı barındırmak istediğiniz makinede:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
bu --pod-network-cidr
bayrağı, daha sonra yüklenecek Pod ağ eklentisi için doğru bir CIDR tahsisinin mevcut olması için dahil edilmiştir. varsayılan değeri 10.244.0.0/16
çoğu durumda çalışır ancak yoğun şekilde özelleştirilmiş bir ağ ortamı kullanıyorsanız aralığı değiştirmeniz gerekebilir.
Küme oluşturma işleminin tamamlanması birkaç dakika sürebilir. İlerleme bilgileri terminalinizde görüntülenecektir. Başarı üzerine bu mesajı görmelisiniz:
Your Kubernetes control-plane has initialized successfully!
Çıktı ayrıca kümenizi kullanmaya nasıl başlayacağınızla ilgili bilgileri de içerir.
Kubeconfig Dosyanızı Hazırlama
Otomatik olarak oluşturulan Kubeconfig dosyasını kendi dosyanıza kopyalayarak başlayın. .kube/config
dizin. Kubectl’in içeriğini doğru okuyabilmesi için dosyanın sahipliğini kendinize göre ayarlayın.
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Bir Pod Ağ Eklentisi Yükleme
Kubernetes, çalışan düğümler normal şekilde çalışmaya başlamadan önce kümenizde bir Pod ağ eklentisinin bulunmasını gerektirir. Yüklemenizi tamamlamak için uyumlu bir eklentiyi manuel olarak yüklemeniz gerekir.
Calico ve Flannel en popüler iki seçimdir. Bu kılavuz, basit kurulum deneyimi nedeniyle Flanel kullanır.
Kümenize Flanel eklemek için Kubectl kullanın:
$ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
Birkaç dakika bekleyin ve ardından çalıştırın kubectl get nodes
terminalinizde. Düğüm gösterilerinizi şu şekilde görmelisiniz: Ready
ve kümenizle etkileşim kurmaya başlayabilirsiniz.
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ubuntu22 Ready control-plane 7m19s v1.25.0
Eğer koşarsan kubectl get pods --all-namespaces
kontrol düzlemi bileşenlerinin, CoreDNS ve Flannel’in hepsinin çalışır durumda ve çalışır durumda olduğunu görmelisiniz:
$ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-xlrk6 1/1 Running 5 (16s ago) 11m kube-system coredns-565d847f94-bzzkf 1/1 Running 5 (2m9s ago) 14m kube-system coredns-565d847f94-njrdc 1/1 Running 4 (30s ago) 14m kube-system etcd-ubuntu22 1/1 Running 6 (113s ago) 13m kube-system kube-apiserver-ubuntu22 1/1 Running 5 (30s ago) 16m kube-system kube-controller-manager-ubuntu22 1/1 Running 7 (3m59s ago) 13m kube-system kube-proxy-r9g9k 1/1 Running 8 (21s ago) 14m kube-system kube-scheduler-ubuntu22 1/1 Running 7 (30s ago) 15m
Kümenizle Etkileşim
Artık kümenizle etkileşim kurmak için Kubectl’i kullanmaya başlayabilirsiniz. Devam etmeden önce, Pod’ların programlamasına izin vermek için kontrol düzlemi düğümünüzdeki varsayılan kusuru kaldırın. Kubernetes, kaynak çekişmesini önlemek için Pod’ların kontrol düzlemi düğümünde çalışmasını engeller, ancak bu kısıtlama yerel kullanım için gereksizdir.
$ kubectl taint node ubuntu22 node-role.kubernetes.io/control-plane:NoSchedule- node/ubuntu22 untainted
Yer değiştirmek ubuntu22
kendi düğümünüze atanan adla yukarıdaki komutta.
Şimdi basit bir NGINX Pod başlatmayı deneyin:
$ kubectl run nginx --image nginx:latest pod/nginx created
Bir NodePort hizmetiyle gösterin:
$ kubectl expose pod/nginx --port 80 --type NodePort service/nginx exposed
Hizmete tahsis edilen ana bilgisayar bağlantı noktasını bulun:
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18m nginx NodePort 10.106.44.155 <none> 80:30647/TCP 27s
liman 30647
. Bu uç noktaya yapılan HTTP istekleri, yanıt olarak artık varsayılan NGINX açılış sayfasını yayınlamalıdır:
$ curl http://localhost:30647 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title>
Kubernetes kümeniz çalışıyor!
Başka Bir Düğüm Ekleme
Ek çalışan düğümleri yapılandırmak için önce kullanmak istediğiniz her makinede “Kümeniz Oluşturma”ya kadar olan bölümlerdeki tüm adımları tekrarlayın. Her Düğümün containerd, Kubeadm ve Kubelet’in kurulu olması gerekir. Ayrıca, düğümünüzün kontrol düzleminizi çalıştıran makineye tam ağ bağlantısına sahip olduğunu da kontrol etmelisiniz.
Ardından, yeni çalışan düğümünüzde aşağıdaki komutu çalıştırın:
kubeadm join 192.168.122.229:6443 \ --node-name node-b \ --token <token> \ --discovery-token-ca-cert-hash sha256:<token-ca-cert-hash>
IP adresini kontrol düzlemi düğümünüzün adresiyle değiştirin. değerleri <token>
ve <token-ca-cert-hash>
koştuğunda görüntülenmiş olacak kubeadm init
kontrol düzleminizi oluşturmak için. Aşağıdaki adımları kullanarak bunları geri alabilirsiniz.
Jeton
Koşmak kubeadm token list
kontrol düzlemi düğümünde. Token değeri şurada gösterilecektir: TOKEN
kolon.
$ kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS lkoz6v.cw1e01ckz2yqvw4u 23h 2022-09-14T19:35:03Z authentication,signing
Jeton CA Sertifika Karması
Bu komutu çalıştırın ve çıktısını değer olarak kullanın:
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ openssl dgst -sha256 -hex | sed 's/^.* //'
Kümeye Katılmak
bu kubeadm join
komut başarı üzerine bu çıktıyı üretmelidir:
$ kubeadm join 192.168.122.229:6443 \ --node-name node-b \ --token <token> \ --discovery-token-ca-cert-hash sha256:<token-ca-cert-hash> [kubelet-start] Starting the kubelet[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap... This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details. Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
Düğümün kümeye katıldığını ve Pod’ları almaya hazır olduğunu doğrulayın. kubectl get nodes
emretmek:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION node-b Ready <none> 91s v1.25.0 ubuntu22 Ready control-plane 100m v1.25.0
Düğüm listede görünür ve Ready
onun durumu olarak. Bu, çalışır durumda olduğu ve Kubernetes’in buna Pod’lar planlayabileceği anlamına gelir.
Özet
Kubernetes’i kurmak göz korkutucu görünebilir ancak Kubeadm, zor bitlerin çoğunu sizin için otomatik hale getirir. Hâlâ üzerinde çalışılması gereken birkaç adım olmasına rağmen, başlamadan önce ön koşulların karşılandığından emin olursanız sorunlarla karşılaşmamalısınız.
Çoğu sorun, kullanılabilir kapsayıcı çalışma zamanı olmadığı için ortaya çıkar. br_netfilter
çekirdek modülü eksik, takas etkin veya bir Pod ağ eklentisi sağlama ihtiyacı gözden kaçmış. Sorun giderme, bu yaygın hataları kontrol ederek başlamalıdır.
Kubeadm size doğrudan projenin kendisinden Kubernetes’in en son sürümünü sunar. Tek bir komutla tek düğümlü bir küme başlatmanıza izin veren alternatif dağıtımlar mevcuttur. Minikube, MicroK8s ve K3s üç popüler seçenektir. Bunların kurulumu ve yükseltilmesi genellikle daha kolay olsa da, yukarı akış Kubernet’lere kıyasla hepsinin küçük farklılıkları vardır. Kubeadm’i kullanmak sizi Kubernetes’in iç işleyişine yaklaştırır ve birçok farklı ortama uygulanabilir.