当前位置: 正能量 » 代码编程 » K8s » K8S部署adguardhome

K8S部署adguardhome

因家里部署了K3S,借助K8S的安全,在K8S部署adguardhome过滤广告。由于我家里的K3S只有单机,故部署脚本如下:

在单机 Kubernetes 环境中,可以将 AdGuard 配置调整为使用本地存储,以便数据可以在容器重启或主机重启后仍然保留。以下是改进的 YAML 配置,添加了对本地存储的支持。

adguard-deployment-local.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: adguard
  namespace: mmgg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: adguard
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: adguard
    spec:
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      containers:
      - name: adguard
        image: adguard/adguardhome:latest
        ports:
        - name: web
          containerPort: 3000
        - name: web2
          containerPort: 3100
        - name: dns
          containerPort: 53
          protocol: UDP
        - name: dns-tcp
          containerPort: 53
          protocol: TCP
        volumeMounts:
        - name: adguard-config
          mountPath: /opt/adguardhome/work
        - name: adguard-data
          mountPath: /opt/adguardhome/conf
        resources:
          requests:
            memory: "256Mi"
            cpu: "100m"
          limits:
            memory: "512Mi"
            cpu: "500m"
      volumes:
      - name: adguard-config
        hostPath:
          path: /root/adguard/work
          type: DirectoryOrCreate
      - name: adguard-data
        hostPath:
          path: /root/adguard/conf
          type: DirectoryOrCreate

主要特点

  1. 使用 hostPath 实现本地存储:
    • 配置文件和数据存储路径分别为 /root/adguard/work/root/adguard/conf
    • Kubernetes 将这两个路径映射到容器中的 /opt/adguardhome/work/opt/adguardhome/conf
    • type: DirectoryOrCreate:如果目录不存在,会自动创建。
  2. 资源限制:
    • 为 AdGuard 设置了合理的 CPU 和内存请求与限制,以确保单机环境稳定。
  3. 添加 hostNetwork: true。
    • Pod 会共享宿主机的 IP 地址,并使用宿主机的网络接口。
  4. 设置 dnsPolicy: ClusterFirstWithHostNet,以确保 Pod 能解析集群内的 DNS。

部署与测试

  1. 应用配置:

    kubectl apply -f adguard-deployment-local.yaml
  2. 检查本地存储内容:

  • 配置和数据将保存在 /root/adguard/work/root/adguard/conf 中。
  • 可以直接检查这些目录来确认文件是否正确存储。

注意事项

  1. 权限问题: 确保 Kubernetes 节点的 /root/adguard 目录有合适的权限,容器内用户可以读写。
  2. 由于是共享宿主主机的IP来暴露服务,故重启策略需要改成删除重建 Recreate ,而不是滚动更新
未经允许不得转载:正能量 » K8S部署adguardhome

相关文章

评论 (0)

5 + 2 =