Kubernetes è un cluster e orchestrazione motore per container docker. In altre parole, Kubernetes è un software o uno strumento open source utilizzato per orchestrare e gestire i contenitori docker in un ambiente cluster. Kubernetes è anche noto come k8s ed è stato sviluppato da Google e donato a "Cloud Native Computing Foundation"
Nella configurazione di Kubernetes abbiamo un nodo master e più nodi. I nodi del cluster sono noti come nodi di lavoro o Minion. Dal nodo master gestiamo il cluster e i suoi nodi utilizzando 'kubeadm ' e 'kubectl ' comando.
Kubernetes può essere installato e distribuito utilizzando i seguenti metodi:
- Minikube (è un cluster kubernetes a nodo singolo)
- Kops (configurazione di kubernetes multinodo in AWS)
- Kubedm (cluster multinodo nelle nostre sedi)
In questo articolo installeremo l'ultima versione di Kubernetes 1.7 su CentOS 7 / RHEL 7 con l'utilità kubeadm. Nella mia configurazione sto prendendo tre server CentOS 7 con un'installazione minima. Un server fungerà da nodo master e altri due server saranno nodi minion o nodi di lavoro.
Sul Master Node verranno installati i seguenti componenti
- Server API – Fornisce l'API kubernetes utilizzando Jason / Yaml su http, gli stati degli oggetti API sono archiviati in etcd
- Programmazione – È un programma sul nodo master che esegue le attività di pianificazione come l'avvio di container nei nodi di lavoro in base alla disponibilità delle risorse
- Responsabile del trattamento – Il compito principale del gestore controller è monitorare i controller di replica e creare pod per mantenere lo stato desiderato.
- ecc – È un database di coppie di valori chiave. Memorizza i dati di configurazione del cluster e dello stato del cluster.
- Utilità Kubectl – È un'utilità della riga di comando che si connette al server API sulla porta 6443. Viene utilizzata dagli amministratori per creare pod, servizi ecc.
Sui nodi di lavoro verranno installati i seguenti componenti
- Kubelet – È un agente che gira su ogni nodo di lavoro, si connette alla finestra mobile e si occupa di creare, avviare, eliminare i container.
- Proxy Kube – Instrada il traffico verso contenitori appropriati in base all'indirizzo IP e al numero di porta della richiesta in entrata. In altre parole possiamo dire che è usato per la traduzione delle porte.
- Gallo – Il pod può essere definito come un multilivello o un gruppo di contenitori distribuiti su un singolo nodo di lavoro o host Docker.
Passaggi di installazione di Kubernetes 1.7 su CentOS 7 / RHEL 7
Esegui i seguenti passaggi su Master Node
Passaggio 1:disabilita SELinux e imposta le regole del firewall
Accedi al tuo nodo master kubernetes e imposta il nome host e disabilita selinux usando i seguenti comandi
~]# hostnamectl set-hostname 'k8s-master'~]# exec bash~]# setenforce 0~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' / etc/sysconfig/selinux
Imposta le seguenti regole del firewall.
[[email protected] ~]# firewall-cmd --permanent --add-port=6443/tcp[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/ tcp[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp[[email protected] ~]# firewall-cmd --permanent --add-port=10251/tcp[[email protected] ~]# firewall-cmd --permanent --add-port=10252/tcp[[email protected] ~]# firewall-cmd --permanent --add-port=10255/tcp[[email protected] ~] # firewall-cmd --reload[[email protected] ~]# modprobe br_netfilter[[email protected] ~]# echo '1'> /proc/sys/net/bridge/bridge-nf-call-iptables
Nota: Nel caso in cui non disponi del tuo server DNS, aggiorna il file /etc/hosts sui nodi master e di lavoro
192.168.1.30 k8s-master192.168.1.40 worker-node1192.168.1.50 worker-node2
Disabilita lo scambio in tutti i nodi usando "swapoff -a ” comando e rimuovere o commentare le partizioni di scambio o il file di scambio dal file fstab
Passaggio 2:configura il repository Kubernetes
I pacchetti Kubernetes non sono disponibili nei repository CentOS 7 e RHEL 7 predefiniti. Usa il comando seguente per configurare i repository dei pacchetti.
[[email protetta] ~]# cat </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 [[email protected] ~]#
Passaggio 3:installa Kubeadm e Docker
Una volta configurati i repository dei pacchetti, esegui il comando sottostante per installare i pacchetti kubeadm e docker.
[[email protetta] ~]# yum install kubeadm docker -y
Avvia e abilita il servizio kubectl e docker
[[email protected] ~]# systemctl restart docker &&systemctl abilita docker[[email protected] ~]# systemctl restart kubelet &&systemctl abilita kubelet
Fase 4:inizializza Kubernetes Master con "kubeadm init"
Esegui il comando sottostante per inizializzare e configurare kubernetes master.
[[email protetta] ~]# kubeadm init
L'output del comando sopra sarebbe qualcosa come sotto
Come possiamo vedere nell'output, kubernetes master è stato inizializzato correttamente. Esegui i comandi seguenti per utilizzare il cluster come utente root.
[[email protetta] ~]# mkdir -p $HOME/.kube[[email protetta] ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[[email protetta] ~]# chown $(id -u):$(id -g) $HOME/.kube/config
Passaggio 5:distribuisci la rete pod al cluster
Prova a eseguire i comandi seguenti per ottenere lo stato del cluster e dei pod.
Per rendere pronto lo stato del cluster e lo stato di kube-dns in esecuzione, distribuire la rete pod in modo che i contenitori di host diversi comunicassero tra loro. La rete POD è la rete overlay tra i nodi di lavoro.
Esegui il comando sotto per distribuire la rete.
[[email protected] ~]# export kubectl=$(kubectl version | base64 | tr -d '\n')[[email protected] ~]# kubectl apply -f "https://cloud.weave. works/k8s/net?k8s-version=$kubever"serviceaccount "weave-net" creatoclusterrole "weave-net" creatoclusterrolebinding "weave-net" creatodaemonset "weave-net" creato[[email protected] ~]#
Ora esegui i seguenti comandi per verificare lo stato
; -Master 1/1 in esecuzione 0 57mkube-system kube-apiserver-k8s-master 1/1 in esecuzione 0 57mkube-system kube-confroller-manager-k8s-master 1/1 in esecuzione 0 57mkube-system kube-dns-2425271678-044ww 3 /3 in esecuzione 0 1Hkube-System Kube-Proxy-9H259 1/1 Esecuzione 0 1Hkube-System Kube-Scheduler-K8S-Master 1/1 Esecuzione 0 57MMKube-System Weave-Net-HDJZD 2/2 in esecuzione 0 7M [[E-mail Protected ] ~]#Ora aggiungiamo nodi di lavoro ai nodi master Kubernetes.
Esegui i seguenti passaggi su ciascun nodo di lavoro
Fase 1:disabilita SELinux e configura le regole del firewall su entrambi i nodi
Prima di disabilitare SELinux impostare il nome host su entrambi i nodi rispettivamente come 'nodo-lavoratore1' e 'nodo-lavoratore2'
~]# setenforce 0~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux~]# firewall-cmd --permanent --add -port=10250/tcp~]# firewall-cmd --permanent --add-port=10255/tcp~]# firewall-cmd --permanent --add-port=30000-32767/tcp~]# firewall-cmd --permanent --add-port=6783/tcp~]# firewall-cmd --reload~]# echo '1'> /proc/sys/net/bridge/bridge-nf-call-iptables
Passaggio 2:configura i repository Kubernetes su entrambi i nodi di lavoro
~]# cat </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
Fase 3:installa kubeadm e il pacchetto docker su entrambi i nodi
[[email protected] ~]# yum install kubeadm docker -y[[email protected] ~]# yum install kubeadm docker -y
Avvia e abilita il servizio Docker
[[email protected] ~]# systemctl restart docker &&systemctl abilita docker[[email protected] ~]# systemctl restart docker &&systemctl abilita docker
Fase 4:ora unisci i nodi di lavoro al nodo principale
Per unire i nodi di lavoro al nodo Master, è richiesto un token. Ogni volta che kubernetes master è stato inizializzato, nell'output otteniamo comando e token. Copia quel comando ed esegui su entrambi i nodi.
[[email protetta] ~]# kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.30:6443
L'output del comando sopra sarebbe qualcosa come sotto
[[email protetta] ~]# kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.30:6443
L'output sarebbe qualcosa come di seguito
Ora verifica lo stato dei nodi dal nodo master usando il comando kubectl
[[email protetto] ~]# kubectl ottieni nodesname status age versionek8s-master ready 2h v1.7.5worker-node1 ready 20m v1.7.5worker-node2 pronto 18m v1.7.5 [[e-mail protetto] ~]#
Come possiamo vedere, i nodi master e di lavoro sono in stato di pronto. Ciò conclude che kubernetes 1.7 è stato installato correttamente e inoltre abbiamo unito con successo due nodi di lavoro. Ora possiamo creare pod e servizi.
Condividi il tuo feedback e commenti nel caso in cui questo articolo ti aiuti a installare l'ultima versione di kubernetes 1.7