golang云原生部署

88 阅读1分钟

1.应用程序容器镜像制作

  • dockerfile 编写
  • docker build -t username/hello:1.0.0 //非顶级镜像 必须用户名打头
  • docker push username/hello:1.0.0

2.定义k8s应用程序载体Pod (deployment.yaml)

pod.yaml //定义单独的pod

kubectl create -f xx-pod.yaml // 创建单独的pod

restartPolicy:Always:除正常退出以外,都会重启我们容器Never:任何情况下,容器关闭都不会重启OnFailure: 程序异常退出,健康检查失败

容器重启策略:10s,20s,40s,80s...300s计时十分钟 没有出现任何问题 重置重启时间 10s

imagePullPolicy:Always:每次部署重新拉取镜像Never:只使用本地镜像IfNotPresent:如果本地存在,则不拉取

1cpu=1000m

deployment.yaml

  • 副本管理-replicaSet 做副本管理
  • 版本管理:发布、回滚

image.png

3.为应用程序配置健康检查机制

存活检查(livenessProbe), 持续检查,失败则重启

  • exec 退出码为0
  • httpGet 状态码 大于200 且小于400
  • tcpSocket 端口打开即为成功 redis
  • grpc alph (不用)

就绪检查(readinessProbe), 校验依赖的第三方服务是否ok, 持续检查,失败不会重启,仍然按间隔检查,但不会提供

启动检查// 初始化 程序/缓存预热

4.创建service对外公开应用程序接口 (xxx-svc.yaml)

image.png

之后可以用 serviceIp:servicePort 访问, 有负载均衡