Kubernetes的API对象
Namespace:名称空间
实现同一集群上的资源隔离(逻辑隔离)一个名称空间内不可创建相同名称的pod,但是不同名称空间可以
Pod
K8s的最小运行单元(Pod里面运行容器,可运行多个,一般一个Pod运行一个容器)
ReplicaSet
pod的上层管理,来控制pod的调度,守护或者负责一些服务的数量,实现pod平滑迭代更新及回滚用,
这个不需要我们实际操作.在上面有个更上层的Deployment来管理它,
当我们部署一个Deployment的时候会生成一个ReplicaSet会去生成对应数量的pod
Deployment
在k8s用来发布无状态应用,这个应用在容器里面可以直接跑,可以横向扩容,不是有状态的,什么是有状态?
比如我们要在k8s上跑一套redis clust集群,redis clust的集群相互之间的pod他就会有一些状态去关联,
每个redis都需要知道谁是master谁知slave.正常来说我们业务服务的话大部门都是无状态的.
Health Check
健康检测,对于一个业务服务在k8s的话必须要有这个机制去检测这个服务是否为正常,如果没有正常运行,
k8s会做出一些相应的策略,比如去重启,把流量断掉不让客户的流量进来
Readiness/Liveness/maxSurge/maxUnavailable 服务健康状态检测
Service和Endpoint
实现同一个lables下的多个pod流量负载均衡
Service可以理解为k8s内部服务某个对应服务的抽象的负载均衡,实现内部多个pod,比如A服务有10个pod,
那10个pod我们怎么去使流量负载均衡到每个pod,就需要通过Service来的
Endpoint不需要自己去创建的,他是有Service去关联的,我们通过Service对应的Endpoint下面找对应的pod
Labels
Ingress
服务在k8s发布上后,实际上只能通过k8s节点在内部访问的,业务需要在公网提供访问的话,
就必须要这个Ingress提供一个流量入口去访问我们具体的pod上去
DaemonSet
用来发布守护应用,例如我们部署的CNI插件
在每一个节点上部署类似于客户端的东西,比如我们要部署一个日志收集的组件,agent,
那么我们用这个就比较合适了,他的话会在每一天node上去跑一个数量的pod不会跑多,
也不会跑少,每台节点上一个
HPA
Horizontal Pod Autoscaling 自动水平伸缩
比如我定义当使用的资源达到百分之70我就进行扩容,扩容多少,比如说这波流量高峰过去之后,
我们cpu降下来了,我定义一个最小收回多少,比如最小收回到5个,他就跑五个,比如有活动,流量多,
扩容到100个pod,200个都是可以的,合理利用资源,也不会长期占用
Volume
PV、PVC、StorageClass
StatefulSet
job,CronJob
一次性任务及定时任务fuwu
有时候我们只需要服务跑一次,对于临时的服务
如果我们每天要在凌晨一点做一个数据库备份,我们就可以在k8s上跑cronjob
Configmap,serect
服务配置及服务加密配置
ConfigMap在Kubernetes中的作用是用来存储非敏感性配置数据的键值对,以供Pod中运行的容器使用。
secrect与Configmap类似但这是秘密的,比如数据库账号密码这些隐私的配置我们通常用Secrect去配置,
他会在k8s上生成一些密文的
kube-proxy
提供service服务流量转发的功能支持,这个不需要我们实际
RBAC, serviceAccount, role, rolebindings, clusterrole, clusterrolebindings
基于角色的访问控制
默认的安全机制
RBAC类似Linux中sudo权限
Events
K8s事件流,可以用来监控相关事件用,这个不需要我们实际操作