首页
  • NAS
  • k8s
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

︶﹌⋛⋋维💋美⋌⋚﹌︶

喝☕️、看世界、修复那些无止境的问题
首页
  • NAS
  • k8s
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • NAS

  • K8S

    • kubelet 启动失败
    • artalk部署配置
      • k8s常用命令
      • k8s显卡插件
      • Longhorn安装
    • 运维
    • K8S
    ︶﹌⋛⋋维💋美⋌⋚﹌︶
    2024-12-15
    目录

    artalk部署配置

    # artalk部署

    # 数据库初始化

    CREATE TABLE `atk_sites` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`name` varchar(255),`urls` longtext,PRIMARY KEY (`id`),INDEX `idx_atk_sites_deleted_at` (`deleted_at`),UNIQUE INDEX `idx_atk_sites_name` (`name`));
    CREATE TABLE `atk_pages` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`key` varchar(255),`title` longtext,`admin_only` boolean,`site_name` varchar(255),`vote_up` bigint,`vote_down` bigint,`pv` bigint,PRIMARY KEY (`id`),INDEX `idx_atk_pages_site_name` (`site_name`),INDEX `idx_atk_pages_deleted_at` (`deleted_at`),INDEX `idx_atk_pages_key` (`key`));
    CREATE TABLE `atk_users` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`name` varchar(255),`email` varchar(255),`link` longtext,`password` longtext,`badge_name` longtext,`badge_color` longtext,`last_ip` longtext,`last_ua` longtext,`is_admin` boolean,`receive_email` boolean DEFAULT true,`token_valid_from` datetime(3) NULL,`is_in_conf` boolean,PRIMARY KEY (`id`),INDEX `idx_atk_users_deleted_at` (`deleted_at`),INDEX `idx_atk_users_name` (`name`),INDEX `idx_atk_users_email` (`email`));
    CREATE TABLE `atk_auth_identities` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`provider` longtext,`remote_uid` varchar(255),`user_id` bigint unsigned,`token` longtext,`confirmed_at` datetime(3) NULL,`expires_at` datetime(3) NULL,PRIMARY KEY (`id`),INDEX `idx_atk_auth_identities_user_id` (`user_id`),INDEX `idx_atk_auth_identities_deleted_at` (`deleted_at`),INDEX `idx_atk_auth_identities_remote_uid` (`remote_uid`));
    CREATE TABLE `atk_user_email_verifies` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`email` varchar(255),`code` longtext,`expires_at` datetime(3) NULL,`ip` longtext,`ua` longtext,PRIMARY KEY (`id`),INDEX `idx_atk_user_email_verifies_deleted_at` (`deleted_at`),INDEX `idx_atk_user_email_verifies_email` (`email`));
    CREATE TABLE `atk_comments` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`content` longtext,`page_key` varchar(255),`site_name` varchar(255),`user_id` bigint unsigned,`is_verified` boolean DEFAULT false,`ua` longtext,`ip` longtext,`rid` bigint unsigned,`is_collapsed` boolean DEFAULT false,`is_pending` boolean DEFAULT false,`is_pinned` boolean DEFAULT false,`vote_up` bigint,`vote_down` bigint,`root_id` bigint unsigned,PRIMARY KEY (`id`),INDEX `idx_atk_comments_user_id` (`user_id`),INDEX `idx_atk_comments_rid` (`rid`),INDEX `idx_atk_comments_root_id` (`root_id`),INDEX `idx_atk_comments_deleted_at` (`deleted_at`),INDEX `idx_atk_comments_page_key` (`page_key`),INDEX `idx_atk_comments_site_name` (`site_name`));
    CREATE TABLE `atk_notifies` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`user_id` bigint unsigned,`comment_id` bigint unsigned,`is_read` boolean,`read_at` datetime(3) NULL,`is_emailed` boolean,`email_at` datetime(3) NULL,`key` varchar(255),PRIMARY KEY (`id`),INDEX `idx_atk_notifies_key` (`key`),INDEX `idx_atk_notifies_deleted_at` (`deleted_at`),INDEX `idx_atk_notifies_user_id` (`user_id`),INDEX `idx_atk_notifies_comment_id` (`comment_id`));
    CREATE TABLE `atk_votes` (`id` bigint unsigned AUTO_INCREMENT,`created_at` datetime(3) NULL,`updated_at` datetime(3) NULL,`deleted_at` datetime(3) NULL,`target_id` bigint unsigned,`type` varchar(191),`user_id` bigint unsigned,`ua` longtext,`ip` longtext,PRIMARY KEY (`id`),INDEX `idx_atk_votes_user_id` (`user_id`),INDEX `idx_atk_votes_deleted_at` (`deleted_at`),INDEX `idx_atk_votes_target_id` (`target_id`),INDEX `idx_atk_votes_type` (`type`));
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 环境变量配置

    这里使用 Secret
    参考官方说明:环境变量 (opens new window)

    ---
    apiVersion: v1
    data:
      ATK_CACHE_ENABLED: dHJ1ZQ==
      ATK_CACHE_REDIS_DB: MTE=
      ATK_CACHE_REDIS_NETWORK: dGNw
      ATK_CACHE_REDIS_PASSWORD: RmFXeEZEU05DRzZxS1dE
      ATK_CACHE_REDIS_USERNAME: ''
      ATK_CACHE_SERVER: MTkyLjE2OC4yNTMuMTg6MjAwMDA=
      ATK_CACHE_TYPE: cmVkaXM=
      ATK_CACHE_WARM_UP: dHJ1ZQ==
      ATK_DB_HOST: MTkyLjE2OC4yNTMuMTg2
      ATK_DB_NAME: YXJ0YWxr
      ATK_DB_PASSWORD: MWMzZjA2REQ1ZjUyJl44OA==
      ATK_DB_PORT: MzMwNg==
      ATK_DB_TABLE_PREFIX: YXRrXw==
      ATK_DB_TYPE: bXlzcWw=
      ATK_DB_USER: YXJ0YWxr
      ATK_DEBUG: dHJ1ZQ==
      ATK_LOCALE: emgtQ04=
      ATK_SITE_DEFAULT: 5a2X6IqC5bm954G1
      ATK_SITE_URL: d3d3LmlqYXZhd2ViLmNvbQ==
      ATK_TRUSTED_DOMAINS: d3d3LmlqYXZhd2ViLmNvbQ==
      TZ: QXNpYS9TaGFuZ2hhaQ==
    immutable: false
    kind: Secret
    metadata:
      name: artalk
      namespace: default
      resourceVersion: '41478617'
    type: Opaque
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31

    # 持久化配置(pv、pvc)

    这里使用nfs pv.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: nfs.csi.k8s.io
      name: pv-nfs-artalk-data
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: nfs-csi-appdata
      mountOptions:
        - nfsvers=4.1
      csi:
        driver: nfs.csi.k8s.io
        # volumeHandle format: {nfs-server-address}#{sub-dir-name}#{share-name}
        # make sure this value is unique for every share in the cluster
        volumeHandle: pv-nfs-artalk-data
        volumeAttributes:
          server: 192.168.3.34
          share: /data/nfs/artalk
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    pvc.yaml

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nfs-artalk-data
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      volumeName: pv-nfs-artalk-data
      storageClassName: nfs-csi-appdata
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # Deployment配置

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: artalk
      name: artalk
    spec:
      replicas: 1
      strategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 1
        type: RollingUpdate
      selector:
        matchLabels:
          app: artalk
      template:
        metadata:
          labels:
            app: artalk
        spec:
          nodeSelector:
            environment: prod
          securityContext:
            runAsUser: 0
            runAsGroup: 0
          volumes:
            - name: artalk-data
              persistentVolumeClaim:
                claimName: pvc-nfs-artalk-data
          containers:
            - name: artalk
              image: artalk/artalk-go
              imagePullPolicy: Always
              ports:
                - containerPort: 23366
              envFrom:
                - secretRef:
                    name: artalk
              tty: true
              volumeMounts:
                - mountPath: /data
                  name: artalk-data
          restartPolicy: Always
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44

    # service配置

    apiVersion: v1
    kind: Service
    metadata:
      name: artalk
    spec:
      ports:
        - port: 23366
          targetPort: 23366
          name: tcp-23366
          protocol: TCP
      selector:
        app: artalk
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # 路由配置

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: artalk
        #annotations:
        # Use appropriate annotations for your Ingress controller, e.g., for NGINX:
      # nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      tls:
        - hosts:
            - "*.ijavaweb.com"
          secretName: ijavaweb-tls
      rules:
      - host: artalk.ijavaweb.com
        http:
          paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: artalk
                  port:
                    number: 23366
      ingressClassName: nginx
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

    # 博客配置

    在自己的 vdoing 工程项目中,插件配置文件中 docs/.vuepress/config.ts plugins 添加如下配置:

    [
        "vuepress-plugin-vdoing-comment", //评论
        {
            choosen: "artalk",
            options: {
                server: "https://artalk.ijavaweb.com/", // (必填)
                site: "字节幽灵", // (必填)
                // disableEmotion: false, // 是否禁用表情(可选)
                // disablePicture: true, // 是否禁用图片(可选)
                // disablePreview: false // 是否禁用预览(可选)
            },
        },
    ]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    自定义 css 文件 docs/.vuepress/styles/palette.styl 最后添加如下内容进行优化:

    // artalk 评论框 适配暗黑模式
    .theme-mode-dark #vuepress-plugin-vdoing-comment {
      --at-color-bg: --bodyBg;
      color: #ffffff;
      --at-color-font: #ffffff;
      --at-color-bg-transl: --bodyBg;
      --at-color-bg-grey: #373a40;
    }
    .theme-mode-dark
      #vuepress-plugin-vdoing-comment
      .atk-editor-plug-emoticons
      > .atk-grp-switcher
      > span:hover,
    .atk-editor-plug-emoticons > .atk-grp-switcher > span.active {
      background: var(--at-color-bg-grey);
    }
    .theme-mode-dark
      #vuepress-plugin-vdoing-comment
      .atk-editor-plug-emoticons
      > .atk-grp-switcher {
      background: var(--at-color-bg-grey);
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #K8S
    kubelet 启动失败
    k8s常用命令

    ← kubelet 启动失败 k8s常用命令→

    最近更新
    01
    Longhorn安装
    06-22
    02
    k8s显卡插件
    06-21
    03
    rockyLinux初始化
    03-30
    更多文章>
    Theme by Vdoing | Copyright © 2024-2025 维美 | Blog
    闽ICP备2023022769号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式