k8s 概念总结
MASTER节点
- Kubernetes API Server:提供 REST接口服务,是所有资源增删改查、集群控制的统一入口。
- kubernetes Controller Manager:所有资源对象的自动化控制中心。
- kubernetes Scheduler:负责资源调度。
- ETCD:数据保存
NODE 节点
- Kubelet :负责Pod对应容器的创建,启停等任务。与master节点密切协作。
- kube-proxy:实现kubernetesservice通信、负载均衡等。
- Docker Engine: 本机容器管理。
资源
POD
容器组,由pause容器和一个或多个用户容器组成,用户容器共享pause容器的IP、volume。
有两种类型的pod:普通的pod和静态pod、普通pod存储在etcd中,被调度到节点运行,静态pod存在某个具体node的一个具体文件中。RC
replication controller,它定义了一个期望的场景:
::replicas:pod期待的副本数量 。
::selector:用于筛选目标pod的label selector。
::template:用于创建pod的模板。当副本数量小于预期值时,用模板创建pod
replica set 下一代RC,支持基于集合的selector,RC仅支持等式的selectorDeployment
类似于RC、相似度90%。相当于openshift 的DC。Service
::service 定义了一个服务的访问入口地址,通过label selector与后端pod无缝对接。
::通过节点上的kube-proxy进程实现软件负载均衡器,把service请求发送到后端pod。
::服务发现:每个service生成一些对应的环境变量,在每个pod启动时自动注入环境变量。
::外部系统访问service:通过NodePort把service 端口暴露到node上。Volume
::volume:是pod中能够被多个容器访问的共享目录,定义在pod上,属于计算资源的一部分。
::persistent volume:独立的网络存储资源,不属于任何node,但都可以访问。
::PVC:如果某个pod想申请pv,首先需要定义一个pvc,persistent volume claim。Horizontal Pod Autoscaler
横向自动扩容缩容,两种方式实现pod负载度量指标,实现自动扩容:
::CPUUtilizationPercentage
::应用程序自定义的度量指标ConfigMap
供容器使用的配置文件,生成容器内的环境变量或者挂载为容器内部的文件或目录。DaemonSet
适用于:
每个node上运行的一个glusterFS或Ceph存储
每个node上运行的日志采集系统
每个node上运行的一个监控系统
SERVICE详解
1、创建服务:
- kubectl expose rc rcname
- yaml文件,通过 kubectl create -f name.yaml
2、多端口服务,多协议服务
ports:
- name: web
port: 80
protocol: TCP
targetPort: 8080
- name: dns-udp
port: 8081
protocol: UDP
targetPort: 8081
3、外部服务
通过无 label selector的服务,然后手动创建一个和该sevice同名的endpoint,用于指向后端访问地址。
endpoint文件如下:
apiVersion: v1
kind: Endpoints
metadata:
labels:
app: straw
name: straw
subsets:
- addresses:
- ip: 10.130.3.242
ports:
- name: straw
port: 8001
protocol: TCP
4、负载均衡
service 默认提供负载均衡功能,开发人员也可以自己控制负载均衡策略,headless service(无头服务),即不为service设置cluster ip入口地址,仅通过 label selector将后端的pod列表返回给client。
5、集群外部访问pod或service
- 通过设置容器级别的hostport,将容器应用的端口号映射到物理机
- 通过设置pod级别的hostNetwork=true,该pod中的所有容器的端口号都将被直接映射到物理机上。
- 将service的端口号映射到物理机,nodePort方式和LoadBalancer两种方式
6、DNS服务搭建
k8s提供的虚拟DNS服务名为skydns
- etcd:dns存储
- kube2sky:将k8s master 中的服务注册到etcd
- skyDNS:提供DNS域名解析服务。
- healthz:提供skyDNS服务的健康检查。