背景
从之前的truenas 22一路过来,之前的很多东西都是用的K8s的方式部署的,之后truenas 迁移到docker以后,也单独弄了个虚拟机来跑之前k3s懒得迁移的业务。
折腾过truenas新出的Incus的容器和虚拟机,最后还是选择了docker的方式直接跑k3s。因为incus的那个容器手动配了特权后,web页面会崩。
通过docker来跑k3s
- 创建docker-compose.yaml文件,有其他需要的化自己加ports端口。
version: '3'
services:
k3s-server:
image: rancher/k3s:v1.26.5-k3s1
container_name: k3s-server
privileged: true
restart: always
ports:
- "6443:6443" # K3s API Server
#- "80:80" # HTTP (Ingress) 不再需要,用truenas app的那个nginx就行了,有需要自己改端口解放出来
#- "443:443" # HTTPS (Ingress) 不再需要,用truenas app的那个nginx就行了
volumes:
- /mnt/p4510/k3d-library:/var/lib/rancher/k3s # 持久化数据,自己 修改成你的存储位置
- /mnt/p4510/etc/k3s:/etc/rancher/k3s # 配置文件,自己 修改成你的存储位置
- /mnt/storage:/mnt/storage
command: >
server
--disable servicelb # 禁用掉k3s自带的loadbalance
--disable traefik # 禁用掉k3s自带的traefik(一种非nginx的Ingress)
--node-name k3s-server
--service-cidr 10.43.0.0/16,fd00:10:43::/112
--cluster-cidr 10.42.0.0/16,fd00:10:42::/56
--kubelet-arg max-pods=900
--disable metrics-server
--flannel-ipv6-masq # 开启了ipv6流量代理,使pod内部环境可以直接访问公网的ipv6地址
environment:
K3S_KUBECONFIG_MODE: "644"
- 在truenas的web页面通过yaml安装

- 拿到kubeconfig文件
#!/bin/zsh
mkdir -p ~/.kube
docker cp k3s-server:/etc/rancher/k3s/k3s.yaml ~/.kube/config
export KUBECONFIG=~/.kube/config
- 安装kubectl,方便使用kubectl管理k3s
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
其他的一些东西
- 接下来的使用就和直接安装的k3s没啥区别了。当然,nodeport的端口需要用docker的potrs来映射,volume需要docker的-v来映射
- k3s的web管理面板例如
kuboard
这些,可以直接起一个独立的docker来跑,不要再装到k3s里面了。
- helm的使用也没区别。只要docker的potrs映射了6443到宿主机,用起来就和以前一样丝滑。例如安装
cert-manager
:
#!/bin/bash
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm upgrade --install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.17.1 --set installCRDs=true --set prometheus.enabled=false \
--set 'extraArgs={--acme-http01-solver-nameservers=119.29.29.29:53\,223.5.5.5:53,--dns01-recursive-nameservers-only,--dns01-recursive-nameservers=119.29.29.29:53\,223.5.5.5:53,--enable-certificate-owner-ref=true}'
打赏

微信扫一扫,打赏作者吧~