k0s 折騰筆記


#?安裝?k0sctl
wget?https://github.com/k0sproject/k0sctl/releases/download/v0.9.0/k0sctl-linux-x64
chmod?+x?k0sctl-linux-x64
mv?k0sctl-linux-x64?/usr/local/bin/k0sctl
apiVersion:?k0sctl.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s-cluster
spec:
??hosts:
??-?ssh:
??????address:?10.0.0.11
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
??-?ssh:
??????address:?10.0.0.12
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
??-?ssh:
??????address:?10.0.0.13
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
??-?ssh:
??????address:?10.0.0.14
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?worker
??-?ssh:
??????address:?10.0.0.15
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?worker
??k0s:
????version:?1.21.2+k0s.1
????config:
??????apiVersion:?k0s.k0sproject.io/v1beta1
??????kind:?Cluster
??????metadata:
????????name:?k0s
??????spec:
????????api:
??????????address:?10.0.0.11
??????????port:?6443
??????????k0sApiPort:?9443
??????????sans:
??????????-?10.0.0.11
??????????-?10.0.0.12
??????????-?10.0.0.13
????????storage:
??????????type:?etcd
??????????etcd:
????????????peerAddress:?10.0.0.11
????????network:
??????????kubeProxy:
????????????disabled:?false
????????????mode:?ipvs
???tmp?k0sctl?apply?-c?bak.yaml
?????????????????????????????????????█████████?█████████?███
?????????????????????????????????????███??????????███????███
?????????????????????????????????????███??????????███????███
?????????????????????????????????????███??????????███????███
?????????????????????????????????????█████████????███????██████████
k0sctl?0.0.0?Copyright?2021,?k0sctl?authors.
Anonymized?telemetry?of?usage?will?be?sent?to?the?authors.
By?continuing?to?use?k0sctl?you?agree?to?these?terms:
https://k0sproject.io/licenses/eula
INFO?==>?Running?phase:?Connect?to?hosts
INFO?[ssh]?10.0.0.15:22:?connected
INFO?[ssh]?10.0.0.11:22:?connected
INFO?[ssh]?10.0.0.12:22:?connected
INFO?[ssh]?10.0.0.14:22:?connected
INFO?[ssh]?10.0.0.13:22:?connected
INFO?==>?Running?phase:?Detect?host?operating?systems
INFO?[ssh]?10.0.0.11:22:?is?running?Ubuntu?20.04.2?LTS
INFO?[ssh]?10.0.0.12:22:?is?running?Ubuntu?20.04.2?LTS
INFO?[ssh]?10.0.0.14:22:?is?running?Ubuntu?20.04.2?LTS
INFO?[ssh]?10.0.0.13:22:?is?running?Ubuntu?20.04.2?LTS
INFO?[ssh]?10.0.0.15:22:?is?running?Ubuntu?20.04.2?LTS
INFO?==>?Running?phase:?Prepare?hosts
INFO?==>?Running?phase:?Gather?host?facts
INFO?[ssh]?10.0.0.11:22:?discovered?ens33?as?private?interface
INFO?[ssh]?10.0.0.13:22:?discovered?ens33?as?private?interface
INFO?[ssh]?10.0.0.12:22:?discovered?ens33?as?private?interface
INFO?==>?Running?phase:?Download?k0s?on?hosts
INFO?[ssh]?10.0.0.11:22:?downloading?k0s?1.21.2+k0s.1
INFO?[ssh]?10.0.0.13:22:?downloading?k0s?1.21.2+k0s.1
INFO?[ssh]?10.0.0.12:22:?downloading?k0s?1.21.2+k0s.1
INFO?[ssh]?10.0.0.15:22:?downloading?k0s?1.21.2+k0s.1
INFO?[ssh]?10.0.0.14:22:?downloading?k0s?1.21.2+k0s.1
......
#?注意:目標(biāo)機(jī)器 hostname 不應(yīng)當(dāng)為域名形式,這里的樣例是已經(jīng)修復(fù)了這個(gè)問題
k1.node???~?k0s?kubectl?get?node?-o?wide
NAME??????STATUS???ROLES????AGE???VERSION???????INTERNAL-IP???EXTERNAL-IP???OS-IMAGE?????????????KERNEL-VERSION?????CONTAINER-RUNTIME
k1.node???Ready???????10m???v1.21.2+k0s???10.0.0.11????? ????????Ubuntu?20.04.2?LTS???5.4.0-77-generic???containerd://1.4.6
k2.node???Ready???????10m???v1.21.2+k0s???10.0.0.12????? ????????Ubuntu?20.04.2?LTS???5.4.0-77-generic???containerd://1.4.6
k3.node???Ready???????10m???v1.21.2+k0s???10.0.0.13????? ????????Ubuntu?20.04.2?LTS???5.4.0-77-generic???containerd://1.4.6
k4.node???Ready???????10m???v1.21.2+k0s???10.0.0.14????? ????????Ubuntu?20.04.2?LTS???5.4.0-77-generic???containerd://1.4.6
k5.node???Ready???????10m???v1.21.2+k0s???10.0.0.15????? ????????Ubuntu?20.04.2?LTS???5.4.0-77-generic???containerd://1.4.6
文件上傳:k0sctl 允許定義在安裝前的文件上傳,在安裝之前 k0sctl 會(huì)把已經(jīng)定義的相關(guān)文件全部上傳到目標(biāo)主機(jī),包括不限于 k0s 本身二進(jìn)制文件、離線鏡像包、其他安裝文件、其他輔助腳本等。
Manifests 與 Helm:當(dāng)將特定的文件上傳到 Master 節(jié)點(diǎn)的?/var/lib/k0s/manifests 目錄時(shí),k0s 在安裝過程中會(huì)自動(dòng)應(yīng)用這些配置,類似 kubelet 的 static pod 一樣,只不過 k0s 允許全部資源(包括不限于 Deployment、DaemonSet、namespace 等);同樣也可以直接在 k0sctl.yaml 添加 Helm 配置,k0s 也會(huì)以同樣的方式幫你管理。
輔助腳本:可以在每個(gè)主機(jī)下配置 hooks 選項(xiàng)來實(shí)現(xiàn)執(zhí)行一些特定的腳本(文檔里沒有,需要看源碼),以便在特定情況下做點(diǎn)騷操作。
apiVersion:?k0sctl.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s-cluster
spec:
??hosts:
??-?ssh:
??????address:?10.0.0.11
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
????#?files?配置將會(huì)在安裝前將相關(guān)文件上傳到目標(biāo)主機(jī)
????files:
????-?name:?image-bundle
??????src:?/Users/bleem/tmp/bundle_file
??????#?在該目錄下的?image?壓縮包將會(huì)被自動(dòng)導(dǎo)入到?containerd?中
??????dstDir:?/var/lib/k0s/images/
??????perm:?0755
......

apiVersion:?k0sctl.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s-cluster
spec:
??hosts:
??-?ssh:
??????address:?10.0.0.11
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
????files:
????#?將?Flannel?的?yaml?放到?Manifests?里(需要單獨(dú)創(chuàng)建一個(gè)目錄)
????-?name:?flannel
??????src:?/Users/bleem/tmp/kube-flannel.yaml
??????dstDir:?/var/lib/k0s/manifests/flannel
??????perm:?0644
????#?自己安裝一下?CNI?插件
????-?name:?cni-plugins
??????src:?/Users/bleem/tmp/cni-plugins/*
??????dstDir:?/opt/cni/bin/
??????perm:?0755
??k0s:
????version:?v1.21.2+k0s.1
????config:
??????apiVersion:?k0s.k0sproject.io/v1beta1
??????kind:?Cluster
??????metadata:
????????name:?k0s
??????spec:
????????api:
??????????address:?10.0.0.11
??????????port:?6443
??????????k0sApiPort:?9443
??????????sans:
??????????-?10.0.0.11
??????????-?10.0.0.12
??????????-?10.0.0.13
????????storage:
??????????type:?etcd
????????network:
??????????podCIDR:?10.244.0.0/16
??????????serviceCIDR:?10.96.0.0/12
??????????#?這里指定?CNI?為?custom?自定義類型,這樣
??????????#?k0s?就不會(huì)安裝?Calico/kube-router?了
??????????provider:?custom
apiVersion:?k0sctl.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s-cluster
spec:
??hosts:
??-?ssh:
??????address:?10.0.0.11
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
????#?聲明需要上傳二進(jìn)制文件
????uploadBinary:?true
????#?指定二進(jìn)制文件位置
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????files:
????-?name:?flannel
??????src:?/Users/bleem/tmp/kube-flannel.yaml
??????dstDir:?/var/lib/k0s/manifests/flannel
??????perm:?0644
......
apiVersion:?k0sctl.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s-cluster
spec:
??hosts:
??-?ssh:
??????address:?10.0.0.11
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
????uploadBinary:?true
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????files:
????-?name:?flannel
??????src:?/Users/bleem/tmp/kube-flannel.yaml
??????dstDir:?/var/lib/k0s/manifests/flannel
??????perm:?0644
......
??k0s:
????version:?v1.21.2+k0s.1
????config:
??????apiVersion:?k0s.k0sproject.io/v1beta1
??????kind:?Cluster
??????metadata:
????????name:?k0s
??????spec:
????????api:
??????????address:?10.0.0.11
??????????port:?6443
??????????k0sApiPort:?9443
??????????sans:
??????????-?10.0.0.11
??????????-?10.0.0.12
??????????-?10.0.0.13
????????#?指定內(nèi)部組件的鏡像使用的版本
????????images:
??????????#konnectivity:
??????????#??image:?us.gcr.io/k8s-artifacts-prod/kas-network-proxy/proxy-agent
??????????#??version:?v0.0.21
??????????#metricsserver:
??????????#??image:?gcr.io/k8s-staging-metrics-server/metrics-server
??????????#??version:?v0.3.7
??????????kubeproxy:
????????????image:?k8s.gcr.io/kube-proxy
????????????version:?v1.21.3
??????????#coredns:
??????????#??image:?docker.io/coredns/coredns
??????????#??version:?1.7.0
??????????#calico:
??????????#??cni:
??????????#????image:?docker.io/calico/cni
??????????#????version:?v3.18.1
??????????#??node:
??????????#????image:?docker.io/calico/node
??????????#????version:?v3.18.1
??????????#??kubecontrollers:
??????????#????image:?docker.io/calico/kube-controllers
??????????#????version:?v3.18.1
??????????#kuberouter:
??????????#??cni:
??????????#????image:?docker.io/cloudnativelabs/kube-router
??????????#????version:?v1.2.1
??????????#??cniInstaller:
??????????#????image:?quay.io/k0sproject/cni-node
??????????#????version:?0.1.0
??????????default_pull_policy:?IfNotPresent
??????????#default_pull_policy:?Never
spec.api.extraArgs:用于自定義 kube-apiserver 的自定義參數(shù)(KV map)
spec.scheduler.extraArgs:用于自定義 kube-scheduler 的自定義參數(shù)(KV map)
spec.controllerManager.extraArgs:用于自定義 kube-controller-manager 自定義參數(shù)(KV map)
spec.workerProfiles:用于覆蓋 kubelet-config.yaml 中的配置,該配置最終將于默認(rèn)的 kubelet-config.yaml 合并

6443(for Kubernetes API):負(fù)載均衡器 6443 負(fù)載所有 Master 節(jié)點(diǎn)的 6443
9443(for controller join API):負(fù)載均衡器 9443 負(fù)載所有 Master 節(jié)點(diǎn)的 9443
8132(for Konnectivity agent):負(fù)載均衡器 8132 負(fù)載所有 Master 節(jié)點(diǎn)的 8132
8133(for Konnectivity server):負(fù)載均衡器 8133 負(fù)載所有 Master 節(jié)點(diǎn)的 8133
error_log?syslog:server=unix:/dev/log?notice;
worker_processes?auto;
events?{
?multi_accept?on;
?use?epoll;
?worker_connections?1024;
}
stream?{
????upstream?kube_apiserver?{
????????least_conn;
????????server?10.0.0.11:6443;
????????server?10.0.0.12:6443;
????????server?10.0.0.13:6443;
????}
????upstream?konnectivity_agent?{
????????least_conn;
????????server?10.0.0.11:8132;
????????server?10.0.0.12:8132;
????????server?10.0.0.13:8132;
????}
????upstream?konnectivity_server?{
????????least_conn;
????????server?10.0.0.11:8133;
????????server?10.0.0.12:8133;
????????server?10.0.0.13:8133;
????}
????upstream?controller_join_api?{
????????least_conn;
????????server?10.0.0.11:9443;
????????server?10.0.0.12:9443;
????????server?10.0.0.13:9443;
????}
????
????server?{
????????listen????????0.0.0.0:6443;
????????proxy_pass????kube_apiserver;
????????proxy_timeout?10m;
????????proxy_connect_timeout?1s;
????}
????server?{
????????listen????????0.0.0.0:8132;
????????proxy_pass????konnectivity_agent;
????????proxy_timeout?10m;
????????proxy_connect_timeout?1s;
????}
????server?{
????????listen????????0.0.0.0:8133;
????????proxy_pass????konnectivity_server;
????????proxy_timeout?10m;
????????proxy_connect_timeout?1s;
????}
????server?{
????????listen????????0.0.0.0:9443;
????????proxy_pass????controller_join_api;
????????proxy_timeout?10m;
????????proxy_connect_timeout?1s;
????}
}
apiVersion:?k0sctl.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s-cluster
spec:
??hosts:
??-?ssh:
??????address:?10.0.0.11
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????#?role?支持的值
????#?'controller'?單?Master
????#?'worker'?單?Worker
????#?'controller?+?worker'?Master?和?Worker?都運(yùn)行?
????role:?controller+worker
????
????#?從本地?上傳?k0s?bin?文件,不要在目標(biāo)機(jī)器下載
????uploadBinary:?true
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????
????#?上傳其他文件
????files:
????#?上傳?Flannel?配置,使用自定的?Flannel?替換內(nèi)置的?Calico
????-?name:?flannel
??????src:?/Users/bleem/tmp/kube-flannel.yaml
??????dstDir:?/var/lib/k0s/manifests/flannel
??????perm:?0644
????
????#?上傳打包好的?image?鏡像包,k0s?會(huì)自動(dòng)導(dǎo)入到?containerd
????-?name:?image-bundle
??????src:?/Users/bleem/tmp/bundle_file
??????dstDir:?/var/lib/k0s/images/
??????perm:?0755
????
????#?使用?Flannel?后每個(gè)機(jī)器要上傳對(duì)應(yīng)的?CNI?插件
????-?name:?cni-plugins
??????src:?/Users/bleem/tmp/cni-plugins/*
??????dstDir:?/opt/cni/bin/
??????perm:?0755
??-?ssh:
??????address:?10.0.0.12
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
????uploadBinary:?true
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????files:
????-?name:?image-bundle
??????src:?/Users/bleem/tmp/bundle_file
??????dstDir:?/var/lib/k0s/images/
??????perm:?0755
????-?name:?cni-plugins
??????src:?/Users/bleem/tmp/cni-plugins/*
??????dstDir:?/opt/cni/bin/
??????perm:?0755
??-?ssh:
??????address:?10.0.0.13
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?controller+worker
????uploadBinary:?true
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????files:
????-?name:?image-bundle
??????src:?/Users/bleem/tmp/bundle_file
??????dstDir:?/var/lib/k0s/images/
??????perm:?0755
????-?name:?cni-plugins
??????src:?/Users/bleem/tmp/cni-plugins/*
??????dstDir:?/opt/cni/bin/
??????perm:?0755
??-?ssh:
??????address:?10.0.0.14
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?worker
????uploadBinary:?true
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????files:
????-?name:?image-bundle
??????src:?/Users/bleem/tmp/bundle_file
??????dstDir:?/var/lib/k0s/images/
??????perm:?0755
????-?name:?cni-plugins
??????src:?/Users/bleem/tmp/cni-plugins/*
??????dstDir:?/opt/cni/bin/
??????perm:?0755
??-?ssh:
??????address:?10.0.0.15
??????user:?root
??????port:?22
??????keyPath:?/Users/bleem/.ssh/id_rsa
????role:?worker
????uploadBinary:?true
????k0sBinaryPath:?/Users/bleem/tmp/k0s
????files:
????-?name:?image-bundle
??????src:?/Users/bleem/tmp/bundle_file
??????dstDir:?/var/lib/k0s/images/
??????perm:?0755
????-?name:?cni-plugins
??????src:?/Users/bleem/tmp/cni-plugins/*
??????dstDir:?/opt/cni/bin/
??????perm:?0755
??k0s:
????version:?v1.21.2+k0s.1
????config:
??????apiVersion:?k0s.k0sproject.io/v1beta1
??????kind:?Cluster
??????metadata:
????????name:?k0s
??????spec:
????????api:
??????????#?此處填寫外部的負(fù)載均衡器地址,所有?kubelet?會(huì)鏈接這個(gè)地址
??????????externalAddress:?10.0.0.20
??????????#?不要忘了為外部負(fù)載均衡器添加?API?證書的?SAN
??????????sans:
??????????-?10.0.0.11
??????????-?10.0.0.12
??????????-?10.0.0.13
??????????-?10.0.0.20
????????#?存儲(chǔ)類型使用?etcd,etcd?集群由?k0s?自動(dòng)管理
????????storage:
??????????type:?etcd
????????network:
??????????podCIDR:?10.244.0.0/16
??????????serviceCIDR:?10.96.0.0/12
??????????#?網(wǎng)絡(luò)插件使用?custom,然后讓?Flannel?接管
??????????provider:?custom
??????????kubeProxy:
????????????disabled:?false
????????????#?開啟?kubelet?的?ipvs?模式
????????????mode:?ipvs
????????#?不發(fā)送任何匿名統(tǒng)計(jì)信息
????????telemetry:
??????????enabled:?false
????????images:
??????????default_pull_policy:?IfNotPresent



apiVersion:?k0s.k0sproject.io/v1beta1
kind:?Cluster
metadata:
??name:?k0s
spec:
??storage:
????type:?kine
????kine:
??????dataSource:?"sqlite:///var/lib/k0s/db/state.db?more=rwc&_journal=WAL&cache=shared"
k0s?kubeconfig?create?--groups?"system:masters"?testUser?>?k0s.config

https://docs.k0sproject.io/v1.21.2+k0s.1/airgap-install/
https://github.com/containernetworking/plugins/releases

●Zabbix企業(yè)級(jí)實(shí)戰(zhàn)手冊(cè).pdf
●一張思維導(dǎo)圖,囊括所有Web安全核心知識(shí)點(diǎn),快拿走
●這可能是最為詳細(xì)的Docker入門筆記,Docker學(xué)習(xí)看這一篇就夠了
●華為工程師154頁超強(qiáng)悍Linux學(xué)習(xí)筆記總結(jié)!
