云计算、Docker、K8S问题

news2024/11/28 10:57:47

1 云计算

云计算作为一种新兴技术,已经在现代社会中得到了广泛应用。它以其高效、灵活和可扩展特性,成为了许多企业和组织在数据处理和存储方面的首选方案。

1.1 什么是云计算?它有哪些特点?

云计算是一种通过网络提供计算资源和服务的技术。它的特点包括可扩展性、虚拟化、自动服务、按需付费和灵活性等。云计算可以根据用户的需求提供弹性的计算资源,并且用户无需担心硬件和软件的管理问题。

1.2 请解释一下云计算中的公有云和私有云

公有云是指由第三方服务提供商管理和维护的云计算平台,该平台向不同的用户提供计算资源和服务。私有云是指由企业或组织自行搭建和管理的云计算平台,该平台主要为企业内部员工提供服务。

1.3 云计算的IaaS、PaaS、SaaS分别是什么?

  • IaaS(基础设施即服务)是云计算提供的最底层的服务模式,它为用户提供了虚拟的计算资源和网络基础设施;
  • PaaS(平台即服务)是建立在IaaS之上的服务模式,它提供了更高层次的服务,包括开发环境、数据库和中间件等;
  • SaaS(软件即服务)是最顶层的服务模式,它提供了完整的软件应用,用户可以通过云平台直接使用这些应用而无需进行复杂的安装和配置。

1.4 请简要介绍一下云计算的虚拟化技术

虚拟化技术是云计算中的关键技术之一,它将硬件资源进行抽象和隔离,使得多个虚拟的计算实例可以运行在同一台物理机上。通过虚拟化技术,用户可以更加灵活地调配和管理计算资源,提高硬件利用率和系统的可靠性。

1.5 请描述一下云计算中的高可用性和容灾的概念

云计算中的高可用性是指系统能够保持长时间的连续运行,即使遇到一次性的故障也能快速恢复。容灾则指系统在遭受灾难性故障后能够安全地备份和恢复数据以及业务,确保在灾难发生后能够迅速恢复正常运营。

1.6 请说明云计算对企业的益处

云计算可以帮助企业降低IT成本,增加IT资源的利用效率,并提高生产力。他们提供弹性的计算资源,并且按需付费,使得企业可以根据实际需求来购买和使用计算资源,避免了浪费和过度投资。此外,云计算还可以提供更高的可靠性和安全性,通过数据备份和容灾措施,确保企业的业务不会受到意外事件的影响。

1.7 请提及几个常见的云计算平台

常见的云计算平台包括Amazon Web Service(AWS)、Microsoft Azure、Google Cloud Platform(GCP)和阿里云等。这些平台提供了广泛的云计算服务和解决方案,可以满足不同类型企业的需求。

云计算已经从物理机到虚拟机,再从虚拟机到容器,提到当前最新的容器化技术就不得不提Docker和Kubernetes技术了。
在这里插入图片描述

2 Docker

Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职。下图是它的总体架构图:
在这里插入图片描述

  1. 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。
  2. Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受Docker Client 的请求。
  3. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。
  4. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graphdriver将下载镜像以 Graph 的形式存储。
  5. 当需要为 Docker 创建网络环境时,通过网络管理驱动 Networkdriver 创建并配置 Docker容器网络环境。
  6. 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Execdriver 来完成。
  7. Libcontainer 是一项独立的容器管理包,Networkdriver 以及 Execdriver 都是通过Libcontainer 来实现具体对容器进行的操作。

2.1 什么是Docker?

Docker是一个开源的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,从而在任何Docker运行的环境中实现一致的运行。

2.2 Docker容器和虚拟机的区别是什么?

Docker容器在操作系统级别进行虚拟化,共享宿主机的内核,而虚拟机在硬件级别进行虚拟化,拥有独立的内核。容器通常更轻量级、启动更快,资源占用更少。

2.3 什么是Docker镜像?

Docker镜像是一个轻量级、只读的模板,用于创建Docker容器。它包含运行容器所需的代码、库、环境变量和配置文件。

2.4 如何创建Docker容器?

可以使用docker run命令来从镜像创建容器。例如,docker run -d -p 80:80 nginx会基于nginx镜像启动一个新的容器,并将容器的80端口映射到宿主机的80端口。

2.5 Docker Hub是什么?

Docker Hub是一个公共的容器镜像仓库,可以用来存放、分享和管理Docker镜像。用户可以从Docker Hub下载公共镜像或上传自己的私有镜像。

2.6 Docker的默认网络模式有哪些?

Docker的默认网络模式包括bridge、none、host和container。每种模式提供不同级别的网络隔离和互连。

  1. bridge(桥接)模式:这是Docker的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥。容器通过这个虚拟网桥进行通信,可以互相访问。这种模式的好处是网络性能比host模式的好。
  2. host(主机)模式:在这种模式下,Docker容器将共享主机的网络命名空间,这意味着容器将直接使用主机的网络栈,而不需要进行任何网络配置。容器可以访问主机的网络服务,如DNS和HTTP/HTTPS等。但是,由于容器和主机共享网络命名空间,因此可能会对主机的网络稳定性造成影响。
  3. none(无网络)模式:在这种模式下,Docker容器没有自己的网络命名空间,也没有自己的IP地址。这种模式通常用于需要自定义网络配置的场景,例如使用自定义bridge或overlay网络等。
  4. container(容器)模式:在这种模式下,Docker容器将使用另一个已存在的容器的网络命名空间,这意味着容器将共享同一个网络命名空间。这种模式通常用于需要将多个相关的容器组织在一起的场景,例如使用DockerCompose进行容器编排等。

2.7 如何创建Docker网络?

使用docker network create命令可以创建Docker网络。例如,docker network create --driver bridge my_bridge_network创建了一个bridge类型的网络。

2.8 Docker容器间通信是如何工作的?

容器可以通过Docker网络进行通信。在同一网络中的容器可以使用容器名称互相解析,实现容器间通信。

2.9 什么是Docker Compose?

Docker Compose是一个工具,用于定义和运行多容器Docker应用程序。

2.10 如何启动使用Docker Compose定义的服务?

使用docker-compose up命令。

2.11 怎样在Docker Compose中设置环境变量?

可以在docker-compose.yml文件中使用environment键设置环境变量。

2.12 Docker Swarm是什么?

Docker Swarm是Docker的原生集群管理工具,用于在多个主机上部署和管理Docker容器。

2.13 Docker Swarm和Kubernetes的主要区别是什么?

Kubernetes提供了更多的功能和灵活性,适用于更复杂的应用场景。Docker Swarm更简单,易于设置和管理。

2.14 如何保证Docker容器的安全性?

保持Docker和宿主机系统的更新,使用非root用户运行容器,限制容器的资源使用,使用Docker安全扫描等。

2.15 Docker中的健康检查是如何工作的?

可以在Dockerfile中定义HEALTHCHECK指令或在docker-compose.yml中定义healthcheck来检查容器的健康状态。

2.16 Docker是如何实现容器隔离的?

Docker使用Linux的命名空间和控制组(cgroups)来实现容器的隔离。

2.17 解释Docker容器的重启策略。

Docker容器的重启策略决定了在退出时容器是否和如何重启。常用策略包括no、always、on-failure和unless-stopped。

3 K8S

K8s将集群中的机器划分为一个主节点和一群工作节点,在主节点上运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager 和 kube-scheduler,这些进程实现了整个集群的资源管理、pod 调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,并且都是全自动完成的。集群中的工作节点运行真正的应用程序,各自又通过若干组件的组合来实现。在节点上,K8s管理的最小运行单元是pod。负载均衡模式需要通过kubelet、kube-proxy等这些服务进程实现,下图是K8s的整体架构:
在这里插入图片描述
主节点即中央控制节点是K8s 集群的管理节点,管理集群当中数据的接口、状态监测和回滚、状态更新、调度等功能,kubectl是K8s的命令行工具集,用于通过命令行与API server进行交互,而对K8s进行操作,实现在集群中进行各种资源的管理控制等操作,通过节点控制器来与工作节点交互。

3.1 为什么需要 Kubernetes,它能做什么?

Kubernetes是一个开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它的主要目标是简化容器化应用的部署和管理,并提供弹性、可靠的应用程序编排。

  • 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
  • 存储编排:Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
  • 自动部署和回滚:可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。 例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
  • 自动完成装箱计算:为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源。
  • 自我修复:Kubernetes 将重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器, 并且在准备好服务之前不将其通告给客户端。
  • 密钥与配置管理:Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。
  • 批处理执行:除了服务外,Kubernetes 还可以管理你的批处理和 CI(持续集成)工作负载,如有需要,可以替换失败的容器。
  • 水平扩缩:使用简单的命令、用户界面或根据 CPU 使用率自动对你的应用进行扩缩。
  • IPv4/IPv6 双栈 :为 Pod(容器组)和 Service(服务)分配 IPv4 和 IPv6 地址。
  • 为可扩展性设计 :在不改变上游源代码的情况下为你的 Kubernetes 集群添加功能。

3.2 什么是Pod?

Pod是Kubernetes的最小调度和部署单元。它是一个包含一个或多个容器的逻辑主机,这些容器共享网络和存储资源,并且在同一主机上共享生命周期。

3.3 什么是命名空间(Namespace)?

命名空间是一种在Kubernetes集群中创建多个虚拟集群的机制。它可以用于隔离和管理不同的应用程序、团队或环境。

3.4 如何进行应用程序的水平扩展?

可以使用Deployment的副本数字段来进行水平扩展。通过增加副本数,Kubernetes会创建更多的Pod副本以应对负载增加。

3.5 什么是Ingress?

Ingress是Kubernetes的资源之一,用于将外部流量路由到集群内的服务。它可以提供负载均衡、SSL终止、路径基于的路由等功能。

3.6 如何监控Kubernetes集群?

可以使用Kubernetes内置的指标和日志系统,如kube-state-metrics、Heapster和EFK堆栈,来监控集群的运行状态和性能。

3.7 什么是Kubernetes的生命周期钩子(Lifecycle Hook)?

生命周期钩子是Pod中的回调函数,可以在容器的生命周期事件发生时触发。它们可以用于在容器启动、停止或失败时执行定制化操作。

3.8 什么是Pod的探针(Probe)?

Pod的探针用于定期检查容器的健康状态。Kubernetes支持三种类型的探针:存活探针(Liveness Probe)、就绪探针(Readiness Probe)和启动探针(Startup Probe)。

3.9 请解释一下 Kubernetes 的主要组件。

Kubernetes的主要组件包括:Master组件(API Server、Controller Manager、Scheduler)和Node组件(kubelet、kube-proxy、容器运行时)。

3.10 怎样在 Kubernetes 中进行服务发现?

可以使用Kubernetes的Service对象来进行服务发现。Pod可以通过Service的DNS名称进行通信。

返回面试宝典

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1432704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解TCP网络协议(3)

目录 1.前言 2.流量控制 2.阻塞控制 3.延时应答 4.捎带应答 5.面向字节流 6.缓冲区 7.粘包问题 8.TCP异常情况 9.小结 1.前言 在前面的博客中,我们重点介绍了TCP协议的一些属性,有连接属性的三次握手和四次挥手,还有保证数据安全的重传机制和确认应答,还有为了提高效率…

最短编辑距离问题与动态规划----LeetCode 72.编辑距离

动态规划(Dynamic Programming, DP)是解决复杂问题的一个强大工具,它将问题分解成更小的子问题,并使用这些子问题的解决方案来构建整体问题的解决方案。在深入探讨最短编辑距离问题之前,让我们先理解什么是动态规划&am…

爬取58二手房并用SVR模型拟合

目录 一、前言 二、爬虫与数据处理 三、模型 一、前言 爬取数据仅用于练习和学习。本文运用二手房规格sepc(如3室2厅1卫)和二手房面积area预测二手房价格price,只是练习和学习,不代表如何实际意义。 二、爬虫与数据处理 import requests import cha…

Debian系统显示中文

开发板上的debian默认不显示中文。 安装字体 sudo apt install fonts-wqy-zenhei 安装locals sudo apt install locales (无必要)设置/etc/locale.gen、设置/etc/locale.conf 运行dpkg-reconfigure locales dpkg-reconfigure locales 可以选择UT…

数字人客服技术预研

技术洞察 引言 在当今数字化时代,不断进步和创新的人工智能(AI)技术已经渗透到各行各业中。随着AI技术、大模型技术逐步发展,使得数字人的广泛应用成为可能,本文将跟大家一起探讨AI数字人客服的概念、优势、应用场景…

基于Springboot的校园失物招领网站(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园失物招领网站(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

修复wordpress安全漏洞

1. 问题描述: 用wordpress建了一个网站,但是学校反映说存在安全漏洞,通过接口https://xxx.xxx.edu.cn/?rest_route/wp/v2/users/可以访问到一些内容,希望可以关闭这个接口。 2. 解决办法 一共两步 (1)在fu…

基于深度学习的SSVEP分类算法简介

基于深度学习的SSVEP分类算法简介 1、目标与范畴2、深度学习的算法介绍3、参考文献 1、目标与范畴 稳态视觉诱发电位(SSVEP)是指当受试者持续注视固定频率的闪光或翻转刺激时,在大脑枕-额叶区域诱发的与刺激频率相关的电生理信号。与P300、运…

Flume多进程传输

1.Flume介绍 Flume 是一种分布式、可靠且可用的服务,用于高效收集、聚合和移动大量日志数据。它具有基于流数据流的简单而灵活的架构。它具有鲁棒性和容错性,具有可调的可靠性机制和许多故障转移和恢复机制。它使用简单的可扩展数据模型,允许…

【自然语言处理】P4 神经网络基础 - 激活函数

目录 激活函数SigmoidTanhReLUSoftmax 本节博文介绍四大激活函数,Sigmoid、Tanh、ReLU、Softmax。 激活函数 为什么深度学习需要激活函数? 博主认为,最重要的是 引入非线性。 神经网络是将众多神经元相互连接形成的网络。如果神经元没有激…

Text Mesh Pro图文混排如何对任何图片都能实现

1)Text Mesh Pro图文混排如何对任何图片都能实现 2)Unity iOS平台的小图占用特别大的内存 3)只在编辑器内,纹理不开启Read&Write情况下,如何获取纹理所有颜色值 4)准备在海外发行游戏,有哪些…

微服务入门篇:Nacos注册中心(Nacos安装,快速入门,多级存储,负载均衡,环境隔离,配置管理,热更新,集群搭建,nginx反向代理)

目录 1.Nacos安装1.官网下载2.解压到本地3.启动nacos 2.Nacos快速入门1.在父工程中导入nacos依赖2.给子项目添加客户端依赖3.修改对应服务的配置文件4.启动服务,查看nacos发现情况 3.Nacos服务多级存储模型4.NacosRule负载均衡5. 服务实例的权重设置6.环境隔离&…

【SAR成像】基于RD、CS和ωk算法的合成孔径雷达成像算法原理与实现

基于RD、CS和ωk算法的合成孔径雷达成像算法实现 前言SAR基本概念雷达获取数据的几何关系低斜视角下的回波信号模型 RADARSAT-1主要参数数据预处理数据读取与再封装数据补零 成像算法坐标轴的产生RD算法距离压缩距离徙动矫正方位压缩 CS算法第一次相位相乘 变标后的信号第二次相…

Unity类银河恶魔城学习记录1-11 PlayerPrimaryAttack P38

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic…

get通过发送Body传参-工具类

1、调用方式 String url "http://ip/xxx/zh/xxxxx/xxxx/userCode"; //进行url中的对应的参数 url2 url2.replace("ip",bancirili); url2 url2.replace("zh",zh); url2 url2.replace("userCode",userCode);String dateTime xxxx; //组…

共享网盘系统PHP源码

新V5.0版本,支持上传视频、支持视频播放、支持共享,也可以自己用。 可以自动生成视频外链,下载地址,播放器代码,html代码,ubb代码等等。 使用方法: 源码上传到服务器,打开网站根据…

vscode debug无法直接查看eigen变量的问题(解决方法)

主要是给gdb添加一个Eigen相关的printer即可, 网上其他教程都搞太复杂了, 我整理成了一个仓库, 把仓库克隆下来直接运行 ./setup.sh脚本即可配置好 git clone gitgithub.com:fandesfyf/EigenGdb.git cd EigenGdb ./setup.sh 然后在vscode中重新debug即可。 效果 …

使用yolov5时需要安装的requirements.txt

之前需要配置好pytorch,同时注意的是pytoorch版本需要在1.7以上 1.github下载好requirements.txt 文件内容如下: 2.在cmd命令行转移到yolov5所在文件夹及配置的yolo环境中,直接下载 pip install -r requirements.txt -i http://pypi.doub…

一文讲透ast.literal_eval() eval() json.loads()

文章目录 一文讲透ast.literal_eval() eval() json.loads()1. ast.literal_eval()2. eval()3. json.loads()4. 总结 一文讲透ast.literal_eval() eval() json.loads() 在Python库中,我们经常会遇到需要将字符串转换为相应对象或数据结构的情况。在这种情况下&#…

TCP与UDP:传输层协议的差异与选择

在计算机网络中,传输控制协议(TCP)和用户数据报协议(UDP)是两种常用的传输层协议。然而,随着互联网的快速发展,传统的TCP和UDP在某些场景下存在一些限制。为了解决这些问题,出现了新…