GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare Kubernetes su CentOS 7, Ubuntu 18.04/16.04 e Debian 9

Kubernetes è uno strumento di orchestrazione di container di livello di produzione open source che aiuta ad automatizzare la distribuzione, il ridimensionamento e la gestione delle applicazioni containerizzate. Inizialmente Google ha progettato Kubernetes e ora è gestito dalla Cloud Native Computing Foundation.

Puoi chiamare Kubernetes è un gestore di cluster per Docker e fornisce quasi le stesse funzionalità di Docker Swarm . Con Kubernetes, puoi distribuire un numero qualsiasi di repliche di container su un cluster di nodi e Kubernetes gestirà i rimanenti (dove richiamare i container) per te.

Possiamo eseguire Kubernetes nella macchina locale usando i metodi seguenti,

1. MinKube – Un cluster Kubernetes a nodo singolo per lo sviluppo e il test.
2. Kubeadm-dind (Kuberadm) – Un cluster Kubernetes multinodo

Puoi leggere tutti i metodi qui .

Qui, distribuiremo un cluster Kubernetes multinodo usando kubeadm. In questa configurazione multi-nodo, avremo un nodo master e più nodi di lavoro (minion).

Componenti

Nodo principale

server kube-API: È un server API, viene eseguito sul nodo master che espone l'API Kubernetes
etcd: Un archivio di chiavi che archivia i dati del cluster Kubenetes
kube-scheduler: È uno scheduler che viene eseguito sul nodo master che monitora i pod appena creati ed esegue quei pod su nodi selezionati in base alla disponibilità delle risorse.
kube-controller-manager: È un gestore di controllo che viene eseguito sul gestore responsabile del monitoraggio dei nodi e della gestione della replica dei pod.
cloud-controller-manager: Un cloud control manager che interagisce con i cloud provider sottostanti (Es:DigitalOcean, Rancher, ecc.).

Nodi di lavoro

kubelet: Funziona su tutti i nodi di lavoro e gestisce attività come l'avvio di pod e container.
kube-proxy: È un proxy di rete Kubernetes che inoltra le richieste TCP/UDP in entrata al container back-end.
Runtime del container: È un software contenitore (Docker)

Ambiente

Nodo Nome host Indirizzo IP OS CPU RAM
Nodo principale master.itzgeek.local 192.168.1.10 CentOS 7 / RHEL 7 2 2GB
Minion Nodo 1 node1.itzgeek.local 192.168.1.20 Ubuntu 18.04 / 16.04 2 2GB
Minion Nodo 2 node2.itzgeek.local 192.168.1.30 Debian 9 2 2GB
Devi disabilitare lo scambio affinché Kubernetes funzioni correttamente

Qui, sto usando un ambiente misto per questa demo. Tuttavia, ti chiedo di utilizzare il sistema operativo simile solo per facilitare la risoluzione dei problemi.

Prerequisiti

Diventa l'utente root.

su -

O

sudo su -

Imposta nome host

Imposta un nome host univoco per tutti i tuoi nodi. Esempio:

hostnamectl set-hostname master.itzgeek.local

Crea una voce host o DNS record per risolvere il nome host per tutti i nodi.

vi /etc/hosts

Inserimento:

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

Firewall

Configura Firewall affinché Kubernetes funzioni correttamente.

Sul nodo principale

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 consentire 6443/tcpufw consentire 2379tcpufw consentire 2380/tcpufw consentire 10250/tcpufw consentire 10251/tcpufw consentire 10252/tcpufw consentire 10255/tcpufw ricaricare

Sui nodi di lavoro

FirwallD:

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

UFW:

ufw consentire 10251/tcpufw consentire 10255/tcpufw ricaricare

SELinux

Prendi in considerazione la disabilitazione di SELinux su CentOS 7 / RHEL 7 nodi.

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

Impostazioni del kernel

In RHEL 7/CentOS 7 , imposta net.bridge.bridge-nf-call-iptables su 1 nella tua configurazione sysctl.

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

Installa Docker

Installa Docker su tutti i tuoi nodi (Master e Minion). Si consiglia la versione Docker v18.06, ma v1.11, v1.12, v1.13 e 17.03 funzionano bene anche con Kubernetes.

CentOS 7 / RHEL 7

### Installa Docker dal repository CentOS/RHEL ### yum install -y dockersystemctl abilita docker systemctl start dockerOR### Installa Docker CE 18.06 dai repository CentOS di Docker #### Installa prerequisiti  yum install -y yum-utils device-mapper-persistent-data lvm2# Aggiungi repository Docker yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # Installa Dockeryum updateyum install -y docker-ce-18.06.1.ce# Crea directory Docker mkdir /etc/docker# Imposta Docker Daemoncat> /etc/docker/daemon.json < 

Ubuntu 18.04 / Ubuntu 16.04

### Installa Docker dai repository di Ubuntu ### apt-get updateapt-get install -y docker.ioOPPURE ### Installa Docker CE 18.06 dai repository di Docker per Ubuntu #### Installa prerequisiti apt-get updateapt-get install -y apt-transport-https ca-certificates curl software-properties-common# Scarica la chiave GPG curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -# Aggiungi il repository Docker  add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"# Installa Docker apt-get updateapt-get install -y docker-ce=18.06.0~ce~3-0~ubuntu# Setup Daemon cat> /etc/docker/daemon.json <# Riavvia il demone Docker systemctl daemon-reloadsystemctl riavvia la finestra mobile

Debian 9

### Installa Docker dai repository di Debian ### apt-get updateapt-get install -y docker.ioOPPURE ### Installa Docker CE 18.06 dai repository di Docker per Debian ### # Prerequisito di installazione sapt-get updateapt-get install -y apt-transport-https ca-certificates curl software-properties-common# Scarica la chiave GPG  curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -# Aggiungi il repository Docker add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable"# Installa Docker apt-get updateapt-get install -y docker-ce=18.06.0~ce~3-0~debian# Setup Daemon cat> /etc/docker/daemon.json <# Riavvia il demone Docker systemctl daemon-reloadsystemctl riavvia la finestra mobile

Configura il repository Kubernetes

Kubernetes i pacchetti non sono disponibili nei repository del sistema operativo, quindi devi seguire i passaggi seguenti per configurare il relativo repository su tutti i tuoi nodi.

### 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 e 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

Installa kubeadm, kubelet e kubectl

Su tutti i tuoi nodi, esegui i seguenti comandi per installare i pacchetti richiesti.

kubeadm:il comando per creare il cluster.

kubelet:viene eseguito su tutte le macchine nel tuo cluster e fa cose come l'avvio di pod e container.

kubectl:l'utilità della riga di comando per gestire il tuo cluster.

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

Inizializza Kubernetes Master

Sul nodo Master, esegui il comando kubeadm init nel terminale per inizializzare il cluster.

A seconda del componente aggiuntivo di rete che utilizzi, potrebbe essere necessario impostare il --pod-network-cidr ad un valore specifico. Qui sto usando la rete pod Wave che non richiede argomenti aggiuntivi.
kubeadm init

Risultato:

[init] Utilizzo della versione Kubernetes:v1.13.0[preflight] Esecuzione dei controlli pre-flight [WARNING Firewalld]:firewalld è attivo, assicurati che le porte [6443 10250] siano aperte o il tuo cluster potrebbe non funzionare correttamente[preflight] Pulling immagini richieste per configurare un cluster Kubernetes[preflight] L'operazione potrebbe richiedere uno o due minuti, a seconda della velocità della tua connessione Internet[preflight] Puoi anche eseguire questa azione in anticipo usando 'kubeadm config images pull'[kubelet-start] Scrittura del file di ambiente kubelet con flag nel file "/var/lib/kubelet/kubeadm-flags.env"[kubelet-start] Scrittura della configurazione di kubelet nel file "/var/lib/kubelet/config.yaml"[kubelet-start] Attivazione il servizio kubelet[certs] Utilizzo della cartella certificateDir "/etc/kubernetes/pki"[certs] Generazione del certificato "ca" e della chiave[certs] Generazione del certificato e della chiave "apiserver-kubelet-client". . .. . .. . .[bootstraptoken] ha configurato le regole RBAC per consentire la rotazione dei certificati per tutti i certificati client del nodo nel cluster[bootstraptoken] creando la "cluster-info" ConfigMap nello spazio dei nomi "kube-public" [addons] Addon essenziale applicato:CoreDNS[addons] applicato componente aggiuntivo essenziale:kube-proxyIl tuo master Kubernetes è stato inizializzato correttamente!Per iniziare a utilizzare il tuo cluster, devi eseguire quanto segue come utente normale: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin .conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Ora dovresti distribuire una rete pod nel cluster. Esegui "kubectl apply -f [podnetwork].yaml" con una delle opzioni elencate in:https://kubernetes.io/docs/concepts/cluster-administration/addons/You ora possono aderire qualsiasi numero di macchine eseguendo quanto segue su ciascuna radice nodeas: kubeadm uniscono 192.168.1.10:6443 --token d1dyaj.31zxywbg93s1ywjy --discovery-token-ca-cERT-hash sha256:71a91721595fde66b6382908d801266602a14de8e16bdb7a3cede21509427009  

Gestisci cluster

Esegui questi comandi nel terminale per gestire e lavorare sul cluster come utente normale.

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

Esegui il comando kubectl get pods –all-namespaces per controllare lo stato del cluster.

kubectl get pods --all-namespaces

Risultato:

Puoi vedere che coredn pod è in stato di attesa e lo stato dovrebbe cambiare dopo l'installazione della rete pod.

Imposta rete pod

È necessario configurare un componente aggiuntivo di rete pod nel cluster in modo che i pod possano comunicare tra loro. Esistono diversi progetti che forniscono reti di pod Kubernetes vale a dire, calicò, canale, flanella, ecc.

Qui utilizzeremo la rete pod Wave per questa demo.

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

Risultato:

serviceaccount/weave-net createclusterrole.rbac.authorization.k8s.io/weave-net createclusterrolebinding.rbac.authorization.k8s.io/weave-net createrole.rbac.authorization.k8s.io/weave-net createrolebinding.rbac .authorization.k8s.io/weave-net creatodaemonset.extensions/weave-net creato

Controlla di nuovo lo stato del cluster. Il pod coredns dovrebbe ora essere in esecuzione.

kubectl get pods --all-namespaces

Risultato:

Unisci i nodi di lavoro al cluster Kuberenete

Se ricordi, c'era un token nell'output del comando kubeadm init per unire i nodi. Usa il token e unisciti a tutti i tuoi nodi di lavoro.

kubeadm join 192.168.1.10:6443 --token d1dyaj.31zxywbg93s1ywjy --discovery-token-ca-cert-hash sha256:71a91721595fde66b6382908d801266602a14de8e16bdb7a3cede2150942>7 

Risultato:

[preflight] Esecuzione dei controlli pre-flight[discovery] Tentativo di connessione al server API "192.168.1.10:6443"[discovery] Creato un client di rilevamento delle informazioni sul cluster, richiedendo informazioni da "https://192.168.1.10:6443 "[scoperta] Richiesta di informazioni da" https://192.168.1.10:6443" di nuovo per convalidare TLS rispetto alla chiave pubblica bloccata [discovery] La firma e il contenuto delle informazioni del cluster sono validi e il certificato TLS viene convalidato rispetto alle radici bloccate, utilizzerà il server API " 192.168.1.10:6443"[scoperta] Connessione stabilita con successo con il server API "192.168.1.10:6443"[unirsi] Lettura della configurazione dal cluster...[unirsi] Cordiali saluti:puoi guardare questo file di configurazione con 'kubectl -n kube-system get cm kubeadm-config -oyaml'[kubelet] Download della configurazione per il kubelet da "kubelet-config-1.13" ConfigMap nello spazio dei nomi del sistema kube[kubelet-start] Scrittura della configurazione del kubelet nel file "/var/lib /kubelet/config.yaml"[kubelet-start] Scrittura del file di ambiente kubelet con flag nel file "/var/lib/kubelet/kubeadm-fl ags.env"[kubelet-start] Attivazione del servizio kubelet[tlsbootstrap] In attesa che il kubelet esegua il bootstrap TLS...[patchnode] Caricamento delle informazioni del socket CRI "/var/run/dockershim.sock" nell'API del nodo oggetto "node1.itzgeek.local" come annotazioneQuesto nodo è entrato a far parte del cluster:* La richiesta di firma del certificato è stata inviata a apiserver ed è stata ricevuta una risposta.* Il Kubelet è stato informato dei nuovi dettagli di connessione sicura. Esegui 'kubectl get nodes' su il master per vedere questo nodo unirsi al cluster.

L'output precedente conferma che il nodo è stato aggiunto correttamente al cluster.

Ora controlla lo stato dei nodi di lavoro sul nodo master usando il comando seguente.

kubectl ottiene nodi

Risultato:

Dovresti vedere che i nodi di lavoro sono in stato pronto.

Nel prossimo articolo distribuiremo pod, servizi e controller di replica in Kubernetes.

Questo è tutto.


Cent OS
  1. Come installare Kubernetes su Ubuntu 18.04

  2. Come installare Spotify su Ubuntu e Debian

  3. Come installare Apache Hadoop su CentOS 7, Ubuntu 18.04 e Debian 9

  4. Come installare Ansible su CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 e Debian 9

  5. Come installare Python pip su CentOS/Debian/Ubuntu

Come installare SpamAssassin su Ubuntu/Debian

Come installare PrestaShop su Ubuntu/Debian

Come installare Kubernetes su CentOS 8

Come installare Mongoku su Ubuntu 20.04 / Debian 11

Come installare ODBC su Ubuntu 20.04 / Debian 11?

Come installare il cluster Kubernetes su CentOS 8