GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Kubernetes na CentOS 7, Ubuntu 18.04 / 16.04 a Debian 9

Kubernetes je open-source nástroj pro orchestraci kontejnerů na produkční úrovni, který pomáhá automatizovat nasazení, škálování a správu kontejnerových aplikací. Google původně navrhl Kubernetes a nyní jej spravuje Cloud Native Computing Foundation.

Můžete zavolat Kubernetes je správcem clusteru pro Docker a poskytuje téměř stejné funkce jako Docker Swarm . S Kubernetes můžete nasadit libovolný počet replik kontejnerů do clusteru uzlů a Kubernetes za vás zpracuje zbývající (kde vyvolat kontejnery).

Kubernetes můžeme spustit v místním počítači pomocí níže uvedených metod

1. MinKube – Jednouzlový cluster Kubernetes pro vývoj a testování.
2. Kubeadm-dind (Kuberadm) – Víceuzlový cluster Kubernetes

Všechny metody si můžete přečíst zde .

Zde nasadíme víceuzlový cluster Kubernetes pomocí kubeadm. V tomto nastavení s více uzly budeme mít jeden hlavní uzel a několik pracovních uzlů (minionů).

Komponenty

Hlavní uzel

server kube-API: Je to server API, běží na hlavním uzlu, který odhaluje Kubernetes API
etcd: Úložiště klíčů, které ukládá data clusteru Kubenetes
kube-scheduler: Je to plánovač běžící na hlavním uzlu, který monitoruje nově vytvořené moduly a spouští tyto moduly na vybraných uzlech v závislosti na dostupnosti zdrojů.
kube-controller-manager: Jedná se o správce řízení, který běží na správci, který je zodpovědný za monitorování uzlů a údržbu replikace podů.
cloud-controller-manager: Správce cloudové kontroly, který komunikuje se základními poskytovateli cloudu (např. DigitalOcean, Rancher atd.).

Pracovní Uzly

kubelet: Běží na všech pracovních uzlech a zvládá úkoly, jako jsou spouštěcí moduly a kontejnery.
kube-proxy: Jedná se o síťový proxy server Kubernetes, který předává příchozí požadavky TCP/UDP do back-endového kontejneru.
Container Runtime: Jedná se o kontejnerový software (Docker)

Životní prostředí

Uzel Název hostitele IP adresa OS CPU RAM
Hlavní uzel master.itzgeek.local 192.168.1.10 CentOS 7 / RHEL 7 2 2 GB
Uzel Minion 1 node1.itzgeek.local 192.168.1.20 Ubuntu 18.04 / 16.04 2 2 GB
Minion Node 2 node2.itzgeek.local 192.168.1.30 Debian 9 2 2 GB
Aby Kubernetes fungoval správně, musíte zakázat swap

Zde pro toto demo používám smíšené prostředí. Ale žádám vás, abyste používali podobný operační systém pouze pro usnadnění odstraňování problémů.

Předpoklady

Staňte se uživatelem root.

su -

NEBO

sudo su -

Nastavit název hostitele

Nastavte jedinečný název hostitele pro všechny vaše uzly. Příklad:

hostnamectl set-hostname master.itzgeek.local

Zadejte hostitelský záznam nebo DNS záznam pro vyřešení názvu hostitele pro všechny uzly.

vi /etc/hosts

Vstup:

192.168.1.10 master.itzgeek.local master192.168.1.20 node1.itzgeek.local node1192.168.1.30 node2.itzgeek.local node2

Firewall

Nakonfigurujte Firewall pro Kubernetes, aby fungoval správně.

Na hlavním uzlu

FirwallD:

firewall-cmd --permanent --add-port=6443/tcpfirewall-cmd --permanent --add-port=2379-2380/tcpfirewall-cmd --permanent --add-port=10250/tcpfirewall-cmd --permanent --add-port=10251/tcpfirewall-cmd --permanent --add-port=10252/tcpfirewall-cmd --permanent --add-port=10255/tcpfirewall-cmd --reload

UFW:

ufw povolit 6443/tcpufw povolit 2379tcpufw povolit 2380/tcpufw povolit 10250/tcpufw povolit 10251/tcpufw povolit 10252/tcpufw povolit 10255/tcpufw znovu načíst

Na pracovních uzlech

FirwallD:

firewall-cmd --permanent --add-port=10251/tcpfirewall-cmd --permanent --add-port=10255/tcpfirewall-cmd --reload

UFW:

ufw povolit 10251/tcpufw povolit 10255/tcpufw znovu načíst

SELinux

Zvažte zakázání SELinux na CentOS 7 / RHEL 7 uzly.

setenforce 0sed -i 's/SELINUX=enforceing/SELINUX=disabled/g' /etc/selinux/config

Nastavení jádra

V RHEL 7 /CentOS 7 , nastavte net.bridge.bridge-nf-call-iptables na 1 v konfiguraci sysctl.

cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables =1net.bridge.bridge-nf-call-iptables =1EOFsysctl -p

Nainstalovat Docker

Nainstalujte Docker na všechny své uzly (Master a Minions). Doporučuje se verze Docker v18.06, ale verze 1.11,  v1.12, v1.13 a 17.03 také dobře fungují s Kubernetes.

CentOS 7 / RHEL 7

### Nainstalujte Docker z úložiště CentOS/RHEL ### yum install -y dockersystemctl povolit docker systemctl spustit dockerOR### Instalace Docker CE 18.06 z repozitářů CentOS společnosti Docker #### Předpoklady instalace  yum install -y yum-utils device-mapper-persistent-data lvm2# Přidat úložiště Docker yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # Install Dockeryum updateyum install -y docker-ce-18.06.1.ce# Vytvořit adresář Docker mkdir /etc/docker# Nastavení Docker Daemoncat> /etc/docker/daemon.json < 

Ubuntu 18.04 / Ubuntu 16.04

### Nainstalujte Docker z repozitářů Ubuntu ### apt-get updateapt-get install -y docker.ioNEBO ### Instalace Docker CE 18.06 z úložišť Dockeru pro Ubuntu #### Předpoklady instalace apt-get updateapt-get install -y apt-transport-https ca-certificates curl software-properties-common# Stáhnout klíč GPG curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -# Přidat úložiště Dockeru  add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"# Install Docker apt-get updateapt-get install -y docker-ce=18.06.0~ce~3-0~ubuntu# Setup Daemon cat> /etc/docker/daemon.json <# Restartovat démona Docker systemctl daemon-reloadsystemctl restart docker

Debian 9

### Nainstalujte Docker z repozitářů Debianu ### apt-get updateapt-get install -y docker.ioNEBO ### Nainstalujte Docker CE 18.06 z repozitářů Docker pro Debian ### # Předpoklad instalace sapt-get updateapt-get install -y apt-transport-https ca-certifikáty curl software-properties-common# Stáhnout klíč GPG  curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -# Přidat úložiště Dockeru add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable"# Install Docker apt-get updateapt-get install -y docker-ce=18.06.0~ce~3-0~debian# Setup Daemon cat> /etc/docker/daemon.json <# Restartovat démona Docker systemctl daemon-reloadsystemctl restart docker

Konfigurace úložiště Kubernetes

Kubernetes balíčky nejsou k dispozici v repozitářích OS, takže je třeba provést konfiguraci úložiště na všech vašich uzlech podle níže uvedených kroků.

### CentOS 7 / RHEL 7 ###cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/ yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum /doc/rpm-package-key.gpgexclude=kube*EOF### Ubuntu 18.04 / 16.05 &Debian 9 ###apt-get updateapt-get install -y curl apt-transport-httpscurl -s https://packages. cloud.google.com/apt/doc/apt-key.gpg | apt-key add -echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Nainstalujte kubeadm, kubelet a kubectl

Na všech svých uzlech spusťte následující příkazy k instalaci požadovaných balíčků.

kubeadm:příkaz k vytvoření clusteru.

kubelet:Běží na všech počítačích ve vašem clusteru a dělá věci jako startovací moduly a kontejnery.

kubectl:nástroj příkazového řádku pro správu vašeho clusteru.

### CentOS 7 / RHEL 7 ###yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetessystemctl povolit kubelet systemctl spustit kubelet### Ubuntu 16.04 / Debian 9 ###apt-get updateapt-get install - y kubelet kubeadm kubectl

Inicializovat Kubernetes Master

Na hlavním uzlu spusťte v terminálu příkaz kubeadm init pro inicializaci clusteru.

V závislosti na síťovém doplňku používáte, možná budete muset nastavit --pod-network-cidr na konkrétní hodnotu. Zde používám síť Wave pod, která nevyžaduje žádné další argumenty.
kubeadm init

Výstup:

[init] Používání verze Kubernetes:v1.13.0[preflight] Spouštění kontrol před výstupem [WARNING Firewalld]:firewalld je aktivní, ujistěte se, že jsou porty [6443 10250] otevřené, jinak váš cluster nemusí fungovat správně[preflight] Stahování obrázky potřebné pro nastavení clusteru Kubernetes[preflight] To může trvat minutu nebo dvě, v závislosti na rychlosti vašeho internetového připojení[preflight] Tuto akci můžete také provést předem pomocí 'kubeadm config images pull'[kubelet-start] Zápis souboru prostředí kubelet s příznaky do souboru "/var/lib/kubelet/kubeadm-flags.env"[kubelet-start] Zápis konfigurace kubelet do souboru "/var/lib/kubelet/config.yaml"[kubelet-start] Aktivace služba kubelet[certs] Použití složky certificateDir "/etc/kubernetes/pki"[certs] Generování certifikátu a klíče "ca"[certs] Generování certifikátu a klíče "apiserver-kubelet-client". . ... ... [bootstraptoken] nakonfiguroval pravidla RBAC tak, aby umožňoval rotaci certifikátů pro všechny klientské certifikáty uzlů v clusteru[bootstraptoken] a vytvořil ConfigMap „cluster-info“ v oboru názvů „kube-public“[addons] Použitý základní doplněk:CoreDNS[addons] Použito nezbytný doplněk:kube-proxyVáš hlavní server Kubernetes byl úspěšně inicializován! Chcete-li začít používat svůj cluster, musíte jako běžný uživatel spustit následující: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin .conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Nyní byste měli nasadit síť pod do clusteru. Spusťte „kubectl apply -f [podnetwork].yaml“ s jednou z možností uvedených na:https://kubernetes.io/docs/concepts/cluster-administration/addons/You Nyní se může připojit k libovolnému počtu strojů spuštěním následujícího na každém kořenovém kořenu: kubeadm se připojte 192.168.1.10:6443-token d1dyaj.31zxywbg93s1ywjy-discovery-token-ca-cert-hash256:

Správa clusteru

Spusťte tyto příkazy v terminálu, abyste mohli klastr spravovat a pracovat na něm jako běžný uživatel.

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

Spusťte příkaz kubectl get pods –all-namespaces a zkontrolujte stav clusteru.

kubectl získat pody --all-namespaces

Výstup:

Můžete vidět, že coredns pod je ve stavu čekání a stav by se měl změnit, jakmile nainstalujete síť pod.

Nastavení sítě podů

Potřebujeme v clusteru nastavit síťový doplněk podů, aby mezi sebou mohly pody komunikovat. Existuje několik projektů, které poskytují sítě Kubernetes pod jmenovitě kaliko, kanál, flanel atd.

Zde pro toto demo použijeme síť Wave pod.

exportovat kubever=$(verze kubectl | base64 | tr -d '\n')kubectl použít -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Výstup:

serviceaccount/weave-net createdclusterrole.rbac.authorization.k8s.io/weave-net createdclusterrolebinding.rbac.authorization.k8s.io/weave-net createdrole.rbac.authorization.k8s.io/weave-net createdrolebinding.rbac .authorization.k8s.io/weave-net createddaemonset.extensions/weave-net created

Znovu zkontrolujte stav clusteru. Coredns modul by nyní měl být spuštěn.

kubectl získat pody --all-namespaces

Výstup:

Připojte se k pracovním uzlům ke clusteru Kuberenete

Pokud si vzpomínáte, ve výstupu příkazu kubeadm init byl token pro spojení uzlů. Použijte token a připojte se ke všem svým pracovním uzlům.

kubeadm join 192.168.1.10:6443 --token d1dyaj.31zxywbg93s1ywjy --discovery-token-ca-cert-hash sha256:71a91721595fde66b63812908ddb8de>07e7de66b63812966ddb8de 

Výstup:

[preflight] Spouštění kontrol před výstupem[discovery] Pokus o připojení k serveru API "192.168.1.10:6443"[discovery] Vytvořen klient pro vyhledávání informací o clusteru, který požaduje informace z "https://192.168.1.10:6443 „[objev] Opětovné vyžádání informací z „https://192.168.1.10:6443“ za účelem ověření TLS proti připnutému veřejnému klíči[objevení] Podpis a obsah informací o clusteru jsou platné a certifikát TLS se ověřuje proti připnutým kořenům, použije server API “ 192.168.1.10:6443"[discovery] Úspěšně navázáno spojení se serverem API "192.168.1.10:6443"[join] Čtení konfigurace z clusteru...[join] FYI:Na tento konfigurační soubor se můžete podívat pomocí 'kubectl -n kube-system get cm kubeadm-config -oyaml'[kubelet] Stahování konfigurace pro kubelet z "kubelet-config-1.13" ConfigMap ve jmenném prostoru kube-system[kubelet-start] Zápis konfigurace kubelet do souboru "/var/lib /kubelet/config.yaml"[kubelet-start] Zápis souboru prostředí kubelet s příznaky do souboru "/var/lib/kubelet/kubeadm-fl ags.env"[kubelet-start] Aktivace služby kubelet[tlsbootstrap] Čekání, až kubelet provede TLS Bootstrap...[patchnode] Nahrání informací o CRI Socketu "/var/run/dockershim.sock" do rozhraní API uzlu objekt "node1.itzgeek.local" jako anotaceTento uzel se připojil ke clusteru:* Žádost o podepsání certifikátu byla odeslána na apiserver a byla přijata odpověď.* Kubelet byl informován o podrobnostech nového zabezpečeného připojení. Spusťte 'kubectl get nodes' na master, aby viděl, jak se tento uzel připojuje ke clusteru.

Výše uvedený výstup potvrzuje, že uzel byl úspěšně přidán do clusteru.

Nyní zkontrolujte stav pracovních uzlů na hlavním uzlu pomocí následujícího příkazu.

kubectl získat uzly

Výstup:

Měli byste vidět, že pracovní uzly jsou ve stavu připravenosti.

V našem dalším článku nasadíme moduly, služby a řadiče replikace v Kubernetes.

To je vše.


Cent OS
  1. Jak nainstalovat Spotify na Ubuntu a Debian

  2. Jak nainstalovat Apache Hadoop na CentOS 7, Ubuntu 18.04 a Debian 9

  3. Jak nainstalovat Ansible na CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

  1. Jak nainstalovat Kubernetes na Ubuntu 18.04

  2. Jak nainstalovat programovací jazyk Go na Linux (Ubuntu/Debian/CentOS)

  3. Jak nainstalovat Python pip na CentOS/Debian/Ubuntu

  1. Jak nainstalovat Kubernetes Docker Cluster na CentOS 7

  2. Jak nainstalovat Kubernetes na Ubuntu 20.04

  3. Jak nainstalovat CTparental na Ubuntu 20.04 a Debian 10