一、什么是K8S?干什么的?
k8s全称(kubernetes),是一个docker容器管理工具,适合跑微服务架构。
假如在微服务,你有100万用户,是不是起码得100台云主机?100台云主机你怎么部署?运行着 ,主机停电死掉了,你怎么知道哪些死掉了?停机上的主机的服务是不是要移动到正常的主机上?100台主机的运维 K8S就诞生了!那么100台主机对于操作的人来说,也就相当于1台主机。
一开始只有docker,因为有docker才有k8s,k8s特点就是所有主机上都装上docker,然后用k8s把这些连接起来。
二、k8s的核心功能
- 自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。
- 弹性伸缩: 通过监控容器的cpu的负载值,如果这个平均高于80%,增加容器的数量,如果这个平均低于10%,减少容器的数量。
- 服务的自动发现和负载均衡: 不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个 DNS 名称,并可以在它们之间进行负载均衡。
- 滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。
三、k8s架构
k8s 集群的架构,从左到右,分为两部分,第一部分是 Master 节点(也就是图中的 Control Plane),第二部分是 Node 节点。
Master 节点一般包括四个组件,apiserver、scheduler、controller-manager、etcd,他们分别的作用:
- Apiserver:上连其余组件,下接ETCD,提供各类 api 处理、鉴权,和 Node 上的 kubelet 通信等,只有 apiserver 会连接 ETCD;
- Scheduler:调度,打分,分配资源;
- Controller-manager:控制各类 controller,通过控制器模式,致力于将当前状态转变为期望的状态;
- Etcd:整个集群的数据库,也可以不部署在 Master 节点,单独搭建。
Node 节点一般也包括三个组件,docker,kube-proxy,kubelet,他们分别作用:
- Docker:具体跑应用的载体;
- Kubelet:agent,负责管理容器的生命周期;
- Kube-proxy:主要负责网络的打通,早期利用 iptables,现在使用 ipvs技术。
总结一下就是 k8s 集群是一个由两部分组件 Master 和 Node 节点组成的架构,其中 Master 节点是整个集群的大脑,Node 节点来运行 Master 节点调度的应用。