最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索

 更新時間:2022年06月25日 14:58:56   作者:scwang18  
這篇文章主要為大家介紹了KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

背景

wiki.js 是優(yōu)秀的開源 Wiki 系統(tǒng),相較于 xwiki ,功能目前性上比 xwiki 不夠完善,但也在不斷進步。 Wiki 寫作、分享、權(quán)限管理功能還是有的,勝在 UI 設(shè)計很漂亮,能滿足小團隊的基本知識管理需求。

以下工作是在 KubeSphere 3.2.1 + Helm 3 已經(jīng)部署好的情況下進行的。

部署 KuberSphere 的方法官網(wǎng)有很詳細的文檔介紹,這里不再贅敘。 kubesphere.com.cn/docs/instal…

準備 storageclass

我們使用 OpenEBS 作為存儲,OpenEBS 默認安裝的 Local StorageSlass 在 Pod 銷毀后自動刪除,不適合用于我的 MySQL 存儲,我們在 Local StorageClass 基礎(chǔ)上稍作修改,創(chuàng)建新的 StorageClass,允許 Pod 銷毀后,PV 內(nèi)容繼續(xù)保留,手動決定怎么處理。

apiVersion: v1
items:
- apiVersion: storage.k8s.io/v1
  kind: StorageClass
  metadata:
    annotations:
      cas.openebs.io/config: |
        - name: StorageType
          value: "hostpath"
        - name: BasePath
          value: "/var/openebs/localretain/"
      openebs.io/cas-type: local
      storageclass.beta.kubernetes.io/is-default-class: "false"
      storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce"]'
    name: localretain
  provisioner: openebs.io/local
  reclaimPolicy: Retain
  volumeBindingMode: WaitForFirstConsumer
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

部署 PostgreSQL 數(shù)據(jù)庫

我們團隊其他項目中也需要使用 PostgreSQL, 為了提高 PostgreSQL 數(shù)據(jù)庫的利用率和統(tǒng)一管理,我們獨立部署 PostgreSQL,并在安裝 wiki.js 時,配置為使用外部數(shù)據(jù)庫。

準備用戶名密碼配置

我們使用 Secret 保存 PostgreSQL 用戶密碼等敏感信息。

kind: Secret
apiVersion: v1
metadata:
  name: postgres-prod
data:
  POSTGRES_PASSWORD: xxxx
type: Opaque

以上 POSTGRES_PASSWORD 自行準備,為 base64 編碼的數(shù)據(jù)。

準備數(shù)據(jù)庫初始化腳本

使用 ConfigMap 保存數(shù)據(jù)庫初始化腳本,在 數(shù)據(jù)庫創(chuàng)建時,將 ConfigMap 中的數(shù)據(jù)庫初始化腳本掛載到 /docker-entrypoint-initdb.d, 容器初始化時會自動執(zhí)行該腳本。

apiVersion: v1
kind: ConfigMap
metadata:
  name: wikijs-postgres-init
data:
  init.sql: |-
    CREATE DATABASE wikijs;
    CREATE USER wikijs with password 'xxxx';
    GRANT CONNECT ON DATABASE wikijs to wikijs;
    GRANT USAGE ON SCHEMA public TO wikijs;
    GRANT SELECT,update,INSERT,delete ON ALL TABLES IN SCHEMA public TO wikijs;
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO wikijs;

以上 wikijs 用戶的密碼自行準備,明文保存。

準備存儲

我們使用 KubeSphere 默認安裝的 OpenEBS 來提供存儲服務(wù)??梢酝ㄟ^創(chuàng)建 PVC 來提供持久化存儲。

這里聲明一個 10G 的 PVC。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: postgres-prod-data
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: localretain
  volumeMode: Filesystem

部署 PostgreSQL 數(shù)據(jù)庫

在前面的步驟準備好各種配置信息和存儲后,就可以開始部署 PostgreSQL 服務(wù)了。

我們的 Kubernetes 沒有配置存儲陣列,使用的是 OpenEBS 作為存儲,采用 Deployment 方式部署 PostgreSQL。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: postgres-prod
  name: postgres-prod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-prod
  template:
    metadata:
      labels:
        app: postgres-prod
    spec:
      containers:
        - name: db
          imagePullPolicy: IfNotPresent
          image: 'abcfy2/zhparser:12-alpine'
          ports:
            - name: tcp-5432
              protocol: TCP
              containerPort: 5432
          envFrom:
          - secretRef:
              name: postgres-prod
          volumeMounts:
            - name: postgres-prod-data
              readOnly: false
              mountPath: /var/lib/postgresql/data
            - name: wikijs-postgres-init
              readOnly: true
              mountPath: /docker-entrypoint-initdb.d
      volumes:
        - name: postgres-prod-data
          persistentVolumeClaim:
            claimName: postgres-prod-data
        - name: wikijs-postgres-init
          configMap:
            name: wikijs-postgres-init

創(chuàng)建供其他 Pod 訪問的 Service

apiVersion: v1
kind: Service
metadata:
  name: postgres-prod
spec:
  selector:
    app: postgres-prod
  ports:
    - protocol: TCP
      port: 5432
      targetPort: tcp-5432

完成 PostgreSQL 部署

測試略

部署 wiki.js

準備用戶名密碼配置

我們使用 Secret 保存 wiki.js 用于連接數(shù)據(jù)庫的用戶名密碼等敏感信息。

apiVersion: v1
kind: Secret
metadata:
  name: wikijs
data:
  DB_USER: d2lraWpz
  DB_PASS: xxxx
type: Opaque

以上 DB_PASS 自行準備,為 base64 編碼的數(shù)據(jù)。

準備數(shù)據(jù)庫連接配置

我們使用 ConfigMap 保存 wiki.js 的數(shù)據(jù)庫連接信息。

apiVersion: v1
kind: ConfigMap
metadata:
  name: wikijs
data:
  DB_TYPE: postgres
  DB_HOST: postgres-prod.infra
  DB_PORT: "5432"
  DB_NAME: wikijs
  HA_ACTIVE: "true"

創(chuàng)建數(shù)據(jù)庫用戶和數(shù)據(jù)庫

如果 PostgreSQL 數(shù)據(jù)庫里沒有創(chuàng)建 wikijs 用戶和數(shù)據(jù) ,需要手工完成一下工作:

通過『數(shù)據(jù)庫工具』連接 PostgreSQL 數(shù)據(jù)庫,執(zhí)行一下 SQL 語句,完成數(shù)據(jù)庫和用戶的創(chuàng)建、授權(quán)。

CREATE DATABASE wikijs;
CREATE USER wikijs with password 'xxxx';
GRANT CONNECT ON DATABASE wikijs to wikijs;
GRANT USAGE ON SCHEMA public TO wikijs;
GRANT SELECT,update,INSERT,delete ON ALL TABLES IN SCHEMA public TO wikijs;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO wikijs;

以上 wikijs 的密碼自行修改。

準備 wiki.js 的 yaml 部署文件

采用 Deployment 方式 部署 wiki.js 的 yaml 文件如下:

# wikijs-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: wikijs
  name: wikijs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wikijs
  template:
    metadata:
      labels:
        app: wikijs
    spec:
      containers:
        - name: wikijs
          image: 'requarks/wiki:2'
          ports:
            - name: http-3000
              protocol: TCP
              containerPort: 3000
          envFrom:
          - secretRef:
              name: wikijs
          - configMapRef:
              name: wikijs

創(chuàng)建集群內(nèi)訪問 wiki.js 的 Service

# wikijs-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: wikijs
spec:
  selector:
    app: wikijs
  ports:
    - protocol: TCP
      port: 3000
      targetPort: http-3000

創(chuàng)建集群外訪問的 Ingress

# wikijs-ing.yaml
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: wikijs
spec:
  ingressClassName: nginx
  rules:
    - host: wiki.xxxx.cn
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: wikijs
                port:
                  number: 3000

以上 host 域名需要自行配置。

執(zhí)行部署

$ kubectl apply -f wikijs-deploy.yaml
$ kubectl apply -f wikijs-svc.yaml
$ kubectl apply -f wikijs-ing.yaml

配置 wiki.js 支持中文全文檢索

wiki.js 的全文檢索支持基于 PostgreSQL 的檢索,也支持 Elasticsearch 等,相對來說, PostgreSQL 比較輕量級,本項目中,我們使用 PostgreSQL 的全文檢索。

但是,因為 PostgreSQL 不支持中文分詞,需要額外安裝插件并配置啟用中文分詞,下面描述了為 wiki.js 啟動基于 PostgreSQL 數(shù)據(jù)庫中文分詞的全文檢索。

授予 wikijs 用戶臨時超管權(quán)限

通過數(shù)據(jù)庫管理工具登錄有超管權(quán)限的 PostgreSQL 用戶,臨時授予 wiki.js 用戶臨時超管權(quán)限,便于啟動中文分詞功能。

ALTER USER wikijs WITH SUPERUSER;

啟用數(shù)據(jù)庫的中文分詞能力

使用數(shù)據(jù)庫管理工具登錄 PostgreSQL 數(shù)據(jù)庫的 wikijs 用戶,執(zhí)行以下命令,啟動數(shù)據(jù)庫的中文分詞功能。

CREATE EXTENSION pg_trgm;
CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION pg_catalog.chinese_zh (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;
-- 忽略標點影響
ALTER ROLE wikijs SET zhparser.punctuation_ignore = ON;
-- 短詞復(fù)合
ALTER ROLE wikijs SET zhparser.multi_short = ON;
-- 測試一下
select ts_debug('chinese_zh', '青春是最美好的年歲,青春是最燦爛的日子。每一個人的青春都無比寶貴,寶貴的青春只有與奮斗為伴才最閃光、最出彩。');

取消 wikijs 用戶的臨時超管權(quán)限

登錄 PostgreSQL 數(shù)據(jù)庫 wikijs 用戶,取消 wikijs 用戶的超管權(quán)限。

ALTER USER wikijs WITH NOSUPERUSER;

創(chuàng)建支持中文分詞的配置 ConfigMap

# zh-parse.yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: wikijs-zhparser
data:
  definition.yml: |-
    key: postgres
    title: Database - PostgreSQL
    description: Advanced PostgreSQL-based search engine.
    author: requarks.io
    logo: https://static.requarks.io/logo/postgresql.svg
    website: https://www.requarks.io/
    isAvailable: true
    props:
      dictLanguage:
        type: String
        title: Dictionary Language
        hint: Language to use when creating and querying text search vectors.
        default: english
        enum:
          - simple
          - danish
          - dutch
          - english
          - finnish
          - french
          - german
          - hungarian
          - italian
          - norwegian
          - portuguese
          - romanian
          - russian
          - spanish
          - swedish
          - turkish
          - chinese_zh
        order: 1
  engine.js: |-
    const tsquery = require('pg-tsquery')()
    const stream = require('stream')
    const Promise = require('bluebird')
    const pipeline = Promise.promisify(stream.pipeline)
    /* global WIKI */
    module.exports = {
      async activate() {
        if (WIKI.config.db.type !== 'postgres') {
          throw new WIKI.Error.SearchActivationFailed('Must use PostgreSQL database to activate this engine!')
        }
      },
      async deactivate() {
        WIKI.logger.info(`(SEARCH/POSTGRES) Dropping index tables...`)
        await WIKI.models.knex.schema.dropTable('pagesWords')
        await WIKI.models.knex.schema.dropTable('pagesVector')
        WIKI.logger.info(`(SEARCH/POSTGRES) Index tables have been dropped.`)
      },
      /**
       * INIT
       */
      async init() {
        WIKI.logger.info(`(SEARCH/POSTGRES) Initializing...`)
        // -> Create Search Index
        const indexExists = await WIKI.models.knex.schema.hasTable('pagesVector')
        if (!indexExists) {
          WIKI.logger.info(`(SEARCH/POSTGRES) Creating Pages Vector table...`)
          await WIKI.models.knex.schema.createTable('pagesVector', table => {
            table.increments()
            table.string('path')
            table.string('locale')
            table.string('title')
            table.string('description')
            table.specificType('tokens', 'TSVECTOR')
            table.text('content')
          })
        }
        // -> Create Words Index
        const wordsExists = await WIKI.models.knex.schema.hasTable('pagesWords')
        if (!wordsExists) {
          WIKI.logger.info(`(SEARCH/POSTGRES) Creating Words Suggestion Index...`)
          await WIKI.models.knex.raw(`
            CREATE TABLE "pagesWords" AS SELECT word FROM ts_stat(
              'SELECT to_tsvector(''simple'', "title") || to_tsvector(''simple'', "description") || to_tsvector(''simple'', "content") FROM "pagesVector"'
            )`)
          await WIKI.models.knex.raw('CREATE EXTENSION IF NOT EXISTS pg_trgm')
          await WIKI.models.knex.raw(`CREATE INDEX "pageWords_idx" ON "pagesWords" USING GIN (word gin_trgm_ops)`)
        }
        WIKI.logger.info(`(SEARCH/POSTGRES) Initialization completed.`)
      },
      /**
       * QUERY
       *
       * @param {String} q Query
       * @param {Object} opts Additional options
       */
      async query(q, opts) {
        try {
          let suggestions = []
          let qry = `
            SELECT id, path, locale, title, description
            FROM "pagesVector", to_tsquery(?,?) query
            WHERE (query @@ "tokens" OR path ILIKE ?)
          `
          let qryEnd = `ORDER BY ts_rank(tokens, query) DESC`
          let qryParams = [this.config.dictLanguage, tsquery(q), `%${q.toLowerCase()}%`]
          if (opts.locale) {
            qry = `${qry} AND locale = ?`
            qryParams.push(opts.locale)
          }
          if (opts.path) {
            qry = `${qry} AND path ILIKE ?`
            qryParams.push(`%${opts.path}`)
          }
          const results = await WIKI.models.knex.raw(`
            ${qry}
            ${qryEnd}
          `, qryParams)
          if (results.rows.length < 5) {
            const suggestResults = await WIKI.models.knex.raw(`SELECT word, word <-> ? AS rank FROM "pagesWords" WHERE similarity(word, ?) > 0.2 ORDER BY rank LIMIT 5;`, [q, q])
            suggestions = suggestResults.rows.map(r => r.word)
          }
          return {
            results: results.rows,
            suggestions,
            totalHits: results.rows.length
          }
        } catch (err) {
          WIKI.logger.warn('Search Engine Error:')
          WIKI.logger.warn(err)
        }
      },
      /**
       * CREATE
       *
       * @param {Object} page Page to create
       */
      async created(page) {
        await WIKI.models.knex.raw(`
          INSERT INTO "pagesVector" (path, locale, title, description, "tokens") VALUES (
            ?, ?, ?, ?, (setweight(to_tsvector('${this.config.dictLanguage}', ?), 'A') || setweight(to_tsvector('${this.config.dictLanguage}', ?), 'B') || setweight(to_tsvector('${this.config.dictLanguage}', ?), 'C'))
          )
        `, [page.path, page.localeCode, page.title, page.description, page.title, page.description, page.safeContent])
      },
      /**
       * UPDATE
       *
       * @param {Object} page Page to update
       */
      async updated(page) {
        await WIKI.models.knex.raw(`
          UPDATE "pagesVector" SET
            title = ?,
            description = ?,
            tokens = (setweight(to_tsvector('${this.config.dictLanguage}', ?), 'A') ||
            setweight(to_tsvector('${this.config.dictLanguage}', ?), 'B') ||
            setweight(to_tsvector('${this.config.dictLanguage}', ?), 'C'))
          WHERE path = ? AND locale = ?
        `, [page.title, page.description, page.title, page.description, page.safeContent, page.path, page.localeCode])
      },
      /**
       * DELETE
       *
       * @param {Object} page Page to delete
       */
      async deleted(page) {
        await WIKI.models.knex('pagesVector').where({
          locale: page.localeCode,
          path: page.path
        }).del().limit(1)
      },
      /**
       * RENAME
       *
       * @param {Object} page Page to rename
       */
      async renamed(page) {
        await WIKI.models.knex('pagesVector').where({
          locale: page.localeCode,
          path: page.path
        }).update({
          locale: page.destinationLocaleCode,
          path: page.destinationPath
        })
      },
      /**
       * REBUILD INDEX
       */
      async rebuild() {
        WIKI.logger.info(`(SEARCH/POSTGRES) Rebuilding Index...`)
        await WIKI.models.knex('pagesVector').truncate()
        await WIKI.models.knex('pagesWords').truncate()
        await pipeline(
          WIKI.models.knex.column('path', 'localeCode', 'title', 'description', 'render').select().from('pages').where({
            isPublished: true,
            isPrivate: false
          }).stream(),
          new stream.Transform({
            objectMode: true,
            transform: async (page, enc, cb) => {
              const content = WIKI.models.pages.cleanHTML(page.render)
              await WIKI.models.knex.raw(`
                INSERT INTO "pagesVector" (path, locale, title, description, "tokens", content) VALUES (
                  ?, ?, ?, ?, (setweight(to_tsvector('${this.config.dictLanguage}', ?), 'A') || setweight(to_tsvector('${this.config.dictLanguage}', ?), 'B') || setweight(to_tsvector('${this.config.dictLanguage}', ?), 'C')), ?
                )
              `, [page.path, page.localeCode, page.title, page.description, page.title, page.description, content,content])
              cb()
            }
          })
        )
        await WIKI.models.knex.raw(`
          INSERT INTO "pagesWords" (word)
            SELECT word FROM ts_stat(
              'SELECT to_tsvector(''simple'', "title") || to_tsvector(''simple'', "description") || to_tsvector(''simple'', "content") FROM "pagesVector"'
            )
          `)
        WIKI.logger.info(`(SEARCH/POSTGRES) Index rebuilt successfully.`)
      }
    }

更新 wikijs 的 Deployment

wiki.js 的基于 PostgreSQL 的全文檢索引擎配置位于 /wiki/server/modules/search/postgres ,我們將前面配置的 ConfigMap 加載到這個目錄。

# wikijs-zh.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: wikijs
  labels:
    app: wikijs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wikijs
  template:
    metadata:
      labels:
        app: wikijs
    spec:
      volumes:
        - name: volume-dysh4f
          configMap:
            name: wikijs-zhparser
            defaultMode: 420
      containers:
        - name: wikijs
          image: 'requarks/wiki:2'
          ports:
            - name: http-3000
              containerPort: 3000
              protocol: TCP
          envFrom:
            - secretRef:
                name: wikijs
            - configMapRef:
                name: wikijs
          volumeMounts:
            - name: volume-dysh4f
              readOnly: true
              mountPath: /wiki/server/modules/search/postgres

配置 wiki.js ,啟用基于 PostgreSQL 的全文檢索

  • 重新 apply 新的 Delployment 文件后
$ kubectl apply -f zh-parse.yaml
$ kubectl apply -f wikijs-zh.yaml
  • 打開 wiki.js 管理
  • 點擊搜索引擎
  • 選擇 Database - PostgreSQL
  • 在 Dictionary Language 的下拉菜單里選擇 chinese_zh。
  • 點擊應(yīng)用,并重建索引。
  • 完成配置。

總結(jié)

本文介紹的 wiki.js 部署方式支持中文全文檢索的支持,集成了 PostgreSQL 和 zhparser 中文分詞插件。

相對于標準的 wiki.js 安裝部署過程,主要做了以下配置:

  • PostgreSQL 鏡像采用了 abcfy2/zhparser:12-alpine ,這個鏡像自帶 zhparser 中文分詞插件。
  • wiki.js 鏡像外掛了 ConfigMap ,用于修改原 Docker 鏡像里關(guān)于 PostgreSQL 搜索引擎配置的信息,以支持 chinese_zh 選項。

以上就是KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索的詳細內(nèi)容,更多關(guān)于KubeSphere部署wiki.js并啟用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Jenkins打包、發(fā)布、部署完整驟記錄

    Jenkins打包、發(fā)布、部署完整驟記錄

    這篇文章主要介紹了Jenkins的基本概念,服務(wù)器環(huán)境檢查,以及如何安裝和配置Jenkins,包括安裝FTP服務(wù)、Maven、Git和Jenkins本身,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • Google?Kubernetes?Engine?集群實戰(zhàn)詳解

    Google?Kubernetes?Engine?集群實戰(zhàn)詳解

    這篇文章主要為大家介紹了Google?Kubernetes?Engine?集群實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • kubernetes認證鑒權(quán)內(nèi)容淺析

    kubernetes認證鑒權(quán)內(nèi)容淺析

    這篇文章主要為大家介紹了kubernetes認證鑒權(quán)內(nèi)容淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • k8s控制deamonset中pod數(shù)量的方法

    k8s控制deamonset中pod數(shù)量的方法

    DaemonSet是Kubernetes中用于確保每個節(jié)點運行一個Pod副本的控制器,常用于運行集群守護進程,通過節(jié)點選擇器、節(jié)點親和性、容忍度和更新策略,可以精確控制Pod的數(shù)量和調(diào)度,本文介紹k8s控制deamonset中pod數(shù)量的方法,感興趣的朋友一起看看吧
    2025-01-01
  • 基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng)的案例詳解

    基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng)的案例詳解

    這篇文章主要介紹了基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • k8s入門實戰(zhàn)deployment使用詳解

    k8s入門實戰(zhàn)deployment使用詳解

    這篇文章主要為大家介紹了k8s入門實戰(zhàn)deployment使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 超詳細的Kubernetes?(k8s)常用命令整理

    超詳細的Kubernetes?(k8s)常用命令整理

    這篇文章主要介紹了Kubernetes?(k8s)常用命令整理的相關(guān)資料,講解了Kubernetes集群管理、節(jié)點資源查看、Pod管理、部署管理、命名空間管理、服務(wù)負載均衡、調(diào)試排錯以及備份恢復(fù)等操作的命令,需要的朋友可以參考下
    2025-03-03
  • K8s中Pod處于Pending狀態(tài)的八種原因分析

    K8s中Pod處于Pending狀態(tài)的八種原因分析

    文章詳細介紹了Pod處于Pending狀態(tài)的八種常見原因,并提供了相應(yīng)的排查和解決方法,這些原因包括資源不足、調(diào)度約束、存儲依賴、鏡像問題、配額限制、網(wǎng)絡(luò)暗礁、系統(tǒng)級異常以及冷門陷阱,每種原因都附帶了具體的診斷方法和解決建議,感興趣的朋友一起看看吧
    2025-02-02
  • 一文詳解如何高效查看k8s日志

    一文詳解如何高效查看k8s日志

    K8S是kubernetes的縮寫,是為解決容器服務(wù)編排而生的,在運維K8S服務(wù)的過程中,經(jīng)常會遇到各種報錯和診斷問題,那么我們一般怎么查看K8S組件的日志,這篇文章主要給大家介紹了關(guān)于如何高效查看k8s日志的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • k8s編排之DaemonSet知識點詳解

    k8s編排之DaemonSet知識點詳解

    這篇文章主要為大家介紹了k8s編排之DaemonSet知識點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論

永靖县| 海城市| 西乌珠穆沁旗| 永修县| 汤阴县| 江山市| 泌阳县| 深水埗区| 玉溪市| 任丘市| 惠水县| 丹凤县| 朝阳市| 金平| 彝良县| 沁水县| 哈巴河县| 栖霞市| 青川县| 德安县| 泗阳县| 休宁县| 西华县| 娄底市| 揭阳市| 铜梁县| 渑池县| 唐海县| 新宁县| 栾川县| 孝义市| 高安市| 宜春市| 浮山县| 平江县| 甘泉县| 东乌珠穆沁旗| 安远县| 绥江县| 北川| 平安县|