Kubernetes是容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
Kubernetes可以在物理或虚拟机的Kubernetes集群上运行容器化应用,Kubernetes能提供一个以“容器为中心的基础架构”
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。
Kubernetes对象是Kubernetes系统中的持久实体,Kubernetes使用这些实体来表示集群的状态。
这些实体可以描述为:
每个对象都包含连个嵌套对象字段:spec和status
spec:Spec描述了对象所需的状态 - 希望Object具有的特性。
status:Status描述了对象的实际状态,并由Kubernetes系统提供和更新。
Kubernetes可以使用Namespaces创建多个虚拟集群。
默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中的应用来说面临两个问题:
1.当容器挂掉kubelet将重新启动它时,文件将会丢失
2.当Pod中同时运行多个容器,容器之间需要共享文件时
volume就解决了这两个问题。
要使用Volume,pod需要指定Volume的类型和内容(spec.volumes字段),和映射到容器的位置(spec.containers.volumeMounts字段)。
Node是Kubernetes中的工作节点,最开始被称为minion。一个Node可以是VM或物理机。每个Node(节点)具有运行pod的一些必要服务,并由Master组件进行管理,Node节点上的服务包括Docker、kubelet和kube-proxy。
Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。
一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。
在用户定义范围内,如果pod增多,则ReplicationController会终止额外的pod,如果减少,RC会创建新的pod,始终保持在定义范围。例如,RC会在Pod维护(例如内核升级)后在节点上重新创建新Pod。
Deployment为Pod和Replica Set(升级版的 Replication Controller)提供声明式更新。
你只需要在 Deployment 中描述您想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。
查看创建的rc : #kubectl get rc
查看创建的pod : #kubectl get pods
查看创建的service :kubectl get svc