Kubernetes其在自动化部署、扩展性、以及管理容器化的应用中已经体现出独特的优势,同样在企业中应用落地已经成为一种共识。中百信玄武库作为ToB服务产品,玄武库研究院在玄武库平台使用Kubernetes做了哪些实践和探索呢?我们今天和大家分享一下!
Kubernetes是用于自动化部署,扩展和管理容器化应用程序的开源系统。
Kubernetes名称源于希腊语,意为"舵手"或 "领航员"。
Kubernetes中间8个字母"ubernete"用数字8来代替,通常又被研发人员简称为"k8s"。
Kubernetes用更容易的方法去部署和管理复杂的分布式系统,同时仍然能通过容器所提升的使用效率来受益。
优势:
单机部署
高可用部署+共享存储(NFS)
劣势:
服务不能自愈
应用更新繁琐
共享存储单点
服务发现和负载均衡,通过 DNS 名称或 IP 地址暴露容器的访问方式,后端pods的增加和减少对于service是自动发现的。
自动发布和回滚,声明期望应用程序容器应该达到的状态(副本数、版本),K8s自动达到期望值。
自动修复,重启已经停机的pods,重启不满足自定义健康检查条件的pods
存储编排,自动挂载指定的存储系统,例如localstroage/nfs/云存储等。
密钥与配置管理,可以存储和管理敏感信息(密码,密钥),更新密钥或者配置不用重新构建镜像。
不限制应用程序类型,有状态、无状态、数据处理等类型的应用;可以在容器中运行的服务,就可以在k8s中运行。
不部署源码、不编译或构建应用程序,交给Jenkins, Harbor。
不提供应用级别的服务作为内置服务,例如中间件, 队列, 数据库。
不指定日志,监控,告警解决方案,例如Loki, ELK, Prometheus, Grafana, Zipkin。
不提供或者限定配置工具,例如Kuboard, Rancher。
Deployment 无状态部署
StatefulSet 有状态集合
DaemonSet 守护进程集合
Pod 运行应用程序
Service 暴露应用访问
Volume 存储卷
Namespace 命名空间
Node 节点
宿主机 物理机或者虚拟机
CRI(Container Runtime Interface):容器运行时接口,提供计算资源
CNI(Container Network Interface):容器网络接口,提供网络资源
CSI(Container Storage Interface):容器存储接口,提供存储资源
这些接口让Kubernetes的开放性变得最大化,而Kubernetes本身则专注于容器调度。
快速扩缩容
自动修复,无单点故障
滚动升级
底层变更不中断服务
资源隔离
生态完整:监控、日志、存储、UI客户端等等 https://landscape.cncf.io/
进一步抽象:helm chart
从玄武库使用者角度来看,用户可以实现无感知切换,不影响用户实际体验。
玄武库目前已经使用kubernetes环境,正常交付项目。
参考资料:
官网:https://kubernetes.io/zh/
Github源码地址:https://github.com/kubernetes/kubernetes
部署工具:https://github.com/easzlab/kubeasz
学习手册1:https://github.com/rootsongjc/kubernetes-handbook
学习手册2:https://github.com/opsnull/follow-me-install-kubernetes-cluster
“玄武库” 是中百信软件技术有限公司在微服务的思想下,集多年软件开发的经验,自主研发的基于微服务架构,为业界提供的一套集成软件设计、程序开发、基础服务、运维管理为一体的新型敏捷开发与管理平台。点击链接了解更多:https://www.xuanwuku.com/