De documentatie van dit product is waar mogelijk geschreven met inclusief taalgebruik. Inclusief taalgebruik wordt in deze documentatie gedefinieerd als taal die geen discriminatie op basis van leeftijd, handicap, gender, etniciteit, seksuele oriëntatie, sociaaleconomische status of combinaties hiervan weerspiegelt. In deze documentatie kunnen uitzonderingen voorkomen vanwege bewoordingen die in de gebruikersinterfaces van de productsoftware zijn gecodeerd, die op het taalgebruik in de RFP-documentatie zijn gebaseerd of die worden gebruikt in een product van een externe partij waarnaar wordt verwezen. Lees meer over hoe Cisco gebruikmaakt van inclusief taalgebruik.
Cisco heeft dit document vertaald via een combinatie van machine- en menselijke technologie om onze gebruikers wereldwijd ondersteuningscontent te bieden in hun eigen taal. Houd er rekening mee dat zelfs de beste machinevertaling niet net zo nauwkeurig is als die van een professionele vertaler. Cisco Systems, Inc. is niet aansprakelijk voor de nauwkeurigheid van deze vertalingen en raadt aan altijd het oorspronkelijke Engelstalige document (link) te raadplegen.
Dit document beschrijft de implementatie van het Kubernetes-cluster met 3 master- en 4 worker-knooppunten met een bastion-host die fungeert als een load balancer op Google Cloud Platform (GCP).
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Kube-apiserver:
i. Verstrekt een API die als vooreind van een Kubernetes controlevliegtuig dient.
ii. Het behandelt externe en interne verzoeken die bepalen of een verzoek geldig is en verwerkt het dan.
iii. De API is toegankelijk via de kubectl
opdrachtregelinterface of andere tools zoals kubeadm
, en via REST-oproepen.
Kube-planner:
i. Deze component plant pods op specifieke knooppunten volgens geautomatiseerde werkstromen en door de gebruiker gedefinieerde voorwaarden.
Kube-controller-manager:
i. De Kubernetes controller manager is een controlelussen die de toestand van een Kubernetes-cluster monitort en regelt.
ii. zij ontvangt informatie over de huidige toestand van het cluster en de daarin aanwezige objecten en stuurt instructies om het cluster naar de gewenste toestand van de clusterexploitant te verplaatsen.
etcd:
i. Een sleutelwaardedatabase die gegevens bevat over uw clusterstatus en configuratie.
ii. Etcd is foutbestendig en wordt gedistribueerd.
Kubelet :
i. Elke knooppunt bevat een kubelet
, wat een kleine toepassing is die kan communiceren met het Kubernetes besturingsplane.
ii. De kubelet
zorgt ervoor dat de containers die in peul configuratie worden gespecificeerd op een specifieke knoop lopen, en hun levenscyclus beheren.
iii. Het voert de handelingen uit die door uw bedieningsvliegtuig worden opgedragen.
Kube-proxy:
i. Alle computing knooppunten bevatten kube-proxy
, een netwerkproxy die Kubernetes-netwerkservices faciliteert.
ii. Het behandelt alle netwerkcommunicatie buiten en binnen het cluster, en voorwaartse verkeer of antwoorden op de pakketfilterlaag van het besturingssysteem.
Peul:
i. Een peul fungeert als één applicatie-instantie en wordt beschouwd als de kleinste eenheid in het objectmodel van Kubernetes.
Bastion-host:
i. De computer ontvangt over het algemeen één toepassing of proces, bijvoorbeeld een proxyserver of lastverdeler, en alle andere diensten worden verwijderd of beperkt om de bedreiging voor de computer te verminderen.
Cluster:
Opmerking: VPC op GCP configureren voorafgaand aan de provisioning van de VM's. Referentie VPC op GCP.
Op GCP-voorziening een Centos7 van de GCP-markt.
Klik Launch
.
Kies de regio volgens de dichtstbijzijnde bereikbaarheid. In dit laboratorium is de regio ingesteld op Mumbai.
De machineconfiguratie bestaat uit de E2-serie voor algemene doeleinden en het machinetype e2-standard-16 (16 vCPU, 64 GB memory)
.
Kiezen Allow default access
en voor firewalls Allow HTTP traffic
en Allow HTTPS traffic
.
Klik Create
.
Creëer op dezelfde manier 8 knooppunten zoals hier getoond.
Particuliere IP’s:
Op GCP worden de privé en openbare IP's automatisch toegewezen.
master-1 = 10.160.x.9
master-2 = 10.160.x.10
master-3 = 10.160.x.11
worker-1 = 10.160.x.12
worker-2 = 10.160.x.13
worker-3 = 10.160.x.14
worker-4 = 10.160.x.16
bastion = 10.160.x.19
Op alle knooppunten (master, worker, bastion):
1. Open de gewenste firewallpoorten op de Linux-server en configureer de beveiligingsconfiguraties.
Op master nodes in multi-master implementaties:
Kubernetes etcd server client API: 2379/tcp, 2380/tcp
Kubernetes API server: 6443/tcp
Opmerking: controleer ook of de poorten op de GCP-firewall zijn toegestaan.
2. Configureer de vereiste netwerkinstellingen (lokale DNS, hostnamen, NTP).
Bastion Server:
1. Stel een HA proxy in.
2. Voeg frontend- en backend-serverconfiguratie toe op haproxy.conf
bestand.
3. Start het wasprogramma haproxy
de dienst.
Gemeenschappelijke stappen voor master- en werknemersknooppunten:
1. Installeer en configureer de docker.
2. Installeer en configureer Kubernetes.
Alleen op master-knooppunten:
1. Het nieuwe Kubernetes-cluster initialiseren (kubeadm init
).
2. Installatie Calico
netwerkplug-in (specifiek gebruikt voor de kern-DNS-service op de hoofdknooppunten).
3. Gebruik deze opdracht om de hoofdknooppunten met een hoofdknooppunt aan te sluiten.
kubeadm join
:6443 --token
\ --discovery-token-ca-cert-hash
\ --control-plane --certificate-key
4. Valideren van de clusterinformatie met kubectl get nodes
uit.
Alleen op werknemersknooppunten:
1. Gebruik deze opdracht om de werknemersknooppunt te verbinden met het hoofdknooppunt.
kubeadm join
:6443 --token
\ --discovery-token-ca-cert-hash
2. Na succesvolle deelname valideert u de clusterinformatie op master nodes met deze opdracht kubectl get nodes
.
1. Wijzig het hoofdwachtwoord indien onbekend met deze opdracht:
passwd
2. Wijzig hostnamen indien nodig met deze opdracht.
hostnamectl set-hostname
3. Lokale DNS configureren.
cat > /etc/hosts <
4. Schakel chrony in voor NTP-services met deze opdracht.
systemctl enable --now chronyd
2. Controleer de status met deze opdracht.
systemctl status chronyd
3. Controleer NTP-bronnen met deze opdracht.
chronyc sources -v
Bastion Server
Stap 1. Controleer de updates.
sudo yum check-update
Stap 2. Installeer updates als deze niet up-to-date zijn.
yum update -y
Stap 3. Installeer de yum programma's.
yum -y install yum-utils
Stap 4. Installeer het haproxy pakket.
yum install haproxy -y
Stap 5. Voeg deze configuratie toe onder defaults in /etc/haproxy/haproxy.cfg
:
frontend kubernetes
bind 10.160.x.19:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
frontend http_front
mode http
bind 10.160.x.19:80
default_backend http_back
frontend https_front
mode http
bind 10.160.x.19:443
default_backend https_back
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend http_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend https_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
listen stats
bind 10.160.x.19:8080
mode http
stats enable
stats uri /
Stap 6. Controleer het configuratiebestand zodat het eruitziet als deze opdracht vi /etc/haproxy/haproxy.cfg
:
---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend kubernetes
bind 10.160.x.19:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
frontend http_front
mode http
bind 10.160.x.19:80
default_backend http_back
frontend https_front
mode http
bind 10.160.x.19:443
default_backend https_back
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend http_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend https_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
listen stats
bind 10.160.x.19:8080
mode http
stats enable
stats uri /
Stap 7. Controleer de status van haproxy:
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-10-26 08:33:17 UTC; 6s ago
Main PID: 30985 (haproxy-systemd)
CGroup: /system.slice/haproxy.service
├─30985 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
├─30986 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
└─30987 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
Oct 26 08:33:17 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8-loadbalancer vapadala]#
Mogelijke fouten
1. De HAProxy-service is in een mislukkingstoestand nadat u wijzigingen in de configuratie aanbrengt in haproxy.cfg
. Voorbeeld;
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2022-10-26 08:29:23 UTC; 3min 44s ago
Process: 30951 ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid $OPTIONS (code=exited, status=1/FAILURE)
Main PID: 30951 (code=exited, status=1/FAILURE)
Oct 26 08:29:23 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [WARNING] 298/082923 (30952) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [WARNING] 298/082923 (30952) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [ALERT] 298/082923 (30952) : Starting frontend kubernetes: cannot bind socket [10.160.x.19:6443].
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: haproxy-systemd-wrapper: exit, haproxy RC=1.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: haproxy.service: main process exited, code=exited, status=1/FAILURE.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: Unit haproxy.service entered failed state.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: haproxy.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
Resolutie
1. Set the boolean value for haproxy_connect_any to true.
2. Restart the haproxy service.
3. Verify the status.
Uitvoering:
[root@k8-loadbalancer vapadala]# setsebool -P haproxy_connect_any=1
[root@k8-loadbalancer vapadala]# systemctl restart haproxy
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-10-26 08:33:17 UTC; 6s ago
Main PID: 30985 (haproxy-systemd)
CGroup: /system.slice/haproxy.service
├─30985 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
├─30986 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
└─30987 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
Oct 26 08:33:17 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8-loadbalancer vapadala]#
Docker installeren op hoofd- en werkbalkknooppunten
Stap 1. Controleer de updates.
sudo yum check-update
Stap 2. Installeer updates als deze niet up-to-date zijn.
yum update -y
Stap 3. Installeer de yum programma's.
yum -y install yum-utils
Stap 4. Installeer Docker.
curl -fsSL https://get.docker.com/ | sh
Stap 5. Schakel docker in.
systemctl enable --now docker
Stap 6. Start de docker service.
sudo systemctl start docker
Stap 7. Controleer de status van de docker.
sudo systemctl status docker
Uitvoer:
[root@kube-master1 vapadala]# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-10-25 10:44:28 UTC; 40s ago
Docs: https://docs.docker.com
Main PID: 4275 (dockerd)
Tasks: 21
Memory: 35.2M
CGroup: /system.slice/docker.service
└─4275 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128233809Z" level=info msg="scheme \"unix\" not registered, fallback to defaul...dule=grpc.
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128251910Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:/...dule=grpc.
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128260953Z" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc.
Oct 25 10:44:27 kube-master1 dockerd[4275]: time="2022-10-25T10:44:27.920336293Z" level=info msg="Loading containers: start."
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.104357517Z" level=info msg="Default bridge (docker0) is assigned with an IP ad... address".
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.163830549Z" level=info msg="Loading containers: done."
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.182833703Z" level=info msg="Docker daemon" commit=03df974 graphdriver(s)=overl...=20.10.20.
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.182939545Z" level=info msg="Daemon has completed initialization".
Oct 25 10:44:28 kube-master1 systemd[1]: Started Docker Application Container Engine.
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.208492147Z" level=info msg="API listen on /var/run/docker.sock".
Hint: Some lines were ellipsized, use -l to show in full.
[root@kube-master1 vapadala]#
Installeer Kubernetes op hoofd- en werkknooppunten
Stap 1. Voeg Kubernetes repository toe.
cat <
"gpgcheck = 0" will not verify the authenticity of the package if unsigned. Production environment it is recommended to set "gpgcheck = 1"
Stap 2. Uitschakelen SELinux
.
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Stap 3. Installeren Kubernetes
.
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
Stap 4. Inschakelen Kubelet
.
sudo systemctl enable --now kubelet
Stap 5. Configureren Pod Network
.
kubeadm init --control-plane-endpoint "10.160.x.19:6443" --upload-certs
Stap 6. Token generatie:
Output voor de master (bedieningsvlak) en voor de werkknooppunten.
Master-knooppunt
Token: Je Kubernetes besturingsplane is succesvol geïnitialiseerd!
Als u uw cluster wilt gebruiken, voert u dit als een normale gebruiker uit:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Als u de hoofdgebruiker bent, kunt u ook starten.
export KUBECONFIG=/etc/kubernetes/admin.conf
U kunt nu een pod-netwerk naar het cluster implementeren.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
U kunt zich nu bij elk nummer van de besturingsplane knooppunten of master-knooppunten aansluiten die deze opdracht op elk als wortel uitvoeren.
Raadpleeg: kubeadm Josef workflow
kubeadm join 10.160.0.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0 \
--control-plane --certificate-key 66773b960199ef4530461ef4014e1432066902d4a3dee01669d8622579731701
Opmerking: Houd er rekening mee dat de certificaatsleutel toegang geeft tot clustergevoelige gegevens, houd het geheim!
Als waarborg, worden de geüploade certs verwijderd in twee uur; indien nodig, kunt u ze gebruiken.
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
Dan kunt u zich bij om het even welk aantal arbeidersknooppunten aansluiten en dit op elke als wortel in werking stellen.
kubeadm join 10.160.0.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
Stap 7. Controleer de Core DNS-service.
[root@kube-master1 vapadala]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-59697b644f-v2f22 1/1 Running 0 32m
kube-system calico-node-gdwr6 1/1 Running 0 5m54s
kube-system calico-node-zszbc 1/1 Running 11 (5m22s ago) 32m
kube-system calico-typha-6944f58589-q9jxf 1/1 Running 0 32m
kube-system coredns-565d847f94-cwgj8 1/1 Running 0 58m
kube-system coredns-565d847f94-tttpq 1/1 Running 0 58m
kube-system etcd-kube-master1 1/1 Running 0 59m
kube-system kube-apiserver-kube-master1 1/1 Running 0 59m
kube-system kube-controller-manager-kube-master1 1/1 Running 0 59m
kube-system kube-proxy-flgvq 1/1 Running 0 5m54s
kube-system kube-proxy-hf5qv 1/1 Running 0 58m
kube-system kube-scheduler-kube-master1 1/1 Running 0 59m
[root@kube-master1 vapadala]#
Stap 8. Controleer de status van het hoofdknooppunt.
[root@kube-master1 vapadala]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 Ready control-plane 11m v1.25.3
Om zich aan te sluiten bij meerdere master nodes, wordt deze joint commando uitgevoerd op master nodes.
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0 \
--control-plane --certificate-key 66773b960199ef4530461ef4014e1432066902d4a3dee01669d8622579731701
Mogelijke fouten gevonden tijdens Token Generation
Fout CRI
[root@kube-master1 vapadala]# kubeadm init --control-plane-endpoint "10.160.x.19:6443" --upload-certs
[init] Using Kubernetes version: v1.25.3
[preflight] Running pre-flight checks
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR CRI]: container runtime is not running: output: time="2022-10-25T08:56:42Z" level=fatal msg="unable to determine runtime API version: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial unix /var/run/containerd/containerd.sock: connect: no such file or directory\"", error: exit status 1.
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
Fout-CRI-resolutie
Stap 1. Verwijder het bestand config.toml en start het opnieuw op.
rm -rf /etc/containerd/config.toml
systemctl restart containerd
kubeadm init
Stap 2. Ingesloten installatie:
Installeer het containerd.io-pakket vanuit de officiële Docker-repositories met deze opdrachten.
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo.
yum install -y containerd.io
Stap 3. Ingesloten configureren:
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
Stap 4. Opnieuw starten bevat:
systemctl restart containerd
Fout FileContent-proc-sys-net-ipv4-ip_forward
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
Fout bij FileContent-proc-sys-net-ipv4-ip_forward resolutie
Stel de waarde ip_forward in op 1.
echo 1 > /proc/sys/net/ipv4/ip_forward
Core DNS-service werkt niet
[root@kube-master1 vapadala]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 NotReady control-plane 11m v1.25.3
[root@kube-master1 vapadala]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-cwgj8 0/1 Pending 0 12m
kube-system coredns-565d847f94-tttpq 0/1 Pending 0 12m
kube-system etcd-kube-master1 1/1 Running 0 12m
kube-system kube-apiserver-kube-master1 1/1 Running 0 12m
kube-system kube-controller-manager-kube-master1 1/1 Running 0 12m
kube-system kube-proxy-hf5qv 1/1 Running 0 12m
kube-system kube-scheduler-kube-master1 1/1 Running 0 12m
[root@kube-master1 vapadala]#
Resolutie
De Core DNS is in behandeling wat een probleem met netwerken aangeeft. Daarom moet Calico worden geïnstalleerd.
Referentie: Calico
Voer deze twee opdrachten uit:
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.3/manifests/calico-typha.yaml -o calico.yaml
kubectl apply -f calico.yaml
Worker Node
Op Worker Node wanneer de token zijn verkregen van de master:
Stap 1. Koebelet-service inschakelen.
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl restart kubelet
systemctl enable kubelet.service
Stap 2. Sluit je aan bij alle arbeidersknooppunten met de master node met dit commando.
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
Stap 3. Als er fouten met betrekking tot bestanden of poorten optreden, stelt u de kubeadm opnieuw in met deze opdracht.
kubeadm reset
Voer na het opnieuw instellen het token in vanaf de hoofdknooppunt.
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
eindresultaat
Het cluster is nu gevormd, verifieert het met de opdracht kubectl get knooppunten.
Opmerking: op het moment van clustervorming is alleen besturing vanaf master nodes geconfigureerd. De bastion-host is niet ingesteld als een gecentraliseerde server om alle Kube's in het cluster te bewaken.
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
14-Dec-2022 |
Eerste vrijgave |