kubernetes基础概念总结
简介
kubernetes是由google主导开发的开源容器管理平台,提供多主机集群,容器编排,容器伸缩等功能
基础组件介绍
docker
容器运行环境的一种实现,封装底层容器
etcd
etcd是kubernetes集群用来存储集群相关数据的数据仓库
master节点组件
master节点是主集群中的大脑,负责处理外部的api请求,分配调度任务以及管理容器的副本数等
kube-apiserver
kubernetes对外的服务入口,其他组件通信的纽带,服务无状态,可水平扩容
kube-scheduler
- 负责pod的任务调度
kube-controller-manager
- 处理
node节点当机情况 - 负责保证pod的副本数
- 管理endpoint,连接service和pod
- 为新namespace创建默认api token和accounts
node节点组件
node节点负责干活,执行master节点指派的相关任务
kubelet
- 负责启动停止容器,保证容器运行。
kube-proxy
- 负责根据service生成网络规则,生成路由规则
组件通信
架构图

组件间的通信全依赖于kube-apiserver,其他组件通过http协议与kube-apiserver交互。
当使用kubectl或者直接调用kube-apiserver提供的api请求创建pod里和service时工作流程如下:
-
kube-apiserver把相关的pod和service配置存储到etcd中 -
kube-scheduler从kube-apiserver获取到相关pod的配置,根据集群中的资源和条件限制把pod调度到相应的node节点上 -
kube-controller-manager从kube-apiserver获取到相关pod和service的配置,定期检查pod的状态,保证有用户配置的足够数量的pod副本在运行,生成service到pod的规则关系。 -
kubelet从kube-apiserver获取分配到本节点的相关pod配置,在本地启动容器并定期检查返回容器状态 -
kube-proxy从kube-apiserver获取service到pod的规则,在本节点维护iptable或者ipvs相关路由规则
基础概念
pod
-
kubernetes的最小调度单元,一个pod中可以有多个容器,多个容器共享网络和存储卷
service
-
kubernetes抽象出来一个概念,可以理解为负载均衡器,后端接pod
cluster ip
- service在集群中的ip,相当负载均衡器的ip
ingress
- 对集群外部暴露集群内部service的一种方式
nodeport
- 对集群外部暴露服务的第二种方式,跟随service配置,让集群中的
node节点都监听相应的端口,可以通过node节点访问集群内部service
loadbalancer
- 对集群外部暴露集群内部service的一种方式,一般只有在云平台才能使用
deployment
- 封装了
pod/replicaset,可以实现指定pod副本数量,滚动更新,扩容pod,一般一个应用(服务)一个deployment
statefullSet
- 相当于有状态服务的
deployment,重启后,主机名和pod的名称不会改变
daemonSet
- 在每个
node节点都需要运行的pod可以使用daemonSet
job
- 一次性任务
cronJob
- 类似于
crontab定时执行任务
dns
-
kube-dns/coredns提供集群中的dns服务,可以解析service到cluster ip,实现服务发现
pv
- 管理员用来提前创建好的存储空间,供用户申请使用
pvc
- 用户用来申请存储空间
storageClass
- 定义存储类供pvc使用,当用户通过pvc并指定
storageClass请求pv时kubernetes可以根据storageClass动态创建pv
排错技巧
查看日志
查看pod日志
- kubectl logs pod-name
查看事件
- kubectl describe pod-name
查看docker日志
-
通过
kubectl get pod -o wide找到容器运行的node节点 -
在
node节点上通过docker ps -a找到出错的容器 -
docker logs container-id
查看kubelet及其他组件日志
- journalctl -u kubelet

浙公网安备 33010602011771号