1、什么是kubernetes?
(1)kubernete 是一个全新的基于容器技术的分布式领先架构
(2)kubernete 是一个开放的开发平台,不局限于任何一种语言,不论是C,Java,Python 编写的任何服务,最终都会被映射为kubernete的Server,并通过标准的TCP进行交互
(3)kubernete 是一个完备的分布式系统支撑平台
总结:kubernete是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式完备的分布式系统开发和支撑平台。
2、为什么使用kubernetes?
在当前,docker这门容器化技术已经被越来越多的公司所采用,从单机走向集群已经成为必然。而kubernetes作为当前被业界普遍认可和看好的机遇docker的大规模容器化分布式系统解决方案,得到了以谷歌为首的巨头们的大力宣传和推进。
3、为什么使用docker?
企业使用一项技术是为了解决当前企业环境中存在的某个痛点。目前整个软件行业存在着以下几个痛点。
(1)软件更新发布及部署低效,过程烦琐且需要人工介入。
(2)环境一致性难以保证。
(3)不同环境之间迁移成本太高。
Docker 在很大程度上解决了上述问题。
首先,Docker 的使用十分简单,从开发的角度来看就是“三步走”:构建、运输、运行。其中,关键步骤是构建环节,即打包镜像文件。但是从测试和运维的角度来看,那就只有两步:复制、运行。有了这个镜像文件,想复制到哪里运行都可以,完全和平台无关。
Docker 这种容器技术隔离出了独立的运行空间,不会和其他应用争用系统资源,不需要考虑应用之间的相互影响。
其次,因为在构建镜像时就处理完了服务程序对于系统的所有依赖,所以在使用时,可以忽略原本程序的依赖以及开发语言。对测试和运维人员而言,可以更专注于自己的业务内容。
最后,Docker 为开发者提供了一种开发环境的管理办法,帮助测试人员保证环境的同步,为运维人员提供了可移植的标准化部署流程。
4、kubernetes和docker有什么关系?
众所周知,Docker提供容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用Kubernetes。因此,我们说Docker构建容器,这些容器通过Kubernetes相互通信。因此,可以使用Kubernetes手动关联和编排在多个主机上运行的容器。
5、kubernete 核心组件以及他们的作用是什么?
kubernete的核心由master和node节点组成。master节点由kube-apiserver、kube-controller-manager和kube-scheduler组成,node节点主要由kubelet、docker以及kube-proxy组成,这些进程实现了整个集群的资源管理、pod调度、弹性伸缩、安全控制、系统监控和纠错的功能,并且都是自动完成的,在node节点上运行着kube-proxy、kubelet等服务进程,这些进程负责着pod的创建、启动、监控、销毁以及实现软件模式的负载均衡
K8S Master节点:
Kube-apiserver:主要提供了k8s对外唯一的接口,提供HTTP/HTTPS RESTful类型的接口,也就是Kubernetes api ,所有的请求都需要经过这个 接口进行通讯,主要用于REST操作(get、put、post、delete)以及更新ETCD中的对象,是资源增删改查的唯一入口
Kubernete-scheduler:资源调度,负责决定将pod放在哪一个节点上运行。scheduler会在调度的时候对集群的结构进行分析,当前节点的负载,以及对高可用和性能等方面的需求。
Kube-conroller-manager:负责管理集群的各种资源,确保集群的资源处于预期中的状态。controller-manager由多种controller组成,包括replication-controller、endpoint-controller、namespapces、controller、serviceaccounts controller等
Etcd:负责保存k8s集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速的通知k8s组件
Pod:pod之间要能够互相通讯,k8s集群必须部署pod网络,fannel是一种可行的方案
K8S Node节点:
Kubelet:kubelet是node的agent,当scheduler确定某一个pod在哪个节点上运行的时候,会将pod的具体信息(image、volume)等发给该节点的kubelet,kubelet会根据这些信息监控每个运行的容器,并向master报告运行状态。
Kube-proxy:其实可以将kube-proxy理解为service,主要用于请求转发。servcice代表了后端的多个pod,外界通过servic来访问pod。service收到请求之后就需要kube-proxy来完成转发,在每一个node节点都会运行kube-proxy,该服务将访问service的TCP/UDP数据转发到后端的容器,如果有多个副本,kube-proxy会实现负载均衡,有两种方式:LVS和Iptables
6、Replica Set 和 Replication Controller之间有什么区别?
Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。
1.rs是rc的升级版本,rs一般会结合deployment
2.rc的pod如果要配置镜像等内容,要修改后删除原来的rc再创建 命令式,影响业务比较大
3.rs一般配合deployment,可以动态修改deployment的配置,apply后直接更新到最新版本,影响在线业务比较小 API声明式的
4.ReplicaSet(RS)是Replication Controller(RC)的升级版本。ReplicaSet 和 Replication Controller之间的唯一区别是对选择器的支持。ReplicaSet支持labels user guide中描述的set-based选择器要求, 而Replication Controller仅支持equality-based的选择器要求。
7、什么是Kubectl?
Kubectl是一个平台,您可以使用该平台将命令传递给集群。因此,它基本上为CLI提供了针对Kubernetes集群运行命令的方法,以及创建和管理Kubernetes组件的各种方法。
8、什么是Kubelet?
这是一个代理服务,它在每个节点上运行,并使从服务器与主服务器通信。因此,Kubelet处理PodSpec中提供给它的容器的描述,并确保PodSpec中描述的容器运行正常。
9、什么是ETCD?
Etcd是用Go编程语言编写的,是一个分布式键值存储,用于协调分布式工作。因此,Etcd存储Kubernetes集群的配置数据,表示在任何给定时间点的集群状态。
10、
10、kubernetes的负载均衡
负载均衡器是暴露服务的最常见和标准方式之一。根据工作环境使用两种类型的负载均衡器,即内部负载均衡器或外部负载均衡器。内部负载均衡器自动平衡负载并使用所需配置分配容器,而外部负载均衡器将流量从外部负载引导至后端容器。

本文概述了Kubernetes作为容器化分布式系统的基石,其在解决企业痛点(如高效部署、环境一致性)中的作用,与Docker的关系,以及核心组件如Kubelet、Etcd和负载均衡的重要性。详细解析了ReplicaSet与ReplicationController的区别,并介绍了kubectl的命令行工具。
824

被折叠的 条评论
为什么被折叠?



