常用指令

以应用部署命名空间vika-app 为例

1. 查看服务运行状态

kubectl --kubeconfig  /data/vika/app/config-k8s/kubeconfig get pods -n vika-app

2. 查看服务运行日志

kubectl --kubeconfig /data/vika/app/config-k8s/kubeconfig -n vika-app get pod
kubectl --kubeconfig /data/vika/app/config-k8s/kubeconfig logs -f --tail=500 backend-server-pod-id -n vika-app

# room-server 终端日志
kubectl --kubeconfig  /data/vika/app/config-k8s/kubeconfig logs -f --tail=500 room-server-pod-id -n vika-app

# room-server/fusion-server 系统日志
kubectl --kubeconfig  /data/vika/app/config-k8s/kubeconfig exec -it room-server-pod-id -n vika-app -- bash
ls /app/packages/room-server/logs/ROOM_SERVER/      # room-server日志目录
ls /app/packages/room-server/logs/FUSION_SERVER/    # fusion-server日志目录
ls /app/packages/room-server/logs/SOCKET_SERVER/    # socket-server日志目录

# 批量查看 fusion-server 日志, 例如搜索 error
kubectl --kubeconfig /data/vika/app/config-k8s/kubeconfig exec  $(kubectl --kubeconfig /data/vika/app/config-k8s/kubeconfig get pods -l app=fusion-server -o jsonpath='{.items[*].metadata.name}' -n vika-app) -n vika-app -- grep -rn  "error" packages/room-server/logs/FUSION_SERVER/

3. 重启某个服务

cd /data/vika/app
# 新版本使用 rollout
kubectl --kubeconfig /data/vika/app/config-k8s/kubeconfig rollout restart deployment/backend-server -n vika-app

#k8s v1.14.6或更早的版本
kubectl --kubeconfig /data/vika/app/config-k8s/kubeconfig get deployment backend-server -n vika-app -o yaml | kubectl replace --force -f -

4. 修改环境变量custom-config/config.yaml

详细变量见: https://apitable.getoutline.com/doc/546v5akd5yy6yep-VtvcXsQpUW

config:
  common:
     KEY: VAL
  custom:
    backend_server:
      KEY: VAL
    room_server:
      KEY: VAL
    fusion_server:
      KEY: VAL
    # 其它服务同样写法

执行ops-manager指令,使配置生效

5. 调整服务的节点数和资源限制 custom-config/config.yaml

节点数配置:container.resources.应用名.replicas

container:
  resources:
    web_server:
      replicas: 3
    backend_server:
      requests_cpu: 1500m        # 资源限制
      requests_memory: 2048Mi
      limits_cpu: 2000m
      limits_memory: 4096Mi
      replicas: 3
    room_server:
      replicas: 5

执行ops-manager指令,使配置生效

推荐配置

container:
  resources:
    web_server:
      replicas: 3
    backend_server:
      requests_cpu: 1500m        # 资源限制
      requests_memory: 2048Mi
      replicas: 5
    room_server:
      requests_cpu: 250m        # 资源限制
      requests_memory: 1024Mi
      replicas: 5
    fusion_server:
      requests_cpu: 250m        # 资源限制
      requests_memory: 1024Mi
      replicas: 5
    openresty_server:
      replicas: 2
    databus_server:
      replicas: 2       

6. 更新init-appdata版本

配置路径 config.custom.init_data.images.initAppData

config:
  custom:
    init_data:
      images:
        initAppData: docker.vika.ltd/vikadata/vika-ee/init-appdata:v0.20.0-alpha_build100

执行ops-manager指令,使配置生效

7. 修改镜像路径(namespace)

默认镜像路径(namespace) 是 vikadata/vika , 示例格式: docker.vika.ltd/vikadata/vika/backend-server:v0.20.0-alpha_build100

image:
  namespace:
    common: vikadata/vika  # 可选默认所有路径改为 vikadata/apitable
    custom:
      app:
        init_settings: vikadata/vika-ee # 单独改镜像路径

8. 支持slb 自定义注解 , 修改custom-config/config.yaml

开启slb 功能后,可以通过注释实现配置slb 属性

config:
  custom: 
    has_load_balancer: true
    load_balancer_annotations:
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"  # 自定义注解,支持多个
       annotations-001: 'slb.s1.small'
       annotations-002: 'slb.s1.small'

9. 配置节点亲和度

对 vika-app命名空间和 init-data 下所有pod 生效

container:
  node_selector:
    kubernetes.io/arch: amd64   #亲和度标签,支持多条

执行ops-manager指令,使配置生效

10. 全部config.yaml 的配置

修改 config.yaml 配置后,执行ops-manager指令,使配置生效

#基础模板,包含所有变量
namespace:
  datacenter: vika-datacenter      #部署数据中心命名空间
  app: vika-app                    #部署应用命名空间
  create: true                     #是否创建namespace。 true 创建, false 不创建
image:
  registry: docker.vika.ltd        #vika-app应用私有仓库地址
  tag:
    custom: 
      app:  #配置镜像标签
        openresty: 1.21.4.1-http-fat    
        backend_server: v0.20.0-rc.36_build3331
        room_server: v0.20.0-rc.36_build3776
        socket_server: v0.20.0-rc.36_build3776
        web_server: v0.20.0-op_build3633
        init_db: v0.20.0-rc.37_build682
        init_db_enterprise: v0.20.0-rc.37_build682
        init_settings: v0.18.0-alpha_build801
        imageproxy_server: v0.13.4-alpha_build9
        databus_server: v1.9.0-release.29_build2308
  namespace:
    common: vikadata/vika       #app镜像默认命名空间,以backend-server为例,镜像路径为: docker.vika.ltd/vikadata/vika/backend_server:v0.20.0-rc.36_build3331 
    custom:                     #独立镜像命名空间
      app:
        init_settings: vikadata/vika-ee
  datacenter:                   #数据中心仓库地址,默认从公网拉取            
    registry: "docker.io"

storage:                     #存储卷型
  class: "cbs"
  mysql_backup_size: 50Gi
  default_storage_size: 20Gi
featGate:
  init_data: true
container:
  node_selector: {}
  resources:                          # deployment 副本数,资源配置
    web_server:
      rolling_update_max_surge: 100%
      probe_http_get_path: "/api/actuator/health"
    openresty:
      lifecycle_post_start_command: ["/bin/sh", "-c", "pwd"]
    backend_server:
      requests_cpu: 1000m
      requests_memory: 2048Mi
    socket_server:
      requests_cpu: 100m
      requests_memory: 256Mi
    room_server:
      requests_cpu: 200m
      requests_memory: 512Mi
    fusion_server:
      requests_cpu: 200m
      requests_memory: 1024Mi
    scheduler_server:
      replicas: 1
    minio:
      limits: {}
      requests: {}
    rabbitmq:
      limits: {}
      requests: {}
config:
  common:
    MYSQL_HOST: "mysql-primary.vika-datacenter"                    #mysql主机,可设置为外置数据库
    MYSQL_DATABASE: "vikadata"                                                 
    MYSQL_USERNAME: "root"                                     
    MYSQL_PASSWORD: "6sg8vgDFcwWXP386EiZB"                         #自建mysql 的密码
    DATABASE_TABLE_PREFIX: "vika_"                                 #mysql 表前缀

    REDIS_HOST: "redis-master.vika-datacenter"
    REDIS_PASSWORD: "UHWCWiuUMVyupqmW4cXV"
    REDIS_SSL_ENABLED: "false"                                    
    

    RABBITMQ_HOST: "rabbitmq-headless.vika-datacenter"
    RABBITMQ_USERNAME: "user"
    RABBITMQ_PASSWORD: "7r4HVvsrwP4kQjAgj8Jj"
    RABBITMQ_VHOST: "/"

    AWS_ACCESS_KEY: "admin"
    AWS_ACCESS_SECRET: "73VyYWygp7VakhRC6hTf"
    AWS_ENDPOINT: "http://minio.vika-datacenter:9000"
    AWS_REGION: "us-east-1"
    SERVER_DOMAIN: ""
    ROW_FILTER_OFFLOAD_COMPLEXITY_THRESHOLD: "infinity"
    NODE_OPTIONS: "--max-old-space-size=4096 --max-http-header-size=80000"
    INSTANCE_MAX_MEMORY: "4096M"
    ASSETS_URL: "assets"
    ASSETS_BUCKET: "assets"
    OSS_HOST: "/assets"
    EDTION: "vika-saas"
  custom:
    has_load_balancer: true                 #是否要开启slb
    has_mysql: true                         #是否自建 mysql ,访问路径 mysql-primary.vika-datacenter
    has_redis: true                         #是否自建 redis ,访问路径 redis-master.vika-datacenter
    has_minio: true                         #是否自建 minio
    has_rabbitmq: true                      #是否自建 rabbitmq
    has_nest_rest_server: false
    docker_registry:                        #私有仓库配置
      registry: "docker.vika.ltd"
      username: "robot"
      password: "123456"
      email: "robot@apitable.com"
    enable_ssl: false
    server_name: "k8s.vika.ltd"              #访问域名
    tls_crt: |                              #tls 证书
        -----BEGIN CERTIFICATE-----          
        xxxxx
        -----END CERTIFICATE-----
    tls_key: |                              #tls 密钥
        -----BEGIN PRIVATE KEY-----         
        xxxxx
        -----END PRIVATE KEY-----
    openresty_server_config: |
        ###                     # 自定义nginx 配置
    backend_server:
      CALLBACK_DOMAIN: ""
      DOMAIN_NAME: ""
      AWS_ENDPOINT: "http://minio.vika-datacenter:9000"
      AWS_ACCESS_KEY: "admin"
      AWS_ACCESS_SECRET: "73VyYWygp7VakhRC6hTf"
      ASSETS_LTD_URL: "assets"                      #v0.21.0 后版本改为ASSETS_URL 
      ASSETS_LTD_BUCKET: "assets"                   #v0.21.0 后版本改为ASSETS_BUCKET 
      ASSETS_URL: "assets"
      ASSETS_BUCKET: "assets"
    imageproxy_server:
      BASEURL: "http://minio.vika-datacenter:9000"
    init_data:                                       #初始化数据模块
      mysql:
        host: "mysql-primary.vika-datacenter"        #mysql主机,可设置为外置数据库
        port: 3306
        username: root
        password: "6sg8vgDFcwWXP386EiZB"
        database: vikadata                          # 数库库名,与MYSQL_DATABASE一致
        tablePrefix: vika_                          # 表前缀,与DATABASE_TABLE_PREFIX一致
      redis:
        host: "redis-master.vika-datacenter"
      minio:
        host: "minio.vika-datacenter"               # minio主机,可设置为外置服务
        schema: http
        port: 9000
        accessKey: "admin"
        secretKey: "73VyYWygp7VakhRC6hTf"
        bucket: assets                              # v0.22.0后使用initAppData.ASSETS_BUCKET 变量
      initAppData:                                  #initAppdata 独立环境变量
        INIT_TEST_ACCOUNT_ENABLED: "true"           #是否创建虚拟帐号
        ASSETS_BUCKET: assets                       #存储桶名
      images:
        initDataDb: docker.vika.ltd/vikadata/vika/init-db:v0.22.0-rc.33_build834                         #初始化mysql, 首次安装执行
        initDataDbEnterprise: docker.vika.ltd/vikadata/vika/init-db-enterprise:v0.22.0-rc.33_build834    #初始化mysql, 首次安装执行
        initAppData: docker.vika.ltd/vikadata/vika-ce/init-appdata:v0.21.0-alpha_build129
        initCheck: subfuzion/netcat:latest

11. 命令行进入mysql 数据库

建议使用只读帐号连接数据库

mysql -u'帐号' -p'密码'
#设置支持中文显示
set names utf8mb4; 

12. 更新https证书

更新custom-config/config.yaml, 配置路径 config.custom

config:
  custom:
    enable_ssl: true
    server_name: "k8s.vika.ltd"              #访问域名
    tls_crt: |                              #tls 证书
        -----BEGIN CERTIFICATE-----          
        xxxxx
        -----END CERTIFICATE-----
    tls_key: |                               #tls 密钥
        -----BEGIN PRIVATE KEY-----         
        xxxxx
        -----END PRIVATE KEY-----

执行ops-manager指令,使配置生效

13. 预览配置变更(--dry-run)

类似helm --dry-run功能,在 v1.1.0-alpha_build53 及后版本生效

docker run --rm --name ops-manager -v  /data/vika/app/config-k8s:/app/terraform/local/config-k8s \
             -v /data/vika/app/custom-config:/app/terraform/local/custom-config \
             -v /data/vika/app/state:/app/terraform/local/state \
             docker.vika.ltd/vikadata/vika/ops-manager:v1.1.0-alpha_build543 install k8s-vika --dry-run