Kubernetes介绍
- 参考:Kubernetes核心组件解析
- Pod是k8s的最小调度单元
- 每个pod有独立的IP,但是pod的IP是不可靠的,重新调度pod就会改变IP,service概念就是为了解决这些问题。
- 给service会分配虚拟IP即ClusterIP,通过ClusterIP和端口,访问会自动负载均衡到后端的pod上。
- 目前k8s提供两种负载均衡策略:RoundRobin和SessionAffinity。
- RoundRobin:轮询模式
- SessionAffinity:基于客户端IP的会话保持
- 也可以通过Headless Service的概念,不设置ClusterIP只给出后端Pod列表,由用户自己选择。
- service也可以不绑定选择pod,单独定义Endpoints类型的资源来提供服务。即可实现跨namespace的服务访问。
- Pod和Service都是集群内的虚拟概念,包括IP等信息。故集群外部无法访问Pod或Service,可以将端口映射到宿主机实现访问。
基本资源类型
- Kubernetes中StatefulSet介绍
- Kubernetes中的亲和性与反亲和性对应于pod调度到那些node节点上。
- Kubernetes1.3新特性:POD中的初始化容器,该文介绍了初始化容器的类结构,及相关特性。
- 下文基于kubernetes 1.5.2版本编写
- 概念:Init Container就是做初始化工作的容器。可以有一个或多个,如果有多个,这些 Init Container 按照定义的顺序依次执行,只有所有的InitContainer 执行完后,主容器才启动。由于一个Pod里的存储卷是共享的,所以 Init Container 里产生的数据可以被主容器使用到。
- Init Container可以在多种K8S资源里被使用到如Deployment、DaemonSet, PetSet/StatefulSet、Job等,但归根结底都是在Pod启动时,在主容器启动前执行,做初始化工作。
- k8s init-Containers,该文使用的k8s版本是1.9
- 官方关于init-containers的说明:Init Containers
cron Job类型
- 该文更新,参考:Kubernetes中的Job和CronJob,批量任务执行
- 该文老旧,不宜参考。参考:Kubernetes的Cron Job定时任务小试