常用指令
以应用部署命名空间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