Oversikt
Forutsetninger
Konfigurering av arbeider og master
Master Node oppsett
Arbeider Node
Avslutter
Oversikt
Denne artikkelen er ment å hjelpe deg med å få en Kubernetes-klynge i gang med kubeadm på kort tid. Denne veiledningen vil distribuere to servere, en master og en arbeider, men du kan distribuere så mange servere du vil.
Hva er kubeadm?
Kubeadm er et verktøy utviklet av Kubernetes som lar deg få et minimum levedyktig klynge i gang ved å følge beste praksis. Det vil bare starte opp klyngen din, ikke klargjøringsmaskiner. Ting som tillegg, Kubernetes-dashbordet, overvåkingsløsninger og så videre er ikke noe kubeadm vil gjøre for deg.
Forutsetninger
Det er noen krav til serverne vi skal distribuere. En eller flere maskiner som kjører et deb/rpm-kompatibelt OS. Vi kommer til å bruke CentOS.
- 2 GB eller mer RAM per maskin
- 2 CPUer eller mer på masteren
Full nettverkstilkobling mellom alle maskiner i klyngen
De to serverne som er distribuert i denne veiledningen er følgende: - 1 CPU 2GB RAM med CentOS 7 (Worker node) - 2 CPU 4GB RAM med CentOS 7 (Master node)
Med denne mengden RAM på begge serverne vil Kubernetes ha god plass til å puste.
Konfigurering av arbeider og master
Her er trinnene vi må ta på både hoved- og arbeidernoden:
- Nam oppdatering og pakker
- Installer docker
- Deaktiver selinux
- Deaktiver bytte
- Deaktiver brannmur
- Oppdater IPTables
- Installer kubelet/kubeadm/kubectl
Installerer Docker
Vi bruker versjonen 1.14av Kubernetes i denne opplæringen. For denne versjonen anbefaler Kubernetes å kjøre Docker-versjonen 18.06.2. Sørg for å sjekke den anbefalte Docker-versjonen for din versjon av Kuberenetes
Vi vil legge til Docker-depotet til yum og spesifikt installere 18.06.2. Når Docker er installert, må vi konfigurere docker-demonen til innstillingene anbefalt av Kubernetes.
###Add yum-utils, if not installed already
yum install yum-utils
###Add Docker repository.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
###Install Docker CE.
yum update && yum install docker-ce-18.06.2.ce
###Create /etc/docker directory.
mkdir /etc/docker
###Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
###Restart Docker
systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker
Deaktiver SELinux
Siden vi bruker CentOS, må vi deaktivere SELinux. Dette er nødvendig for å gi beholdere tilgang til vertsfilsystemet.
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disable/' /etc/selinux/config
Deaktiver Swap
Swap må deaktiveres for å la kubelet fungere skikkelig.
sed -i '/swap/d' /etc/fstab
swapoff -a
Deaktiver brannmur
Kubernetes bruker IPTables for å håndtere innkommende og utgående trafikk - så for å unngå problemer deaktiverer vi brannmuren.
systemctl disable firewalld
systemctl stop firewalld
Oppdater IPTables
Kubernetes anbefaler at vi sørger for at net.bridge.bridge-nf-call-iptableser satt til 1. Dette skyldes problemer der REHL/CentOS 7 har hatt problemer med at trafikk blir omdirigert feil på grunn av omgåelse av iptables.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
Installer kubelet/kubeadm/kubectl
Vi må legge til kubernetes-repoen til yum. Når vi har gjort det, trenger vi bare å kjøre installeringskommandoen og aktivere kubelet.
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
exclude=kube*
EOF
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
Nå har vi fullt konfigurert både hoved- og arbeidernoden vår. Vi kan nå initialisere masternoden vår og slå sammen arbeidernodene våre til masteren!
Merk Hvis du ønsker å legge til flere arbeidernoder, må prosessen ovenfor også gjøres på alle disse nodene.
Master Node oppsett
Vi ønsker å initialisere masternoden vår ved å kjøre følgende kommando. Du vil erstatte masternodens IP-adresse i kommandoen nedenfor. I tillegg sender vi inn pod-network-cidr for å gjøre det enklere for oss senere når vi installerer Flannel-nettverksoverlegget.
kubeadm init --apiserver-advertise-address=YOUR_IP_HERE --pod-network-cidr=10.244.0.0/16
Dette kan ta en stund å fullføre, men når det er fullført, vil du se noe lignende på slutten av utgangen som følgende.
kubeadm join YOUR_IP:6443 --token 4if8c2.pbqh82zxcg8rswui \
--discovery-token-ca-cert-hash sha256:a0b2bb2b31bf7b06bb5058540f02724240fc9447b0e457e049e59d2ce19fcba2
Denne kommandoen er hva arbeidsnodene dine må utføre for å bli med i klyngen, så legg merke til den.
Neste ut er Flanell. Flanell er det som tillater pod til pod kommunikasjon. Det finnes forskjellige andre typer nettverksoverlegg som du kan installere, men for enkelhets skyld vil denne veiledningen bruke Flannel.
Kopier kube/configfilen over til din $Homeslik at du kan utføre kubectlkommandoer.
mkdir $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
Et siste trinn på masternoden er å installere Flannel. Kjør følgende kommando.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Med denne konfigurasjonen kopiert over vil du kunne kjøre kubectl get csog få svar.
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
Masternoden din er satt og klar til å gå. Inn på arbeidernoden!
Arbeider Node
På dette tidspunktet er det ikke noe ekstra arbeid som er nødvendig på arbeidernoden. Alt vi trenger å gjøre er å kjøre kubeadm joinkommandoen vi fikk fra kubeadm initutdataene våre .
Hvis du ved en tilfeldighet har forlagt kommandoen kubeadm join, kan du generere en annen på masternoden ved å kjøre
kubeadm token create --print-join-command
Når du kjører kubeadm join-kommandoen, hvis du kjører kubectl get nodespå master vil du se en lignende utgang som følgende.
NAME STATUS ROLES AGE VERSION
k8-master Ready master 107m v1.14.2
k8-worker Ready <none> 45m v1.14.2
Avslutter
Akkurat som det har du bootstrappet en Kubernetes-klynge ved å bruke kubeadm. Du kan også gjøre dette med private nettverk. Vultr, så vel som andre skyleverandører, tillater private nettverk. Dessuten, hvis du ønsker å utføre kubectl-kommandoer fra din lokale maskin mot klyngen din, kan du oppnå dette ved å ha kubectl installert lokalt og trekke ned .kube/configfilen fra klyngen til din lokale maskin i $HOME/.kube/config.
Forhåpentligvis hjelper denne guiden deg gjennom kubeadm og får deg til å spille med kubernetes på kort tid!
Nyttige lenker: