truenas scale 25.04 安装k3s

背景

从之前的truenas 22一路过来,之前的很多东西都是用的K8s的方式部署的,之后truenas 迁移到docker以后,也单独弄了个虚拟机来跑之前k3s懒得迁移的业务。 折腾过truenas新出的Incus的容器和虚拟机,最后还是选择了docker的方式直接跑k3s。因为incus的那个容器手动配了特权后,web页面会崩。

通过docker来跑k3s

  1. 创建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" 

  1. 在truenas的web页面通过yaml安装
  2. 拿到kubeconfig文件
#!/bin/zsh
mkdir -p ~/.kube
docker cp k3s-server:/etc/rancher/k3s/k3s.yaml ~/.kube/config
export KUBECONFIG=~/.kube/config
  1. 安装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}'
打赏
Bookmark the permalink.
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论