简述ETCD及其特点?
ETCD是etcd的简称,是一个开源的分布式键值存储系统,常用于存储分布式系统中的关键数据。它由CoreOS团队开发并开源,具有以下特点:
- 简单:ETCD提供了简单易用的HTTP API,使用起来非常方便。
- 存储:数据以分层的形式存储在文件目录中,类似于我们日常使用的文件系统。
- Watch机制:可以Watch指定的键或前缀目录的更改,并对更改时间进行通知。
- 安全通信:支持SSL证书验证,保证通信的安全性。
- 高性能:ETCD单实例可以支持2K/s的读操作,官方也提供了基准测试脚本。
- 一致可靠:基于Raft共识算法,实现分布式系统内部数据存储、服务调用的一致性和高可用性。
- 完全复制:集群中的每个节点都可以使用完整的存档。
- 高可用性:ETCD可用于避免硬件的单点故障或网络问题。
- 一致性:每次读取都会返回跨多主机的最新写入。
- 快速:每秒10000次写入的基准速度。
由于ETCD的这些特性,它常常出现在分布式设计场景下的工具集中,如服务发现、配置中心等。
简述什么是键值对存储 ?
键值对存储是一种非关系型数据库,它将数据存储为键值对的形式。每个键都是唯一的,用于检索对应的值。这种存储方式适用于需要快速读取和写入数据的场景,但不适合复杂的查询。
简述Kubernetes和Docker的关系?
Kubernetes和Docker的关系可以理解为互补和竞争的关系。
首先,从技术层面来说,Docker是一个容器引擎,而Kubernetes则是一个编排调度层。Docker基于Linux Container技术,可以将一台机器的资源分成N份容器,实现资源的隔离,并将可运行的程序定义为标准的Docker镜像。而Kubernetes则可以将不同机器上的每份容器进行编排、调度,组成分布式系统。
然而,它们之间的关系并非完全互补。在系统三大移植资源(计算、存储、网络)中,从Kubernetes的角度看,Docker属于“Runtime(运行时)”,也就是计算资源。但实际上,Docker技术体系中也包括存储层和网络层。
综上所述,Kubernetes和Docker既有互补关系,也有竞争关系。
简述Kubernetes的常规组织架构 ?
Kubernetes的常规组织架构包括两类节点:Master和Node。
在Master节点上运行着etcd、API Server、Controller Manager和Scheduler四个组件。其中,etcd是高可用的键值存储系统,用于持久化存储集群中所有的资源对象,例如集群中的Node、Service、Pod、RC、Namespace等。API Server提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。Controller Manager负责维护集群的状态,例如故障。Scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。
每个Node节点上运行着Kubelet、Proxy和Docker Daemon三个组件。Kubelet负责对本节点上的Pod的生命周期进行管理,以及实现服务代理的功能。Proxy负责为Service提供内部的服务发现和负载均衡,并维护网络规则。Docker Daemon则负责容器的运行。
简述Kubernetes相关基础概念?
Kubernetes(通常称为K8s)是一个以容器为中心的基础架构,可以实现在物理集群或虚拟机集群上调度和运行容器,提供容器自动部署、扩展和管理的开源平台。满足了应用程序在生产环境中的一些通用需求,如应用实例副本、水平自动扩展、命名与发现、负载均衡、滚动升级、资源监控等。
此外,Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统,是Google在2014年开源的一个容器集群管理系统。Kubernetes简称K8S,用于容器化应用程序的部署、扩展和管理。K8S提供了容器编排、资源调度、弹性伸缩、部署管理、服务发现等一系列功能。
总的来说,Kubernetes目标是让部署容器化应用简单高效。
简述什么是容器编排 ?
容器编排指的是对一组容器以及关联资源进行定义、配置、创建、删除等工作的过程,这个过程由用户通过某些工具或配置来完成,并由云计算平台按照指定的逻辑来完成整个流程。具体来说,容器编排可以定义容器组织和管理规范,以使多个容器能够协同工作并按照计划运行。
在Kubernetes中,编排工作涉及自动化部署、扩展和管理容器化应用程序。主要目标是确保容器在集群中正确地部署、扩展和运行,并提供高可用性、负载均衡和故障恢复机制。
剖析kubeadm、Kubectl、Kubelet概念?
以下是kubeadm、kubectl和kubelet的概念剖析:
- kubeadm:kubeadm是Kubernetes社区提供的集群构建工具,负责构建一个最小化可用集群并执行启动等必要的基本步骤。它专注于在现有基础架构上引导Kubernetes集群启动并执行一系列基本的维护任务,其功能未涉及底层基础环境的构建,仅仅是为集群添加最为要紧的核心附件CoreDNS和kube-proxy。kubeadm的核心工具是kubeadm init和kubeadm join,前者用于创建新的控制平面节点,后者则用于将节点快速连接到指定的控制平面,它们是创建Kubernetes集群最佳实践的“快速路径”。
- kubectl:kubectl是Kubernetes的命令行工具(CLI),是Kubernetes用户和管理员必备的管理工具。kubectl提供了大量的子命令,方便管理Kubernetes集群中的各种功能。
- kubelet:kubelet是Kubernetes中的节点代理,它负责在每个计算节点上运行和管理容器。它是每个节点上Kubernetes核心组件之一,负责与Docker或其他容器运行时交互,以启动和管理由Kubernetes调度到该节点的容器。
简述Kubernetes常见的部署方式?
Kubernetes常见的部署方式主要有以下几种:
- 本地调试:通过minikube等工具,在单个节点上部署一个本地的Kubernetes集群,满足个人调试需求。
- 第三方工具托管:如果对Kubernetes集群有一定的部署要求,可以选择使用第三方工具托管集群的生命周期管理。
- 认证云平台托管:可以在公有云或者本地私有化环境中部署Kubernetes,这种部署方式的选择面比较广,能满足不同的需求。
总的来说,这些部署方式能够根据不同需求选择合适的方式部署和管理Kubernetes集群。
简述Kubernetes组件的架构模型 ?
Kubernetes的组件架构模型主要包含控制平面组件和Node节点组件。
控制平面组件是整个Kubernetes集群的核心,包括API Server、Controller Manager和Scheduler。这些组件负责集群的调度、状态管理和资源分配。API Server是Kubernetes集群的唯一入口点,负责处理所有对集群的操作请求,并维护集群的状态。Controller Manager负责监控集群状态,并通过自动化方式将集群维持在预期的状态。Scheduler则负责按照预定的调度策略将Pod调度到相应的机器上。
Node节点组件则负责在每个计算节点上运行和管理容器。这些组件包括Kubelet、Proxy和Docker Daemon等。Kubelet负责管理Pod的生命周期,同时代理和封装了容器相关的操作请求,例如创建、删除、暂停等。Proxy则负责为Service提供内部的服务发现和负载均衡,并维护网络规则。Docker Daemon则负责容器的运行。
此外,Kubernetes的架构还包括一些附加组件,如KubernetesDNS服务器、Ingress控制器、Heapster和容器网络接口插件等,这些组件为Kubernetes提供了额外的功能和扩展性。
总的来说,Kubernetes的组件架构模型通过解耦控制逻辑和执行逻辑,实现了集群的高可用性和可扩展性。
简述kubernetes的Master组件-kube-controller-manager作用 ?
kube-controller-manager是Kubernetes中的一个重要组件,它运行在主节点上,负责管理和控制集群中的许多不同的控制器,以确保它们按照预期运行。
kube-controller-manager的作用是管理Kubernetes集群中的多个控制器,这些控制器包括副本集控制器、副本控制器、节点控制器、服务控制器和端点控制器等。这些控制器负责处理集群中常规任务的后台线程,当集群中的资源发生变化时,它们会尝试将系统状态修复到“期望状态”。
kube-controller-manager采用主从架构,其中有一个主节点和多个从节点。主节点负责管理集群中的所有控制器,并在需要时将任务委派给从节点。这种架构确保了集群的高可用性和可扩展性。
kube-controller-manager通过API Server提供的接口实时监控整个集群的每个资源对象的当前状态,当发生各种故障导致系统状态发生变化时,会尝试将系统状态修复到“期望状态”。
总的来说,kube-controller-manager是Kubernetes中非常重要的一个组件,它确保了集群的高可用性和可扩展性。
简述kubernetes的Master组件-etcd(存储中心)作用 ?
etcd在Kubernetes中作为数据存储后端,主要用于存储集群的配置数据和状态信息。
etcd是一个快速、分布式、一致的键值存储系统,被设计用于构建强大的分布式系统。在Kubernetes中,etcd存储了所有的配置信息和状态数据,使得Kubernetes能够保持集群状态的一致性。
etcd的高可用性和数据持久性确保了Kubernetes集群的可靠性和可扩展性。此外,etcd自动处理数据同步和故障恢复,这对于一个生产级别的容器编排系统来说是至关重要的。
简述kubernetes的Node组件-kubelet作用 ?
Kubelet是Kubernetes集群中的重要组件,它运行在每个Node节点上,负责处理由Master节点下发的任务,并管理Pod及Pod中的容器。
Kubelet的主要功能包括:监视分配给该Node节点的Pods,挂载Pod所需要的Volumes,下载Pod的Secret,通过Docker/rkt来运行Pod中的容器,调用CNI接口为Pod创建IP、路由,周期的执行Pod中为容器定义的Liveness探针,上报Pod的状态给系统的其他组件,以及上报Node的状态。
Kubelet是Kubernetes集群中不可或缺的一部分,它确保了集群的正常运行和高效管理。
简述k8s中命名空间的作用 ?
Kubernetes中的命名空间是一种抽象概念,用于隔离和管理集群资源。主要有以下作用:
- 资源隔离:通过将集群资源划分为不同的命名空间,可以实现资源的隔离,确保各个命名空间中的资源互不干扰。每个命名空间中的资源(例如Pod、Service、ConfigMap等)都属于该命名空间,默认情况下不能直接访问其他命名空间中的资源。这有助于避免资源之间的冲突和干扰。
- 多租户支持:通过使用命名空间,可以在同一个Kubernetes集群中支持多个租户或团队。每个租户或团队可以在自己的命名空间中独立地管理和部署他们的应用程序,而不会相互干扰。这有助于提高资源的利用率和灵活性。
- 访问控制和权限管理:命名空间提供了一种在集群中实施访问控制和权限管理的机制。可以为每个命名空间设置不同的访问策略和权限,以限制不同团队或租户对资源的访问和操作。这有助于确保安全性和数据隔离。
- 资源管理和监控:通过将相关的资源放置在同一个命名空间下,可以更方便地进行资源管理和监控。可以针对每个命名空间进行资源配额和限制,以确保合理使用集群资源。
总的来说,Kubernetes中的命名空间为集群提供了一种虚拟隔离的策略,有助于实现资源的隔离、多租户支持、访问控制和权限管理以及资源管理和监控等功能。
简述Kubernetes核心概念 ?
Kubernetes的核心概念主要包括:
- 容器编排:Kubernetes是一个自动化的容器编排平台,负责应用的部署、应用的弹性以及应用的管理,这些都是基于容器的。它可以简称为 “k8s”,是将中间8个字母“ubernete”替换为“8”导致的一个缩写。
- POD:POD是Kubernetes的基本调度单位。每个POD中可以运行一个或多个容器,共享POD的文件系统、IP和网络等资源,每一个POD只有一个IP。
- 服务发现与负载均衡:Kubernetes的服务发现与负载均衡功能使得应用能够自动地找到其他服务,并通过Kubernetes进行负载均衡。
- 存储编排:Kubernetes会帮助做存储的编排,让存储的生命周期和容器的生命周期能有一个连接。
- 自动恢复:Kubernetes会做自动化的容器恢复,对不可用的容器进行恢复。
- 自动发布与回滚:Kubernetes支持应用的自动发布与自动回滚,以及应用相关的配置密文的管理。
- 批量执行:对于job类型的任务,Kubernetes可以做批量执行。
- 水平伸缩:Kubernetes会监测业务上所承担的负载,如果某个业务的CPU利用率过高或者响应时间过长,可以对这个业务进行一次扩容。
- 架构:Kubernetes架构是一个典型的二层架构和server-client架构。Master作为中央的管控节点,会与node进行连接。
由于内容太多,更多内容以链接形势给大家,点击进去就是答案了
22. 简述就绪探针(ReadinessProbe探针)与存活探针(livenessProbe探针)区别是什么?
23. 简述 K8S 创建一个pod的详细流程,涉及的组件怎么通信的?
27. 简述Service的域名解析格式、Pod的域名解析格式 ?
30. 阐述应用Pod是如何发现Service或Pod里面的容器用于是如何连接Service的?
33. 无头service和普通的service有什么区别 ?
36. 简述kube-proxy ipvs和iptables的异同?
37. 简述Kubernetes deployment升级策略?
39. 简述Kubernetes Headless Service?
45. 简述Kubernetes Scheduler作用及实现原理?
46. 简述Kubernetes Scheduler使用哪两种算法将Pod绑定到worker节点?
49. 简述Kubernetes PodSecurityPolicy机制?
50. 简述Kubernetes Calico网络组件实现原理?
54. 简述Kubernetes Pod如何实现对节点的资源控制?
55. 简述Kubernetes中,如何使用EFK实现日志的统一管理?
56. 简述Kubernetes如何进行优雅的节点关机维护?
61. 简述Kubernetes与Docker Swarm的区别 ?
65. 简述K8S yaml template命名和注释规范?
66. 简述K8S yaml template安全和可靠性规范 ?