refactor: 镜像名 lghost/opsxloki → lghost/lokistack(跟随项目更名)
只改镜像引用(8 处),K8s 资源名一律不动 —— 改了会丢数据/断服务:
改:
kubernetes/deployment.yaml image
docker-compose.yml image
docker-compose.prod.yml image ×2
kubernetes/README.md 文档 ×2
docs/deployment/kubernetes.md 文档 ×2
不改(重要):
opsxloki-secrets K8s Secret —— 改名会导致 JWT_SECRET/ENCRYPTION_KEY 重置,
历史加密的实例密码无法解密
opsxloki-data PVC —— 改名 = 新建空卷,数据全丢
container_name docker 容器名 —— 改名会让 docker exec/logs 命令失效
app: opsx-loki Pod label —— 改名要同步改 Service selector
deployment 名称 opsx-loki —— 改名要重建 Deployment
⚠️ 部署顺序(本提交只改代码,尚未 apply 到 K8s):
1) 推镜像 lghost/lokistack:latest 到 Docker Hub
2) kubectl apply -f kubernetes/deployment.yaml
3) 等 Pod 1/1 就绪
4) 才能删除 lghost/opsxloki
顺序颠倒会因 imagePullPolicy: Always 拉到不存在的镜像导致服务中断
This commit is contained in:
1 parent
ec759cd36b
commit
b65dcc9677
5 files changed
+8
-8
No files matched your search
@@ -64,7 +64,7 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
TARGETARCH: ${TARGETARCH:-amd64}
|
||||
image: lghost/opsxloki:latest
|
||||
image: lghost/lokistack:latest
|
||||
container_name: opsxloki-1
|
||||
hostname: opsxloki-1
|
||||
restart: unless-stopped
|
||||
@@ -145,7 +145,7 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
TARGETARCH: ${TARGETARCH:-amd64}
|
||||
image: lghost/opsxloki:latest
|
||||
image: lghost/lokistack:latest
|
||||
container_name: opsxloki-2
|
||||
hostname: opsxloki-2
|
||||
restart: unless-stopped
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
TARGETARCH: ${TARGETARCH:-amd64}
|
||||
image: lghost/opsxloki:latest
|
||||
image: lghost/lokistack:latest
|
||||
container_name: opsxloki
|
||||
hostname: opsxloki
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ kubectl apply -f kubernetes/namespace.yaml \
|
||||
- `replicas: 1`:JSON DB 单写者,多副本会互相覆盖。
|
||||
- `strategy: Recreate`:滚动更新会同时挂同一个 RWO PVC。
|
||||
- `DATA_DIR=/app/data`,挂 PVC;`runAsUser/fsGroup: 1000`。
|
||||
- 镜像 `lghost/opsxloki:latest`,`imagePullPolicy: Always`。
|
||||
- 镜像 `lghost/lokistack:latest`,`imagePullPolicy: Always`。
|
||||
- 探针:`/api/v1/health`。
|
||||
|
||||
## 4. Service
|
||||
@@ -160,7 +160,7 @@ kubectl -n log exec deploy/opsx-loki -- wget -qO- http://127.0.0.1:8080/api/v1/h
|
||||
## 8. 升级
|
||||
|
||||
```bash
|
||||
kubectl -n log set image deploy/opsx-loki opsx-loki=lghost/opsxloki:v0.2
|
||||
kubectl -n log set image deploy/opsx-loki opsx-loki=lghost/lokistack:v0.2
|
||||
kubectl -n log rollout status deploy/opsx-loki
|
||||
```
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ WITH_NODEPORT=1 bash kubernetes/install.sh
|
||||
|----|------|
|
||||
| Kubernetes | 1.20+ |
|
||||
| StorageClass | **脚本自动探测**(default 注解 → 唯一 SC → 手动 `STORAGE_CLASS=`);自建集群无 SC 时会提前报错并给出解决方案,不会白等 |
|
||||
| 镜像 | 节点可拉 `lghost/opsxloki:latest`(或改成自己的 Harbor/ACR/TCR/SWR) |
|
||||
| 镜像 | 节点可拉 `lghost/lokistack:latest`(或改成自己的 Harbor/ACR/TCR/SWR) |
|
||||
| 权限 | 有 `log` 命名空间的 create/apply 权限 |
|
||||
|
||||
## 脚本自动处理什么
|
||||
@@ -385,7 +385,7 @@ spec:
|
||||
|------|------|------|
|
||||
| Pod `CreateContainerConfigError` | 缺 Secret `opsxloki-secrets` | 跑 `install.sh`,或手动 `kubectl create secret` |
|
||||
| Pod `Pending`,PVC `Pending` | 集群没有默认 StorageClass | `pvc.yaml` 里填 `storageClassName` |
|
||||
| Pod `ImagePullBackOff` | 节点拉不到 `lghost/opsxloki:latest` | 换镜像地址(ACR/TCR/SWR/Harbor) |
|
||||
| Pod `ImagePullBackOff` | 节点拉不到 `lghost/lokistack:latest` | 换镜像地址(ACR/TCR/SWR/Harbor) |
|
||||
| `kubectl apply -f kubernetes/` 报 ingress 错误 | 误把 examples 里的 ingress 一起 apply 了 | 只 apply 根目录的 yaml,ingress 单独处理 |
|
||||
| 重启后数据丢失 | `/app/data` 没挂 PVC | 确认 `deployment.yaml` 的 volumeMounts |
|
||||
| 两个 Pod 同时写 DB | 用了 RollingUpdate 或多副本 | 必须 `replicas: 1` + `strategy: Recreate` |
|
||||
@@ -30,7 +30,7 @@ spec:
|
||||
fsGroup: 1000
|
||||
containers:
|
||||
- name: opsx-loki
|
||||
image: lghost/opsxloki:latest
|
||||
image: lghost/lokistack:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- name: http
|
||||
|
||||
Reference in new issue
Block a user