Kubernetes集群(概念篇)

时间:2024-09-12 18:34:20

Kubernetes介绍

2013年docker诞生,自此一发不可收拾,它的发展如火如荼,作为一个运维如果不会docker,那真的是落伍了。

而2014年出现的kubernetes(又叫k8s)更加炙手可热,我想大部分人仅仅是听说过,简单了解它,但并没有真正使用过。那今天本文将带着大家一起走近kubernetes。

为啥kubernetes又叫做k8s?据说是因为kubernetes这个单词太长,不好记,而首字母和尾字母中间有8个字母,所以就简写成了k8s。Kubernetes翻译成中文,意思是“舵手”。

本文开篇之所以提到docker,是因为k8s之所以火,得益于docker。K8s简单说,是用来实现容器集群管理的系统,用于自动部署、扩展和管理容器。它是由Google公司开发,其原型为Google内部容器管理系统Borg。

Borg经过十多年地优化、改进,其功能和效率不言而喻,k8s项目的目的就是把Borg最精华的部分提取出来,使现在的开发者能够更简单、直接地应用。K8s自诞生之日起就注定了它的不平凡之路。

前几年Openstack很火,但是这两年k8s将要盖过Openstack了,虽然k8s不能完全替代Openstack,但在云计算领域,k8s的确是后起之秀,能用容器云解决的问题,坚决不用传统云。

其实和k8s功能类似的容器管理工具还有一个Swarm,它是docker官方开发,按理说docker官方的东西不更应该被大家普及么,可事实上k8s的体验比官方的Swarm更加好,其根本原因还是Borg。

要想更了解K8s,需要先理解几个相关的概念。

Kubernetes集群(概念篇)

node 一个物理机器,或一个虚拟机(KVM类型,而不是容器类型);将虚拟机作为node一般是历史原因,或是为了彻底隔绝杜绝安全问题。

cluster 一组node需要被集中管理,统一叫一个cluster。一个cluster有一个master和多个node。每个node里面有一个kubelet用来服从master调度并管理node本身。

Kubernetes集群(概念篇)

app containers 一个node里面可以有一个或多个容器化的应用程序,即app container。可以简单认为就是docker容器。

Kubernetes集群(概念篇)

pod 多个app containers之间可能需要共享硬盘,或共享同一个ip,这样一组app containers合起来叫一个pod。典型应用如:一个容器不停产生日志到本地硬盘,另一个容器不停读本地硬盘并上传日志到日志服务器。

Kubernetes集群(概念篇)

service 当一个node挂了时,上面的pod及pod里面的container也自然都挂了。为了死不掉,需要有个pod上层的抽象,pod挂了,service还在。service通过如下几种方式暴露出来。

  • ClusterIP (default),cluser的内网ip,只能此cluster内可见
  • NodePort,端口NAT到cluster外面
  • LoadBalancer,在cluster外面搞个LB并分配个外面可见的固定IP给LB
  • ExternalName,类似CNAME方式

deployment 配置yaml格式,存在master上,当机器故障或需要横向scale时或需要更新binary时,master根据配置搞定一切。

一张图总结下:

Kubernetes集群(概念篇)