Change Scheduler for k3s

k3s 调度问题 k8s 默认调度器不会更具节点的实际负载进行调度,只会根据request中申请的资源来。所以会导致多数的部署都是往一台比较强劲的节点上,或者新加入的节点不会有任何的pod分配过来。 metrics-server 使用 k8s 默认的metrics-server 来获取节点资源使用情况 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml load-watcher 为 trimaran 打分时提供当前node的资源使用情况数据。 上游项目地址: https://github.com/paypal/load-watcher 镜像: https://github.com/tsic404/docker-images/pkgs/container/load-watcher 为了 load-watcher 方便读取集群各个节点的资源使用信息,将kubeconfig作为configmap传递到容器中,并指定 KUBE_CONFIG 环境变量。 --- # kube-config configmap apiVersion: v1 kind: ConfigMap metadata: name: kube-config labels: app: load-watcher namespace: loadwatcher immutable: true data: kube-config: | xxxxx --- apiVersion: apps/v1 kind: Deployment metadata: name: load-watcher-deployment namespace: loadwatcher labels: app: load-watcher spec: replicas: 1 selector: matchLabels: app: load-watcher template: metadata: labels: app: load-watcher spec: containers: - name: load-watcher image: ghcr....

October 8, 2023 · 2 min · tsic404

k3s with multus cni

k3s with multus cni 最近在家部署了一个k3s,用于管理一些家用服务比如jellyfin,homeassistant等,在使用homeassistant时,遇到一些网络问题,在了解k8s一点网络架构后,需要在k8s中安装multus cni,为pod创建额外网口来解决我的问题。 一、安装multus 拉取官方git仓库git clone https://github.com/k8snetworkplumbingwg/multus-cni.git 然后打开code multus-cni 修改deployments/multus-daemonset.yml 需要修改有三处 cniVersion k3s 默认采用的 flannel 的 cniVersion 已经升级到 1.0.0 版本,为了 multus 可以正确生成 flannel 相关配置,需要把cniVersion提高到 1.0.0 kubeconfig multus 默认读取 kubeconfig 的路径为 /etc/cni/net.d/multus.d/multus.kubeconfig,但是 k3s 将相关配置保存在 /var/lib/rancher/k3s/agent/etc/ 中,导致 cni 相关的配置(下面volume)会改动到此,所以需要修改 kubeconfig 路径到 /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig volume 为了配置 k3s 资源的默认保存路径 将 /etc/cni/net.d 修改为 /var/lib/rancher/k3s/agent/etc/cni/net.d 将 /opt/multus/bin 修改为 /var/lib/rancher/k3s/data/current/bin 生成的diff文件 diff --git a/deployments/multus-daemonset.yml b/deployments/multus-daemonset.yml index ab626a66..28eb48af 100644 --- a/deployments/multus-daemonset.yml +++ b/deployments/multus-daemonset.yml @@ -125,7 +125,7 @@ data: }, "delegates": [ { - "cniVersion": "0....

July 24, 2023 · 2 min · tsic404

Rpi4 Diskless

树莓派使用网络启动 pi 通过 tftp 和 dhcp 拉取 boot 分区的内容。然后把拉取的 boot 分区中的 initramfs 加载到内存,通过 内核启动参数(nfsroot,iscsi)和iniramfs 完成网络启动过程。 其他比如 rock5b 不支持 tftp, 但是可以用后面 initramfs 和内核参数。所以理论上可以做到本地 sd 卡只存放 boot 分区,然后通过网络启动 rootfs。 一、 tftp-hpa 安装 tftp-hpa sudo apt install tftp-hpa 修改配置文件 sudo vim /etc/default/tftpd-hpa 修改一下配置 # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/data/pxe/" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure" 重启 tftp-hpa 服务 sudo systemctl restart tftp-hpa 在 TFTP_DIRECTORY 放置对应的网络启动文件。 将 pi img 中 boot 分区相关的文件放到对应的目录下,下文修改 boot 相关内容时,需要同步 tftp server中。 root@rock5b:~# ls /data/pxe/ rapi4-1_boot rapi4-2_boot rapi4-3_boot rpi4-1-root....

July 24, 2023 · 2 min · tsic404