赞
踩
本文讲述如何把上文制作好的docker镜像部署到K8S,会涉及以下部分:
从官方的docker-compose.yml可以得知其健康检测方法
curl http://localhost:5175/api/status
{"data":{"chat_link":"","display_in_currency":true,"email_verification":false,"footer_html":"","github_client_id":"","github_oauth":false,"lark_client_id":"","logo":"","quota_per_unit":500000,"server_address":"http://localhost:3000","start_time":1712719277,"system_name":"One API","top_up_link":"","turnstile_check":false,"turnstile_site_key":"","version":"","wechat_login":false,"wechat_qrcode":""},"message":"","success":true}
这里的{{ PORT }} 是你应用监听的端口号。
######################################### readinessProbe: exec: command: ["sh", "-c", "wget -q -O - http://127.0.0.1:{{ PORT }}/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'"] initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 3 failureThreshold: 3 startupProbe: exec: command: ["sh", "-c", "wget -q -O - http://127.0.0.1:{{ PORT }}/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'"] initialDelaySeconds: 15 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 3 failureThreshold: 22 #########################################
当然,你可以直接在环境变量里配置明文,但不建议!
# 修改前 env: - name: SQL_DSN value: "oneapi:123456@tcp(db:3306)/one-api" - name: REDIS_CONN_STRING value: "redis://redis" - name: SESSION_SECRET value: "random_string" # 修改后 env: - name: SQL_DSN valueFrom: secretKeyRef: name: one-api-conf key: sql-dsn - name: REDIS_CONN_STRING valueFrom: secretKeyRef: name: one-api-conf key: redis-conn-string - name: SESSION_SECRET valueFrom: secretKeyRef: name: one-api-conf key: session-secret
one-api程序的默认端口是3000,一般我们都会需要进行变更。
不同的部署策略,则有不同的方案。
详见下面的command: --port 5175,指定程序启动的端口号为5175。
version: '3.4'
services:
one-api:
image: "xxx/one-api:1.0.0"
container_name: one-api
command: --port 5175
通过args传入程序启动的端口号
containers:
- args:
- '--port'
- '5175'
默认的存储路径:/data/logs
oneapi-20240410.log日志内容:
程序启动进程 one-api在根目录下:
访问地址: http://{ip}:{port} (port就是上文指定的端口号)
至此,对开源项目one-api的k8s容器化部署就完成了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。