Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize | ||
navody:vps:vpsadminos:kubernetes [2020/11/22 08:52] – toms | navody:vps:vpsadminos:kubernetes [2021/10/29 11:38] – instaloval jsem dle navodu na: Linux k8s-master 5.10.63 #1-vpsAdminOS euro | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Kubernetes na vpsAdminOS ====== | ====== Kubernetes na vpsAdminOS ====== | ||
+ | <note important> | ||
===== Prerekvizity ===== | ===== Prerekvizity ===== | ||
- | * VPS musí bežať na vpsAdminOS na kerneli min. 5.10-rc4. V čase písania návodu je dostupný tento kernel iba na staging node | + | * VPS musí bežať na vpsAdminOS na kerneli min. 5.9.10. V čase písania návodu je dostupný tento kernel iba na staging node (nebo Brno) |
* Postup je odskúšaný na fresh minimal Ubuntu 20.04 | * Postup je odskúšaný na fresh minimal Ubuntu 20.04 | ||
* Používame latest vanilla kubernetes | * Používame latest vanilla kubernetes | ||
- | * Ako networking používame flannel s host-gw s internou sietou 10.244.0.0/ | + | * Ako networking používame flannel s host-gw s internou sietou 10.244.0.0/ |
* Kubernetes si chce šahať do /sys a /proc. Hodnoty máme vo vpsAdminOS správne pre vpsAdminOS, preto mu iba nafakeujeme dané súbory aby si tam sám mohol zapísať. Vytvoríme aj fake service v systemd, aby sa pri štarte systému dané súbory správne namapovali. | * Kubernetes si chce šahať do /sys a /proc. Hodnoty máme vo vpsAdminOS správne pre vpsAdminOS, preto mu iba nafakeujeme dané súbory aby si tam sám mohol zapísať. Vytvoríme aj fake service v systemd, aby sa pri štarte systému dané súbory správne namapovali. | ||
* **Inštalačný skript je rovnaký pre master aj worker nody** | * **Inštalačný skript je rovnaký pre master aj worker nody** | ||
Řádek 48: | Řádek 49: | ||
mount --bind overcommit_memory / | mount --bind overcommit_memory / | ||
- | echo " | ||
- | mount --bind swaps /proc/swaps | ||
mkdir block | mkdir block | ||
mount -o bind block/ /sys/block/ | mount -o bind block/ /sys/block/ | ||
mount --make-rshared / | mount --make-rshared / | ||
- | |||
- | mkdir -p netfilter/ | ||
- | mount --bind netfilter / | ||
- | echo 327680 > netfilter/ | ||
- | |||
- | echo 1310720 > netfilter/ | ||
- | |||
- | mkdir nf_conntrack_parameters | ||
- | echo N > nf_conntrack_parameters/ | ||
- | echo 512 > nf_conntrack_parameters/ | ||
- | echo 16384 > nf_conntrack_parameters/ | ||
- | echo N > nf_conntrack_parameters/ | ||
- | echo N > nf_conntrack_parameters/ | ||
- | chmod 666 -R nf_conntrack_parameters | ||
- | chown nobody: | ||
- | mount -o bind nf_conntrack_parameters / | ||
EOF | EOF | ||
Řádek 167: | Řádek 150: | ||
Na master node môžeme sledovať stav nodov: | Na master node môžeme sledovať stav nodov: | ||
< | < | ||
- | kubectl get nodes | + | # kubectl get nodes |
+ | NAME | ||
+ | vps3 | ||
+ | vps4 | ||
+ | </ | ||
+ | |||
+ | == Post deploy nastaveni == | ||
+ | === Instalace Loadbalanceru === | ||
+ | Je treba zmenit strictARP na true, viz https:// | ||
+ | < | ||
+ | kubectl edit configmap -n kube-system kube-proxy | ||
+ | |||
+ | kubectl apply -f https:// | ||
+ | kubectl apply -f https:// | ||
+ | </ | ||
+ | |||
+ | Config pro loadbalancer | ||
+ | |||
+ | < | ||
+ | apiVersion: v1 | ||
+ | kind: ConfigMap | ||
+ | metadata: | ||
+ | namespace: metallb-system | ||
+ | name: config | ||
+ | data: | ||
+ | config: | | ||
+ | address-pools: | ||
+ | - name: default | ||
+ | protocol: layer2 | ||
+ | addresses: | ||
+ | - apiVersion: v1 | ||
+ | kind: ConfigMap | ||
+ | metadata: | ||
+ | namespace: metallb-system | ||
+ | name: config | ||
+ | data: | ||
+ | config: | | ||
+ | address-pools: | ||
+ | - name: default | ||
+ | protocol: layer2 | ||
+ | addresses: | ||
+ | - 37.205.x.x/ | ||
+ | </ | ||
+ | |||
+ | === Ingress === | ||
+ | U ingresu je treba zmenit servisu, co bere adresu z routeru, z NodePort na ClusterIP | ||
+ | |||
+ | < | ||
+ | kubectl apply -f https:// | ||
+ | kubectl edit service -n ingress-nginx ingress-nginx-controller | ||
+ | # edit type: NodePort -> type: LoadBalancer | ||
+ | </ | ||
+ | |||
+ | === Cert manager === | ||
+ | Pro automaticke vystavovani certifikatu | ||
+ | < | ||
+ | kubectl apply -f https:// | ||
+ | </ | ||
+ | |||
+ | Nasledne je treba vytvorit issuer: | ||
+ | < | ||
+ | kind: ClusterIssuer | ||
+ | metadata: | ||
+ | name: letsencrypt-prod | ||
+ | namespace: cert-manager | ||
+ | spec: | ||
+ | acme: | ||
+ | # The ACME server URL | ||
+ | server: https:// | ||
+ | # Email address used for ACME registration | ||
+ | email: email@email.com | ||
+ | # Name of a secret used to store the ACME account private key | ||
+ | privateKeySecretRef: | ||
+ | name: letsencrypt-prod | ||
+ | # Enable the HTTP-01 challenge provider | ||
+ | solvers: | ||
+ | - http01: | ||
+ | ingress: | ||
+ | class: nginx | ||
+ | </ | ||
+ | |||
+ | === Dashboard === | ||
+ | Pro otestovani muzeme nainstalovat napr dashboard. | ||
+ | |||
+ | < | ||
+ | kubectl apply -f https:// | ||
+ | </ | ||
+ | |||
+ | Dodatecne role + ingress pro dashboard | ||
+ | < | ||
+ | apiVersion: v1 | ||
+ | kind: ServiceAccount | ||
+ | metadata: | ||
+ | name: admin-user | ||
+ | namespace: kubernetes-dashboard | ||
+ | --- | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | kind: ClusterRoleBinding | ||
+ | metadata: | ||
+ | name: admin-user | ||
+ | roleRef: | ||
+ | apiGroup: rbac.authorization.k8s.io | ||
+ | kind: ClusterRole | ||
+ | name: cluster-admin | ||
+ | subjects: | ||
+ | - kind: ServiceAccount | ||
+ | name: admin-user | ||
+ | namespace: kubernetes-dashboard | ||
+ | --- | ||
+ | apiVersion: networking.k8s.io/ | ||
+ | kind: Ingress | ||
+ | metadata: | ||
+ | name: dashboard | ||
+ | namespace: kubernetes-dashboard | ||
+ | annotations: | ||
+ | kubernetes.io/ | ||
+ | cert-manager.io/ | ||
+ | nginx.ingress.kubernetes.io/ | ||
+ | spec: | ||
+ | tls: | ||
+ | - hosts: | ||
+ | - k8s.domain.tld | ||
+ | secretName: k8s.domain.tld | ||
+ | rules: | ||
+ | - host: k8s.domain.tld | ||
+ | http: | ||
+ | paths: | ||
+ | - path: / | ||
+ | pathType: Prefix | ||
+ | backend: | ||
+ | service: | ||
+ | name: kubernetes-dashboard | ||
+ | port: | ||
+ | number: 443 | ||
</ | </ |