
more 注释之前的内容被视为文章摘要。
2020/1/1大约 2 分钟

more 注释之前的内容被视为文章摘要。
CI/CD 是持续集成(Continuous Integration)与持续交付/部署(Continuous Delivery/Deployment)的简称,核心目标是通过自动化提升交付效率、质量与一致性:
完整的 CI/CD 工具链覆盖代码管理、构建、测试、制品管理、部署、监控等全生命周期:
Dockerfile 通过声明式指令定义镜像构建过程,常见指令分为基础设置、文件操作、运行时配置三类:
基础指令:
FROM <image>:<tag>:指定基础镜像,必须是第一条指令;多阶段构建可多次使用,如 FROM golang:1.20 AS builder。LABEL <key>=<value>:添加元数据,如版本、维护者、描述。EXPOSE 仅用于声明容器内应用监听的端口及协议,方便人和工具理解镜像,不会自动对宿主机或外部开放端口。
EXPOSE 不等于开放端口;需要 -p/--publish 或 Compose ports: 才会将容器端口映射到宿主机。docker run -P 会为镜像中所有 EXPOSE 端口随机映射宿主机端口;否则无映射。EXPOSE 80/tcp、EXPOSE 53/udp,便于工具按协议处理。EXPOSE 无关;EXPOSE 仅起说明作用。EXPOSE 不参与暴露;应在 Pod 里用 containerPort 声明、用 Service/Ingress 对内外暴露。排查原则:从外到内,从简到繁,逐层深入
排查顺序:
1. 查看 Pod 状态 (kubectl get/describe)
2. 查看容器日志 (kubectl logs)
3. 查看事件信息 (kubectl events)
4. 检查资源配额 (Resource Quota)
5. 检查节点状态 (Node)
6. 检查网络策略 (Network Policy)
7. 检查存储卷 (PV/PVC)
8. 检查安全策略 (Security Context)
Pod
Service
Deployment
可以。Pod 内可以运行多个进程,主要有两种方式:
主要原因是 cron 执行环境与用户登录 shell 环境不同,包括环境变量、工作目录、PATH 路径、用户权限等差异,导致脚本在 cron 中找不到命令或无法访问资源。
问题表现:
# 手动执行成功
$ ./backup.sh
Success!
# cron 执行失败
* * * * * /home/user/backup.sh
# 报错:command not found
Kubernetes 主要使用 kube-proxy 来控制网络转发,它通过以下三种模式实现 Service 的负载均衡和流量转发:
此外,底层还依赖: