Kubernetes基本概念

容器(container)是一种便携式、轻量级的操作系统级虚拟化技术。核心技术点:

这些特性使得容器可以方便的在任何地方运行。

优点

基本概念

Pod

Kubernetes使用Pod来管理容器,每一个Pod中可以运行多个容器(container)。

从设计上来讲,一个Pod是一组紧密关联的容器集合,容器之间共享PID、IPC、网络和namespace,是Kubernetes调度的最小单元;

Pod内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。

Kubernetes种使用manifest(支持yaml、json)来定义,以下是一个简单的nginx服务模板:

apiVersion: v1
kind: Pod	
metadata:
  	name: nginx
  	labels:
 app: nginx
spec:
containers:
- name: nginx
  image: nginx
  ports:
  - containerPort: 80

Node

Node是Pod运行的主机,可以是虚拟机,也可以是物理机。

每个Node必须要运行Container runtime(docker或者rkt)、kubelet、kube-proxy三个服务。

Namespace

Namespace是对一组资源和对象的抽象集合,pods, services, replication conrtroller, deployments都属于某一个namespace,node、persistentVolumes不属于任何namespace。

Services

Service是应用服务对象,通过Labels为应用服务提供负载均衡和服务发现。匹配labels的Pod IP和端口列表组成endpoint,由kube-proxy负责负载分发。

每个Service都会自动分配一个cluster IP(仅在集群内部可以访问的虚拟地址)和DNS名,其他容器可以通过该地址或DNS来访问服务。

Label

Label是识别kubernetes对象的标签,以key-value方式附加在对象上;

相同的标签认为是同一个应用;

用Label selector选择label组,支持以下几种方式:

Annotations

annotation用来记录一些附加信息,用来辅助应用部署、安全策略及调度策略,比如deployment用annotaion来记录rolling update的状态。

Table of Contents