利用 k3s 上传镜像
在家里构建的镜像想要上传到公司的局域网,通过 vpn 登录到在公司搭建的 k3s 集群:
# 导出压缩文档
docker save domain/image:tag > /path/to/archive-image.tar
# 家中机
kubectl cp /path/to/archive-image.tar pod-name:/path/for/temp/save/archive-image.tar -n namespace
# 宿主机
kubectl cp pod-name:/path/for/temp/save/archive-image.tar /path/to/host/archive-image.tar -n namespace
# 利用 ctr 解压包并上传
k3s ctr images import /path/to/host/archive-image.tar
k3s ctr images push domain/image:tag -u username:password
k8s 强制删除 pod
kubectl delete pod NAME --grace-period=0 --force
k8s 节点资源配置
参考:
--kube-reserved=cpu=200m,memory=250Mi \ # k8s组件预留资源的大小
--system-reserved=cpu=200m,memory=250Mi \ # 系统守护进程预留资源的大小
# 驱逐pod的硬阈值
--eviction-hard=memory.available<5%,nodefs.available<10%,imagefs.available<10% \
# 驱逐pod的软阈值
--eviction-soft=memory.available<10%,nodefs.available<15%,imagefs.available<15% \
# 触发驱逐需要的持续时间
--eviction-soft-grace-period=memory.available=2m,nodefs.available=2m,imagefs.available=2m \
--eviction-max-pod-grace-period=120 \ # 驱逐pod前最大等待时间
--eviction-pressure-transition-period=30s \ # kubelete 上报间隔
# 至少回收的资源量
--eviction-minimum-reclaim=memory.available=0Mi,nodefs.available=500Mi,imagefs.available=500Mi
去除 StorageClass standard 默认标志
kubectl patch storageclass standard -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
一键部署 k3s ,使用 wireguard 和禁用 traefik
创建节点
## 国内
curl http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--flannel-backend=wireguard --no-deploy traefik" sh -
## 国外
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--flannel-backend=wireguard --no-deploy traefik" sh -
## 部署后获取 token
sudo cat /var/lib/rancher/k3s/server/node-token
## 如果需要开通公网访问则在 INSTALL_K3S_EXEC 参数中加入 "--tls-san=公网 ip"
加入节点
## 国内
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | K3S_URL="主节点 ip:端口" K3S_TOKEN="获取的 token" sh -
## 国外
curl -sfL https://get.k3s.io | K3S_URL="主节点 ip:端口" K3S_TOKEN="获取的 token" sh -
卸载
## 卸载主节点
/usr/local/bin/k3s-uninstall.sh
## 卸载从节点
/usr/local/bin/k3s-agent-uninstall.sh
6 Linked Reference(s)
笔记
Explore
[[Posts ]]
[[K8s ]]
[[Linux ]]
[[Go ]]
[[Rust ]]
[[Operating System ]]
[[
Touch
日志 2022-07-30
安装 Cilium Ingress Controller [[K8s 系列 ]]
安装 k3s 时需要禁用
network policy
以及 traefik
: curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC='--flannel-backend=none --disable-network-policy --no-deploy traefki' sh -
此时会发现由于没有
flannel-backend 所以集群并不会执行安装,一直 pending使用 helm 安装 Cilium
首先下载 1.12.0 版本的源码到本地:
wget https://github.com/cilium/cilium/archive/refs/tags/v1.12.0.tar.gz
然后解压,并进入
cilium-1.12.0/install/kubernetes
接着执行安装
sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml helm install cilium ./cilium --namespace kube-system --set operator.replicas=1 --set ingressController.enabled=true
观察到 cilium 开始安装,完毕之后集群也开始正常安装基础部件
安装 cilium 客户端,执行
sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml cilium status
观察安装结果Chromium 开启 HiDPI 和用户登录 [[M1 Sway 全纪实 ]]
谷歌禁用了 Chromium 的登录,需要在 GCP 配置 API 以及测试用户才能开启,参考
为 Chromium 恢复登录功能
默认情况下 Chromium 不开启 HiDPI 。在 M1 高分辨率下显得很模糊
执行
wofi --show drun
时会搜索 ~/.local/share/applications
下的
*.desktop
作为运行快捷方式,所以我们可以利用这一点。复制
/usr/share/applications/chromium.desktop
到 ~/.local/share/applications
然后编辑内容,将所有的 Exec
更改为 Exec=env GOOGLE_API_KEY=申请到的APIKEY GOOGLE_DEFAULT_CLIENT_ID=申请到的 CLIENTID GOOGLE_DEFAULT_CLIENT_SECRET=申请到的CLIENTSECRET /usr/bin/chromium --enable-features=UserOzonePlatform --ozone-platform=wayland
注意原本的参数不要丢弃,补充到这一串命令后面。
前面的环境变量用于开启用户登录功能,后面的启动参数用于开启 HiDPI 。Firefox 开启 HiDPI
复制
/usr/share/applications/firefox.desktop
到 ~/.local/share/applications
然后编辑内容,将所有 Exec
追加
Exec=env GDK_BACKEND=wayland CLUTTER_BACKEND=wayland SDL_VIDEODRIVER=wayland firefox
注意原本的参数不要丢弃,补充到这一串命令
后面。K8s 入门-使用 APISIX 作为 Ingress
[[
系列文章
[[K8s 入门-使用 kubeadm 安装 ]]
太长不看版:
本文在集群外部架设了
nfs server
作为远程存储 ,然后在集群内部署了subdir provisioner
并在此基础上创建nfs storage class
实现持久卷的自动创建。接着使用Helm
部署 APISIX 和 Ingress Controller 以及 Dashboard 组件,最后创建一条路由规则实现从集群外部访问 Dashboard 对网关进行管理。
使用NFS共享文件夹
[[
这是一篇衍生自笔者的k8s学习过程的前置知识文章。
前言
在谈论到k8s的持久卷(Persistent Volume)时,其实质表达的意思是,将集群系统节点中的某个路径挂载到pod中。
例如,使用基于docker驱动的minkube时,持久卷是将minikube容器中的某个路径挂载到容器中的docker创建的pod中——它的存储不受pod生命周期的影响,因而得名。然而当你删除minikube集群时,持久卷中的东西照样会消失,毕竟这是在minikube容器中的卷。
K8s 入门-使用 kubeadm 安装
[[
系列文章
[[K8S入门-使用 APISIX 作为 Ingress ]]
环境准备
安装虚拟机软件
安装 Virtualbox