容器鏡像名稱只允許用小寫肖卧,tag 大小寫均可
kubernetes 的 namespace 和 deployments name 也是都用小寫代碼和發(fā)布的自動對應(yīng)關(guān)系解決方案:
git 項(xiàng)目的 GroupName/ProjeceName ==> 容器鏡像全部小寫的 groupname/projectname
git 項(xiàng)目的 GroupName ==> kubernetes 下全部小寫的 groupname 作為 namespace
git 項(xiàng)目的 ProjeceName ==> kubernetes 下全部小寫的 projectname 作為 deployment name
如此通過自動化的映射鲁驶,可以極大的減少管理成本震缭,提高發(fā)布效率重付。項(xiàng)目發(fā)布的的 yaml 文件中,是否寫創(chuàng)建 namespace 耘戚?
最好不要祷舀。
如果把創(chuàng)建 namespace 寫到項(xiàng)目發(fā)布的yaml中,當(dāng)刪除這個項(xiàng)目時码泛,
namespace 連同該命名空間下其他的部署項(xiàng)目也一并刪除猾封,這個結(jié)果不一定是我們需要的。java 項(xiàng)目建議由 war 包改為 jar 包部署
war 包項(xiàng)目的運(yùn)行噪珊,需要依賴 tomcat jetty 等容器晌缘,經(jīng)常會有一些個性化的要求,比如 URIEncoding
第三方包依賴痢站,等等磷箕,增加工程化部署的復(fù)雜程度。
因此建議將war包的項(xiàng)目改造成 springboot 或者內(nèi)嵌tomcat 的方式來部署瑟押。helm 生成的 chart 模板把里面沒有 namespace
解決辦法: 在模板中適當(dāng)位置加入namespace: {{ .Release.Namespace }}
app容器的操作系統(tǒng)的選擇
一句話概括:在企業(yè)部署環(huán)境中搀捷,基礎(chǔ)鏡像盡量不選擇 alipine,盡管他看起來小而美多望。
原因:
- 代碼兼容性:php nodejs python golang 遇到的兼容性問題都不好解決
- 性能: musl 的性能比 glibc 還是有明顯的差異
因此建議盡量選擇 ubuntu嫩舟、debian、centos 這些常規(guī)系統(tǒng)作為基礎(chǔ)鏡像怀偷。
flannel 0.11 部署在 k8s 1.17 起不來
原因: 需要在 yaml 中指定"cniVersion": "0.2.0",
, 添加后才可正常啟動
https://github.com/coreos/flannel/pull/1174/commits/701c2e8749714022758d5360fbe627005901349ccalico 3.11 部署在 k8s 1.17 起不來
報錯:error=listen tcp a.b.c.d:9098: bind: cannot assign requested address
原因:在宿主機(jī)上家厌,使用 nslookup localhost 解析到了不存在該主機(jī)的地址上了。
解決:使用 nslookup localhost 解析到了 localhost.domain.com 的內(nèi)部域名上了椎工,
增加了該內(nèi)部域名的解析饭于,解析到 127.0.0.1。
或者在 yaml 文件中维蒙,添加環(huán)境變量 TYPHA_HEALTHHOST=127.0.0.1
https://github.com/projectcalico/typha/issues/334