Bu doküman, Openshift Origin 3.11 platformu üzerine Kubernetes kurulumunu anlatmaktadır.


1) İşletim Sistemi Konfigürasyonları (Tüm Sunucularda Yapılacaktır)


sudo apt update

# Aşağıdaki araçların tüm sunucular üzerinde kurulu olması tavsiye edilmektedir
sudo apt install -y curl wget net-tools gnupg2 software-properties-common apt-transport-https ca-certificates

# Apinizer kullanıcısı oluşturulur ve yetkilendirilir.
sudo adduser apinizer
sudo usermod -aG sudo apinizer

# Kullanıcıya geçilerek işlemlere devam edilir.
su - apinizer

#Güvenlik duvarı kapatılır.
sudo systemctl stop ufw
sudo systemctl disable ufw

# Kubernetes, MongoDB ve Elasticsearch ortak olarak işletim sisteminde swap kullanımını istememektedirler. Bunun için swap'i devre dışı bırakalım.
# Çalışan sistemde swap devre dışı bırakmak için
sudo swapoff -a

# Sistem baştan başladığın swap'ın açılmaması için /etc/fstab dosyası içindeki swap satırı silinir ya da yoruma alınır.
# Daha sonra vi dosyasını kapatılır (:wq)
sudo vi /etc/fstab
POWERSHELL

2) Docker Kurulumu

2.1) Konteyner Kurulumu (Tüm Openshift Sunucularında Yapılacaktır)

Apinizer kurulumuna geçmeden önce sistemi hazırlamak ve Docker'ı yüklemek için aşağıdaki adımlar izlenir.

#Modüllerin kalıcı yüklenmesi için
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

#Modüllerin çalışmakta olan sistemde yüklenmeleri için
sudo modprobe overlay
sudo modprobe br_netfilter
POWERSHELL

sysctl ayarları

sudo vi /etc/sysctl.d/k8s.conf
POWERSHELL

Buradaki ilk üç satır zorunlu olup, diğerleri ihtiyaca göre değiştirilebilinir.

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
net.ipv4.tcp_max_syn_backlog=40000
net.core.somaxconn=40000
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_moderate_rcvbuf=1
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_mem=134217728 134217728 134217728
net.ipv4.tcp_rmem=4096 277750 134217728
net.ipv4.tcp_wmem=4096 277750 134217728
net.core.netdev_max_backlog=300000
YML

Docker kurulumu yapılır.

sudo apt update

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

sudo apt install -y containerd.io docker-ce docker-ce-cli

sudo mkdir -p /etc/systemd/system/docker.service.d

sudo tee /etc/docker/daemon.json <<EOF
{
  "insecure-registries" : [ "172.30.0.0/16" ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
POWERSHELL

Docker servisi son ayarlarla birlikte başlatılır.

sudo systemctl daemon-reload 
sudo systemctl restart docker
sudo systemctl enable docker

sudo groupadd docker

sudo gpasswd -a $USER docker
POWERSHELL

2.2) Openshift Origin Kurulumu (Master sunucularda)

wget https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz
#Uncompress downloaded file.
tar xvf openshift-origin-client-tools*.tar.gz

cd openshift-origin-client*/
sudo mv  oc kubectl  /usr/local/bin/

#Verify installation of OpenShift client utility.
oc version

sudo systemctl restart docker

oc cluster up --public-hostname=YOURHOSTIP

oc login -u system:admin

oc adm policy add-cluster-role-to-user cluster-admin developer

oc login
POWERSHELL


2.2.1) Bash Auto-Completion (İsteğe Bağlı, Herhangi Bir Openshift Master Sunucusunda)

Bu işlem ile kubernetes komutlarının yazımında hız kazanılabilir.

apt install bash-completion
source /usr/share/bash-completion/bash_completion
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null 
POWERSHELL


2.2.2) Openshift Master Sunucusunda kubectl Komutunun Kullanıcı Konfigürasyonunu Ayarlama (Openshift Master Sunucularında)

kubectl komutlarını çalıştıracak kullanıcı için tanımlar yapılır

mkdir -p $HOME/.kube
sudo chown -R $(id -u):$(id -g) $HOME/.kube
POWERSHELL

2.2.3) Kubernetes Ağ Eklentisini Kurun (Openshift Master Sunucularında)

Bu kılavuzda Flannel ağ eklentisini kullanacağız. Desteklenen diğer ağ eklentilerini seçebilirsiniz. Flannel, Kubernet'ler için tasarlanmış bir katman 3 ağ yapısını yapılandırmanın basit ve kolay bir yoludur.

oc apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
POWERSHELL

Önemli

Eğer Master'ı initialize ederken podCIDR olarak 10.244.0.0/16 değerini kullanmadıysanız yukarıdaki yaml dosyasını indirip network ayarlarını burada da düzenlemelisiniz.


2.2.4) Kurulum Kontrol (Herhangi Bir Openshift Master Sunucusunda)

Master'dan aşağıdaki kod çalıştırıldığında Master'a ek olarak oluşturulan Node da görünüyorsa kurulum başarıyla tamamlanmış demektir.

İki dakika sonunda NotReady durumundan Ready durumuna geçmezse "oc describe node NODENAME" komutu ile sorun incelenmelidir.

oc get node

NAME         STATUS   ROLES    AGE   VERSION
localhost    Ready    <none>   5d    v1.11.0+d4cacc0   
BASH

2.2.5) Openshift Yetkilerinin Tanımlanması (Openshift Master Sunucularında)

Openshift küme verilerinizi korumak için, varsayılan olarak en az bir RBAC yapılandırması ile konuşlandırır. Şu anda, Dashboard yalnızca Bearer Token ile giriş yapmayı destekler. Aşağıdaki adımları sırası ile uygulayınız.

vi service.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
YML

vi adminuser.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
YML
oc apply -f service.yaml

oc apply -f adminuser.yaml

oc create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts

oc create clusterrolebinding apinizer -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:apinizer
POWERSHELL


2.3) DNS Test (İsteğe Bağlı, Herhangi Bir Openshift Master Sunucusunda)


oc apply -f https://k8s.io/examples/admin/dns/dnsutils.yaml
POWERSHELL