Documentation ¶
Index ¶
- Variables
- func GenerateK3sEnv(mgr *manager.Manager, node *kubekeyapiv1alpha1.HostCfg, token string) (string, error)
- func GenerateK3sKillallScript() (string, error)
- func GenerateK3sService(mgr *manager.Manager, node *kubekeyapiv1alpha1.HostCfg, token string) (string, error)
- func GenerateK3sUninstallScript() (string, error)
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // K3sServiceTempl defines the template of kubelete service for systemd. K3sServiceTempl = template.Must(template.New("k3sService").Parse( dedent.Dedent(`[Unit] Description=Lightweight Kubernetes Documentation=https://k3s.io Wants=network-online.target After=network-online.target [Install] WantedBy=multi-user.target [Service] Type=notify EnvironmentFile=/etc/systemd/system/k3s.service.env {{ if .IsMaster }} Environment="K3S_ARGS= {{ range .CertSANs }} --tls-san={{ . }}{{- end }} {{ range .ApiserverArgs }} --kube-apiserver-arg={{ . }}{{- end }} {{ range .ControllerManager }} --kube-controller-manager-arg={{ . }}{{- end }} {{ range .SchedulerArgs }} --kube-scheduler-arg={{ . }}{{- end }} --cluster-cidr={{ .PodSubnet }} --service-cidr={{ .ServiceSubnet }} --cluster-dns={{ .ClusterDns }} --flannel-backend=none --disable-network-policy --disable-cloud-controller --disable=servicelb,traefik,metrics-server,local-storage" {{ end }} Environment="K3S_EXTRA_ARGS=--node-name={{ .HostName }} --node-ip={{ .NodeIP }} --pause-image={{ .PauseImage }} {{ range .KubeletArgs }} --kubelet-arg={{ . }}{{- end }} {{ range .KubeProxyArgs }} --kube-proxy-arg={{ . }}{{- end }}" Environment="K3S_ROLE={{ if .IsMaster }}server{{ else }}agent{{ end }}" Environment="K3S_SERVER_ARGS={{ if .Server }}--server={{ .Server }}{{ end }}" KillMode=process Delegate=yes LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity TimeoutStartSec=0 Restart=always RestartSec=5s ExecStartPre=-/sbin/modprobe br_netfilter ExecStartPre=-/sbin/modprobe overlay ExecStart=/usr/local/bin/k3s $K3S_ROLE $K3S_ARGS $K3S_EXTRA_ARGS $K3S_SERVER_ARGS `))) // K3sEnvTempl defines the template of kubelet's Env for the kubelet's systemd service. K3sEnvTempl = template.Must(template.New("k3sEnv").Parse( dedent.Dedent(`# Note: This dropin only works with k3s {{ if .IsMaster }} K3S_DATASTORE_ENDPOINT={{ .DataStoreEndPoint }} K3S_DATASTORE_CAFILE={{ .DataStoreCaFile }} K3S_DATASTORE_CERTFILE={{ .DataStoreCertFile }} K3S_DATASTORE_KEYFILE={{ .DataStoreKeyFile }} K3S_KUBECONFIG_MODE=644 {{ end }} {{ if .Token }} K3S_TOKEN={{ .Token }} {{ end }} `))) )
View Source
var K3sKillallScriptTempl = template.Must(template.New("k3sKillallScript").Parse( dedent.Dedent(`#!/bin/sh [ $(id -u) -eq 0 ] || exec sudo $0 $@ for bin in /var/lib/rancher/k3s/data/**/bin/; do [ -d $bin ] && export PATH=$PATH:$bin:$bin/aux done set -x for service in /etc/systemd/system/k3s*.service; do [ -s $service ] && systemctl stop $(basename $service) done for service in /etc/init.d/k3s*; do [ -x $service ] && $service stop done pschildren() { ps -e -o ppid= -o pid= | \ sed -e 's/^\s*//g; s/\s\s*/\t/g;' | \ grep -w "^$1" | \ cut -f2 } pstree() { for pid in $@; do echo $pid for child in $(pschildren $pid); do pstree $child done done } killtree() { kill -9 $( { set +x; } 2>/dev/null; pstree $@; set -x; ) 2>/dev/null } getshims() { ps -e -o pid= -o args= | sed -e 's/^ *//; s/\s\s*/\t/;' | grep -w 'k3s/data/[^/]*/bin/containerd-shim' | cut -f1 } killtree $({ set +x; } 2>/dev/null; getshims; set -x) do_unmount_and_remove() { awk -v path="$1" '$2 ~ ("^" path) { print $2 }' /proc/self/mounts | sort -r | xargs -r -t -n 1 sh -c 'umount "$0" && rm -rf "$0"' } do_unmount_and_remove '/run/k3s' do_unmount_and_remove '/var/lib/rancher/k3s' do_unmount_and_remove '/var/lib/kubelet/pods' do_unmount_and_remove '/run/netns/cni-' # Remove CNI namespaces ip netns show 2>/dev/null | grep cni- | xargs -r -t -n 1 ip netns delete # Delete network interface(s) that match 'master cni0' ip link show 2>/dev/null | grep 'master cni0' | while read ignore iface ignore; do iface=${iface%%@*} [ -z "$iface" ] || ip link delete $iface done ip link delete cni0 ip link delete flannel.1 rm -rf /var/lib/cni/ iptables-save | grep -v KUBE- | grep -v CNI- | iptables-restore `)))
K3sKillallScriptTempl defines the template of k3s-killall script.
View Source
var K3sUninstallScriptTempl = template.Must(template.New("k3sUninstallScript").Parse( dedent.Dedent(`#!/bin/sh set -x [ $(id -u) -eq 0 ] || exec sudo $0 $@ /usr/local/bin/k3s-killall.sh if which systemctl; then systemctl disable k3s systemctl reset-failed k3s systemctl daemon-reload fi if which rc-update; then rc-update delete k3s default fi rm -f /etc/systemd/system/k3s.service rm -rf /etc/systemd/system/k3s.service.d rm -f /etc/systemd/system/k3s.service.env remove_uninstall() { rm -f /usr/local/bin/k3s-uninstall.sh } trap remove_uninstall EXIT if (ls /etc/systemd/system/k3s*.service || ls /etc/init.d/k3s*) >/dev/null 2>&1; then set +x; echo 'Additional k3s services installed, skipping uninstall of k3s'; set -x exit fi for cmd in kubectl crictl ctr; do if [ -L /usr/local/bin/$cmd ]; then rm -f /usr/local/bin/$cmd fi done rm -rf /etc/rancher/k3s rm -rf /run/k3s rm -rf /run/flannel rm -rf /var/lib/rancher/k3s rm -rf /var/lib/kubelet rm -f /usr/local/bin/k3s rm -f /usr/local/bin/k3s-killall.sh if type yum >/dev/null 2>&1; then yum remove -y k3s-selinux rm -f /etc/yum.repos.d/rancher-k3s-common*.repo fi `)))
K3sKillallScriptTempl defines the template of k3s-killall script.
Functions ¶
func GenerateK3sEnv ¶
func GenerateK3sEnv(mgr *manager.Manager, node *kubekeyapiv1alpha1.HostCfg, token string) (string, error)
GenerateK3sEnv is used to generate the env content of kubelet's service for systemd.
func GenerateK3sKillallScript ¶
GenerateK3sService is used to generate k3s-killall script.
func GenerateK3sService ¶
func GenerateK3sService(mgr *manager.Manager, node *kubekeyapiv1alpha1.HostCfg, token string) (string, error)
GenerateK3sService is used to generate kubelet's service content for systemd.
func GenerateK3sUninstallScript ¶
GenerateK3sUninstallScript is used to generate k3s-uninstall script.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.