CentOS 7'ye Kubernetes Kümesi Nasıl Kurulur


Google tarafından Açık Kaynak topluluğuna bağışlanan Kubernetes artık tercih edilen kapsayıcı yönetimi aracı haline geldi. Yalnızca liman işçisi çalışma zamanlarını değil, Konteynerleri ve Rkt çalışma zamanlarını da yönetebilir ve düzenleyebilir.

Tipik bir Kubernetes kümesinde genellikle bir ana düğüm ve birkaç çalışan düğüm veya Minyon bulunur. Çalışan düğümler daha sonra ana düğümden yönetilir, böylece kümenin merkezi bir noktadan yönetilmesi sağlanır.

Ayrıca, genellikle çok hafif, üretim dışı iş yükleri için önerilen tek düğümlü bir Kubernetes kümesini de dağıtabileceğinizi belirtmek önemlidir. Bunun için düğümünüzdeki sanal makinede tek düğümlü Kubernetes kümesi çalıştıran bir araç olan Minikube'ü kullanabilirsiniz.

Önerilen Okuma: CentOS 8'e Kubernetes Kümesi Nasıl Kurulur?

Bu eğitimde, CentOS 7 Linux'ta çok düğümlü Kubernetes kümesi kurulumunun üzerinden geçeceğiz. Bu eğitim komut satırı tabanlı olduğundan terminal pencerenize erişmeniz gerekecektir.

Önkoşullar

  1. Centos 7 çalıştıran birden fazla sunucu (1 Ana Düğüm, 2 Çalışan Düğüm). Ana Düğümünüzün en az 2 CPU'ya sahip olması önerilir, ancak bu katı bir gereklilik değildir.
  2. Tüm düğümlerinizde İnternet bağlantısı. Depodan Kubernetes ve docker paketlerini getireceğiz. Aynı şekilde, yum paket yöneticisinin varsayılan olarak kurulu olduğundan ve paketleri uzaktan alabildiğinden emin olmanız gerekir.
  3. Ayrıca sudo veya root ayrıcalıklarına sahip bir hesaba erişmeniz gerekecektir. Bu derste root hesabımı kullanacağım.

3 düğümlü kümemiz şuna benzer:

Kubernetes Cluster'ın Master-Node'a Kurulumu

Kubernetes'in çalışması için bir kapsayıcıya taşıma motoruna ihtiyacınız olacak. Bu kurulum için en popüler olan docker'ı kullanacağız.

Aşağıdaki adımlar Ana Düğüm üzerinde çalışacaktır.

Adım 1: Ana Bilgisayar Adı, Güvenlik Duvarı ve SELinux'u hazırlayın

Ana düğümünüzde ana bilgisayar adını ayarlayın ve DNS sunucunuz yoksa /etc/hosts dosyanızı da güncelleyin.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Güncellenen ana makine dosyanızın iyi durumda olup olmadığını ping komutunu kullanarak test etmek için işçi-düğümü-1 ve işçi-düğümü-2'ye ping atabilirsiniz.

ping 10.128.0.29
ping 10.128.0.30

Daha sonra SElinux'u devre dışı bırakın ve güvenlik duvarı kurallarınızı güncelleyin.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Bağlantı noktalarında aşağıdaki güvenlik duvarı kurallarını ayarlayın. Her bir güvenlik duvarı-cmd komutunun başarılı bir sonuç döndürdüğünden emin olun.

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

2. Adım: Kubernetes Repo'yu Kurun

CentOS 7'de varsayılan olarak yüklü olarak gelmedikleri için Kubernetes depolarını manuel olarak eklemeniz gerekecektir.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Adım 3: Kubeadm ve Docker'ı yükleyin

Paket deposu artık hazır olduğundan kubeadm ve docker paketlerini yükleyebilirsiniz.

yum install kubeadm docker -y 

Kurulum başarıyla tamamlandığında her iki hizmeti de etkinleştirin ve başlatın.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

4. Adım: Kubernetes Master'ı Başlatın ve Varsayılan Kullanıcıyı Kurun

Artık kubernetes master'ı başlatmaya hazırız ancak bundan önce "kubeadm init" komutunu çalıştırmak için takası devre dışı bırakmanız gerekiyor.

swapoff -a

Kubernetes master'ın başlatılması, çalıştıracağınız "kubeadm init" komutu tarafından yönetilen tam otomatik bir işlemdir.

kubeadm init

Çalışan düğümlerinde çalıştırmanız gerekeceğinden, son satırı kopyalayıp bir yere kaydetmek isteyebilirsiniz.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

İpucu: Bazen bu komut iletilen argümanlardan (args) şikayetçi olabilir; bu nedenle herhangi bir hatadan kaçınmak için onu düzenleyin hatalar. Yani --token'a eşlik eden '\' karakterini sileceksiniz ve son komutunuz bu şekilde görünecektir.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Kubernetes'i başarıyla başlattıktan sonra kullanıcınızın kümeyi kullanmaya başlamasına izin vermeniz gerekir. Bizim durumumuzda bu kurulumu root kullanıcı olarak çalıştırmak istiyoruz, bu nedenle devam edip bu komutları root olarak çalıştıracağız. Tercih ettiğiniz sudo özellikli bir kullanıcıya geçebilir ve aşağıdakileri sudo kullanarak çalıştırabilirsiniz.

Root'u kullanmak için şunu çalıştırın:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Sudo özellikli bir kullanıcı kullanmak için şunu çalıştırın:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Şimdi kubectl komutunun etkin olup olmadığını kontrol edin.

kubectl get nodes

Bu noktada, ana düğümün durumunun "Hazır Değil" olduğunu da fark edeceksiniz. Bunun nedeni henüz kapsül ağını kümeye dağıtmamamızdır.

Kapsül Ağı, mevcut düğüm ağının üzerine dağıtılan, kümenin yer paylaşımlı ağıdır. Pod genelinde bağlantıya izin verecek şekilde tasarlanmıştır.

Adım 5: Pod Ağınızı Kurun

Ağ kümesini dağıtmak, ihtiyaçlarınıza bağlı olarak son derece esnek bir süreçtir ve birçok seçenek mevcuttur. Kurulumumuzu olabildiğince basit tutmak istediğimiz için herhangi bir konfigürasyon veya ekstra kod gerektirmeyen ve kapsül başına bir IP adresi sağlayan Weavenet eklentisini kullanacağız, bu da bizim için harika. Daha fazla seçenek görmek istiyorsanız lütfen burayı kontrol edin.

Bu komutlar pod ağ kurulumunu almak için önemli olacaktır.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Şimdi ana düğümünüzün durumunu kontrol ederseniz "Hazır" olmalıdır.

kubectl get nodes

Daha sonra çalışan düğümleri kümeye ekliyoruz.

Kubernetes Kümesine Katılacak Çalışan Düğümlerini Ayarlama

Aşağıdaki adımlar çalışan düğümlerinde çalıştırılacaktır. Bu adımlar, Kubernetes kümesine katılırken her çalışan düğümde çalıştırılmalıdır.

Adım 1: Ana Bilgisayar Adı, Güvenlik Duvarı ve SELinux'u hazırlayın

Worker-node-1 ve worker-node-2'nizde ana makine adını ayarlayın ve DNS sunucunuz yoksa ana ve çalışan düğümünüzü de güncelleyin. /etc/hosts dosyasındaki düğümler.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Güncellenen ana makine dosyanızın iyi durumda olup olmadığını test etmek için ana düğüme ping atabilirsiniz.

Daha sonra SElinux'u devre dışı bırakın ve güvenlik duvarı kurallarınızı güncelleyin.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Bağlantı noktalarında aşağıdaki güvenlik duvarı kurallarını ayarlayın. Tüm güvenlik duvarı-cmd komutlarının başarılı olduğundan emin olun.

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

2. Adım: Kubernetes Repo'yu Kurun

CentOS 7'de önceden yüklenmiş olarak gelmediğinden Kubernetes depolarını manuel olarak eklemeniz gerekecektir.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Adım 3: Kubeadm ve Docker'ı yükleyin

Paket deposu artık hazır olduğundan kubeadm ve docker paketlerini yükleyebilirsiniz.

yum install kubeadm docker -y 

Her iki hizmeti de başlatın ve etkinleştirin.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

4. Adım: Çalışan Düğümünü Kubernetes Kümesine Katılın

Artık kümeye katılmak için kubeadm init'in oluşturduğu jetona ihtiyacımız var. Bir yere kopyaladıysanız, düğüm-1 ve düğüm-2'nize kopyalayıp yapıştırabilirsiniz.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Son satırda önerildiği gibi, ana düğümünüze geri dönün ve çalışan düğüm-1 ile çalışan düğüm-2'nin sisteme katılıp katılmadığını kontrol edin. Aşağıdaki komutu kullanarak kümeyi oluşturun.

kubectl get nodes

Tüm adımlar başarıyla yürütülürse, ana düğüm'de düğüm-1 ve düğüm-2'nin hazır durumda olduğunu görmelisiniz.

Önerilen Okuma: Kubernetes Kümesine Nginx Nasıl Dağıtılır

Bu noktada Centos 7'de Kubernetes kümesinin kurulumunu başarıyla tamamladık ve iki işçi düğümünü başarıyla dahil ettik. Artık bölmelerinizi oluşturmaya ve hizmetlerinizi dağıtmaya başlayabilirsiniz.