kubernetes 流程部署相关的坑

2019-11-27  本文已影响0人  akka9
  1. 容器镜像名称只允许用小写,tag 大小写均可
    kubernetes 的 namespace 和 deployments name 也是都用小写

  2. 代码和发布的自动对应关系解决方案:
    git 项目的 GroupName/ProjeceName ==> 容器镜像全部小写的 groupname/projectname
    git 项目的 GroupName ==> kubernetes 下全部小写的 groupname 作为 namespace
    git 项目的 ProjeceName ==> kubernetes 下全部小写的 projectname 作为 deployment name
    如此通过自动化的映射,可以极大的减少管理成本,提高发布效率。

  3. 项目发布的的 yaml 文件中,是否写创建 namespace ?
    最好不要。
    如果把创建 namespace 写到项目发布的yaml中,当删除这个项目时,
    namespace 连同该命名空间下其他的部署项目也一并删除,这个结果不一定是我们需要的。

  4. java 项目建议由 war 包改为 jar 包部署
    war 包项目的运行,需要依赖 tomcat jetty 等容器,经常会有一些个性化的要求,比如 URIEncoding
    第三方包依赖,等等,增加工程化部署的复杂程度。
    因此建议将war包的项目改造成 springboot 或者内嵌tomcat 的方式来部署。

  5. helm 生成的 chart 模板把里面没有 namespace
    解决办法: 在模板中适当位置加入 namespace: {{ .Release.Namespace }}

  6. app容器的操作系统的选择
    一句话概括:在企业部署环境中,基础镜像尽量不选择 alipine,尽管他看起来小而美。
    原因:

  1. flannel 0.11 部署在 k8s 1.17 起不来
    原因: 需要在 yaml 中指定 "cniVersion": "0.2.0", , 添加后才可正常启动
    https://github.com/coreos/flannel/pull/1174/commits/701c2e8749714022758d5360fbe627005901349c

  2. calico 3.11 部署在 k8s 1.17 起不来
    报错:error=listen tcp a.b.c.d:9098: bind: cannot assign requested address
    原因:在宿主机上,使用 nslookup localhost 解析到了不存在该主机的地址上了。
    解决:使用 nslookup localhost 解析到了 localhost.domain.com 的内部域名上了,
    增加了该内部域名的解析,解析到 127.0.0.1。
    或者在 yaml 文件中,添加环境变量 TYPHA_HEALTHHOST=127.0.0.1
    https://github.com/projectcalico/typha/issues/334

上一篇下一篇

猜你喜欢

热点阅读