56.项目yml

发表于 未分类 分类,标签:
==============================================================================
vim /etc/systemd/system/alist.service
[Unit]
Description=alist
After=network.target

[Service]
Type=simple
WorkingDirectory=/lei/soft/alist
ExecStart=/lei/soft/alist/alist server
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start alist
systemctl enable alist

==============================================================================
# k3s配置alist
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alist
  labels:
    app: alist
spec:
  replicas: 1
  selector:
    matchLabels:
      app: alist
  template:
    metadata:
      labels:
        app: alist
    spec:
      nodeSelector:
        kubernetes.io/hostname: opsdev

      containers:
      - name: alist
        # 使用轻量的 ubuntu 或 alpine 基础镜像,直接运行宿主机挂载过来的二进制文件
        image: registry.cn-hangzhou.aliyuncs.com/leiuvn/ubuntu:2404
        imagePullPolicy: IfNotPresent
        workingDir: /opt/alist
        # Alist 默认监听 5244 端口
        command: ["/bin/sh", "-c", "apt-get update && apt-get install -y ca-certificates && update-ca-certificates && /opt/alist/alist server --no-prefix --data /opt/alist/data"]
        ports:
        - containerPort: 5244
          name: http

        # 资源限制
        resources:
          limits:
            cpu: "3000m"
            memory: "3Gi"
          requests:
            cpu: "10m"
            memory: "50Mi"

        # 挂载宿主机的 alist 目录
        volumeMounts:
        - mountPath: /opt/alist
          name: alist-volume

      volumes:
      - name: alist-volume
        hostPath:
          path: /lei/soft/alist
          type: Directory

---
apiVersion: v1
kind: Service
metadata:
  name: alist-service
spec:
  type: ClusterIP
  selector:
    app: alist
  ports:
  - port: 5244           # 集群内部端口
    targetPort: 5244     # 容器内部 Alist 监听端口

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alist-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
    # 可选:如果希望强制将 HTTP 请求重定向到 HTTPS
    traefik.ingress.kubernetes.io/redirect-entry-point: https
spec:
  ingressClassName: traefik
  tls:
  - hosts:
    - s.lbu.cn
    secretName: s-lbu-cn-tls   # 对应刚才创建的 Secret 名称
  rules:
  - host: s.lbu.cn
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: alist-service
            port:
              number: 5244
              
# 创建ssl证书给yaml文件用             
kubectl create secret tls s-lbu-cn-tls \
  --cert=/lei/yaml/alist/ssl/s.lbu.cn.crt \
  --key=/lei/yaml/alist/ssl/s.lbu.cn.key \
  --dry-run=client -o yaml | kubectl apply -f -

==============================================================================
vim filebrowser.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: filebrowser
  namespace: default
  labels:
    app: filebrowser
spec:
  replicas: 1
  selector:
    matchLabels:
      app: filebrowser
  template:
    metadata:
      labels:
        app: filebrowser
    spec:
      # 固定在 sl-19 节点运行(与你的存储目录所在节点保持一致)
      nodeSelector:
        kubernetes.io/hostname: sl-19

      # 以 root 用户运行容器,避免挂载宿主机目录出现 Permission Denied 权限问题
      securityContext:
        runAsUser: 0
        runAsGroup: 0

      containers:
        - name: filebrowser
          image: registry.cn-hangzhou.aliyuncs.com/leiuvn/filebrowser:2.63
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
              name: http

          # 资源限制
          resources:
            limits:
              cpu: "1000m"
              memory: "1Gi"
            requests:
              cpu: "50m"
              memory: "128Mi"

          # 挂载数据存储目录与配置数据库
          volumeMounts:
            - mountPath: /srv
              name: home1-volume
            - mountPath: /database
              name: db-volume

      volumes:
        - name: home1-volume
          hostPath:
            path: /lei/data/Home1
            type: DirectoryOrCreate
        - name: db-volume
          hostPath:
            path: /lei/data/filebrowser
            type: DirectoryOrCreate

---
apiVersion: v1
kind: Service
metadata:
  name: filebrowser-service
  namespace: default
spec:
  type: NodePort
  selector:
    app: filebrowser
  ports:
    - port: 8880          # 集群内访问端口 (避免使用 80)
      targetPort: 80      # 容器内部端口
      nodePort: 30880     # NodePort 节点暴露端口
      name: http

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: filebrowser-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
spec:
  ingressClassName: traefik
  rules:
    - host: f.lbu.cn
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: filebrowser-service
                port:
                  number: 8880   # 对接 Service 的集群访问端口 (8080)

==============================================================================
vim es9pro.yml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: es9pro-pv
spec:
  capacity:
    storage: 800Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: es9pro
  local:
    path: /lei/data/es9pro
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - sl-19

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: es9pro-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: es9pro
  resources:
    requests:
      storage: 800Gi

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: es9pro
  namespace: default
  labels:
    app: es9pro
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: es9pro
  template:
    metadata:
      labels:
        app: es9pro
    spec:
      nodeSelector:
        kubernetes.io/hostname: sl-19

      containers:
        - name: es9pro
          image: registry.cn-hangzhou.aliyuncs.com/leiuvn/es:9.5.5
          imagePullPolicy: IfNotPresent
          env:
            # 通过环境变量直接配置 Elasticsearch,无需改动配置文件
            - name: cluster.name
              value: "es9pro-cluster"
            - name: node.name
              value: "es9pro-node-1"
            - name: network.host
              value: "0.0.0.0"
            - name: discovery.type
              value: "single-node"
            - name: xpack.security.enabled
              value: "false"
          ports:
            - containerPort: 9200
              name: http
            - containerPort: 9300
              name: transport
          resources:
            limits:
              cpu: "4"
              memory: 8Gi
            requests:
              cpu: "500m"
              memory: 1Gi
          volumeMounts:
            - name: es9pro-data
              mountPath: /usr/share/elasticsearch/data
      volumes:
        - name: es9pro-data
          persistentVolumeClaim:
            claimName: es9pro-pvc

---

apiVersion: v1
kind: Service
metadata:
  name: es9pro-service
  namespace: default
  labels:
    app: es9pro
spec:
  type: NodePort
  selector:
    app: es9pro
  ports:
    - name: http
      port: 9200
      targetPort: 9200
      nodePort: 30920
    - name: transport
      port: 9300
      targetPort: 9300
      nodePort: 30930

==============================================================================


0 篇评论

发表我的评论