Kubernetes入门

Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力,透明的服务注册和服务发现机制,内建智能负载均衡器,强大的故障发现和自我修复能力,服务滚动升级和在线扩容能力,可扩展的资源和自动调度机制,以及多粒度的资源配额管理能力。所以,Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台。

遵从Kubernetes的设计思想,传统系统架构中的和业务无关的底层代码和功能模块,都可以立刻从我们的视线中消失,我们不必再费心于负载均衡器的选型和部署实施问题,不必考虑引入或自研一个复杂的服务治理框架,不必头疼服务监控和故障处理模块的开发。总之,使用Kubernetes提供 的解决方案,我们节省不少于30%的开发成本。

Kubernetes中几个重要的概念:

Master:

  • kube-apiserver:所有资源的增删改查的唯一入口
  • kube-controller-manager:所有资源对象的自动化控制中心
  • kube-scheduler:资源调度(pod调度)
  • etcd server:存储进程
  • Node:
  • kubelet:负责Pod对应的容器的创建、启停等,与Master节点密切协作,实现集群管理
  • kube-proxy:实现Kubernetes service的通信与负载均衡
  • Docker Engine:负责本机容器创建和管理

Pod:

  • Pause:跟容器
  • containers:多个用户业务相关的容器
    每个Pod一个ip称为Pod ip
Pod的运行状态:
  • Pending:API Server已经创建Pod,但所需要的容器镜像还没有创建,或者正在下载
  • Running:Pod内所有容器都创建了,且至少一个容器处于运行状态、正在启动状态或者正在重启状态
  • Succeeded:Pod内所有容器都成功执行退出,且不会再重启
  • Failed:Pod内所有容器均已退出,但至少有一个容器退出为失败状态
  • Unknown:无法获取该Pod的状态
    Pod的重启策略(RestartPolicy)
  • Always:默认,当容器失效时,由kubelet自动重启该容器
  • OnFailure:当容器终止运行且退出码非0时,由kubelet自动重启该容器
  • Never:不重启
    Pod的健康检查
  • LivenessProbe探针:存活检测,如果LivenessProbe探针探测到容器不健康,则由kubelet将其杀掉,并根据重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为容器的LivenessProbe探针一直返回‘success’
  • ReadinessProbe探针:判断容器是否启动启动完成(ready),可以接收请求。如果ReadinessProbe探测到失败,则Pod的状态将被修改。Endpoint Controller将从Service的Endpoint中删除包含该容器所在Pod的Endpoint。
    Pod的调度:
  • NodeSelector:根据label调度
  • NodeAffinity:亲和性调度,更灵活
  • DaemonSet的Pod调度:在每个Node只运行一个Pod
  • Job批处理调度

RC:

主要功能之一是自动部署一个容器应用的多个副本,并持续监控副本数量,在集群内始终维持指定副本数

  • 通过定义RC实现Pod的创建及副本数量的自动控制
  • RC里包括完整的Pod定义模板
  • RC通过Label Selector实现对Pod副本的自动控制
  • 通过改变RC中Pod的副本数量,实现Pod的弹性伸缩
  • 通过改变RC里Pod模板的镜像版本,实现Pod的滚动升级

PV:

  • 可以理解为Kubernetes集群中某个网络存储中对应的一块存储
  • 只能是网络存储,不属于任何Node,但可以在每个Node上访问
  • 并不是定义在Pod上的,而是独立于Pod之外定义
  • PV目前只有几种类型:GCE Persistent Disks、NFS、RBD、iSCSCI、AWS EBS、GFS等

Service:

主要目的是在Pod对外服务的前端加一层负载均衡,因为Pod的ip地址可能是会改变。

相信技术的力量,原创技术文章,感谢您的支持!