1. k8s是什么?
k8s是kubernetes的全称,用于自动部署,扩缩和管理容器化应用程序的开源系统。
Docker :作为开源的应用容器引擎,可以把应用程序和其相关依赖打包生成一个Image镜像文件,是一个标准的运行环境,提供可持续交付的能力;
kubernetes:作为开源的容器编排引擎,用于对容器化应用进行自动化部署,扩缩和管理。
1.2 k8s核心特性:
-服务发现和负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。
-存储编排:自动挂载所选存储系统,包括本地存储;
-secret和配置管理:部署更新secrets和应用程序的配置是不必重新构建容器镜像,且不必讲软件堆栈配置中的秘密信息暴露出来。
-批量执行:除了服务之外,k8s还可以管理你的批处理和CI工作负载,在期望时替换掉失效的容器。
-水平扩缩:使用一个简单的命令,一个UI或基于cpu使用情况自动对应程序进行扩缩。
-自动化上线和回滚:k8s会分步骤地针对应用或其配置的更改上线,同事监视应用程序运行状况以确保你不会同时终止所有实例。
-自动装箱:根据资源需求和其他约束自动放置容器,同事避免影响可用性。
-自动修复:重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不想赢用户定义的健康检查的容器。
1.3 k8s核心架构:
k8s:自动化运维管理多个容器化程序;
k8s是属于Master-worker架构;即有master节点负责核心的调度,管理和运维,worker节点执行用户的程序。在k8s中,主节点一般称为master node ,从节点被称为worker node或node,
注意:master node 和worker node是分别安装了k8s的master和woker组件的实体服务器,每个node对应了一台实体服务器,所有master node和worker node组成了k8s集群,同一个集群可能存在多个master node和worker node。
master node有哪些组件:
1. kube-apiserver,k8s的请求入口服务,api server 负责接收k8s所有请求(来自ui界面或者cli命令行工具),然后,api server 根据用户的具体请求,去通知其他组件干活。
2. scheduler,k8s所有worker node的调度器。当用户要部署服务时,scheduler 会选择最合适的worker node(服务器)来部署。
3. controller manager:k8s所有worker node 的监控器。Controller Manager有很多具体的controller,node Controller, service controller,volume controller等。Controller负责监控和调整在worker node上部署的服务的状态,比如用户要求A服务部署两个副本,那么当其中一个服务挂掉后,controller会马上调整,让scheduler再选择一个worker node重新部署服务。
4. etcd: k8s的存储服务。etcd存储了k8s的关键配置和用户配置。k8s仅API SERVER才具备读写权限,其他组件必须通过api server 的接口才能读写数据。
worker node有哪些组件?
1. kubelet worker node的监视器,以及与master node的通讯器。kubelet是masternode安插在worker node上的“眼线”,它会定期向master node 汇报自己node上运行的服务的状态,并接受来自Master node的指示采取调整措施。负责控制所有容器的启动停止,保证节点工作正常。
2. kube-proxy: k8s的网络代理,kube-proxy负责node在k8s的网络通讯,以及对外部网络流量的负载均衡。
3. container runtime,Worker Node的运行环境,即安装了容器化所需的软件环境确保容器化程序能够跑起来 ,比如Docker Engine运行环境。
疑问:
节点:
服务发现和负载均衡?
pod,多实例?
Ingress, service,