云平台部署与管理

云计算与虚拟化

01、云计算和虚拟化的关系是什么
 

虚拟化是一种技术,顾名思义,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、在分配
云计算是一种服务模式,其思想就是把各种资源整合起来,然后租给有需要的用户
云计算就是利用了虚拟化技术的特点,把这些资源分割打包提供给用户使用
02、云计算有哪些分类
 

 
IaaS:基础设施服务,Infrastructure-as-a-service
PaaS:平台服务,Platform-as-a-service
SaaS:软件服务,Software-as-a-service
03、公有云、私有云、混合云
 

 
公有云指互联网上发布的云计算服务,搭建云的资源在提供商的场所内,用户通过互联网使用服务
私有云一般建设在企业内部(专网)发布的云服务,搭建云平台所需的资源由企业自给
混合云是云计算的一种类型,它将本地基础结构(或私有云)与公有云结合在一起。使用混合云,可以在两种环境之间移动数据和应用
04、KVM虚拟机常用管理命令
命令说明
virsh list [--all]列出虚拟机
virsh start/shutdown启动/关闭虚拟机
virsh destroy强制停止虚拟机
virsh define/undefine创建/删除虚拟机
virsh ttyconsole显示终端设备
virsh console连接虚拟机的 console
virsh edit修改虚拟机的配置
virsh autostart设置虚拟机自启动
virsh dominfo查看虚拟机摘要信息
virsh domiflist查看虚拟机网卡信息
virsh domblklist查看虚拟机硬盘信息
05、虚拟机磁盘技术中的 ROW 指的是什么
 

 
写入时重定向(英语:Redirect On Write,简称ROW)是一种计算机程序设计领域的优化策略。其核心思想是,当有多个调用者都需要请求相同资源时,一开始资源只会有一份,多个调用者共同读取这一份资源,当某个调用者需要修改数据的时候,才会将数据生成拷贝,供这个调用者使用,而其他调用者依然还是读取最原始的那份数据。每次有调用者需要修改数据时,就会重复一次拷贝流程,供调用者修改使用,使用ROW可以避免或者减少数据的拷贝操作,极大的提高性能

公有云(华为云)

01、想使用云主机需要购买哪个产品
 

 
购买ECS服务
弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器
ECS计费模式:云平台提供包年/包月、按需计费、竞价计费共3种计费模式
02、想使用负载均衡需要购买哪个产品
 

 
购买ELB服务
弹性负载均衡(Elastic Load Balance,简称ELB)是将访问流量根据分配策略分发到后端多台服务器的流量分发控制服务
03、云主机如何安装软件包
 

 
云主机默认是在私有网络中运行的,不能访问互联网,如果需要安装软件可以使用华为云提供的私网镜像进行安装
04、如何发布云主机上的服务到互联网
 

 
1、默认的云主机无法访问互联网,也无法从外部直接访问
2、如果想发布服务到互联网需要购买弹性公网IP,并绑定到该云主机
3、设置安全组入口规则,允许该服务被访问,最后将云主机加入到该安全组
05、如何管理云主机
 

 
1、可以通过华为云提供的web页面对云主机进行管理
2、给云主机绑定弹性公网IP,并配置安全组,使用远程连接工具进行管理
3、大量云主机需要管理一般使用跳板机进行管理

跳板机管理云主机架构图:

公有云平台

登录云主机

登录云主机

登录跳板机

跳板机
公有云弹性IP

云主机

云主机

管理员

分布式日志分析系统 ELK

01、ELK三大组件以及其各自的作用
 

 
1、Elasticsearch 是一个分布式的免费开源搜索和分析引擎,它提供了一个分布式的基础架构,基于 RESTful API的Web接口
2、logstash 是一个数据采集、加工处理以及传输(输出)的工具,拥有丰富的数据收集处理输出插件。
3、kibana 是一个数据可视化平台工具。能够完成数据的检索、图表绘制以及展示等功能    
02、简述logstash的配置区域及其用途

Logstash

output区域

filter区域

input区域

数据库

数据源

 

 
input  区域负责日志的收集
filter 区域负责对日志进行格式化
output 区域负责把格式化好的日志存储在数据库中
03、简要说明Elasticsearch数据的组织存储方式
 

 
Elasticsearch 数据的组织存放方式按照由大到小顺序分别是 索引、类型、文档、字段
索引:相当于数据库中的库
类型:相当于数据库中的表
文档:相当于数据库中的行
字段:相当于数据库中的列
04、简述elasticsearch集群插件head的用途
 

 
它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作
它提供一些快捷菜单,用以展现集群的各种状态,还提供一组针对集群的查询API,并将结果以json和表格形式返回
05、什么是倒排索引
 

 
概念:倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案。是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。
正向索引和倒排索引对比:
    内容 == 正向 ==> 关键字/词
    内容 <== 倒排 == 关键字/词
06、如何对Elasticsearch数据库进行增删改查
 

 
访问Elasticsearch数据库需要使用 REST API,分别对应以下 HTTP 协议方法
增  --  HTTP方法 (PUT)
删  --  HTTP方法 (DELETE)
改  --  HTTP方法 (POST)
查  --  HTTP方法 (GET)
07、查询Elasticsearch状态信息的 API 怎么使用?
 

 
可以使用 _cat api 进行查询 (?v 显示详细信息)(?help 显示帮助信息)
curl http://集群中任意结点:9200/_cat/关键字
08、filebeat是什么,主要优势是什么
 

 
filebeat是用于转发和集中日志数据的轻量级传送工具
filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到 Elasticsearch 或 Logstash进行索引
由于Logstash对内存、cpu、io等资源消耗非常高,部署在任务繁重的机器上非常不合适,对于日志的收集 filebeat 就是解决这个问题的最佳选择,filebeat 非常轻量,几乎不占用系统资源,他可以通过网络把收集的日志发送到 Elasticsearch 或 Logstash进行索引
09、kibana是什么
 

 
数据可视化平台工具
特点:
    灵活的分析和可视化平台,实时总结和流数据的图表
    为不同的用户显示直观的界面,即时分享和嵌入的仪表板
10、如何区分filebeat转发来的不同类型的数据
 

 
可以在filebeat中定义 fields 自定义的键值对类型的标签,在日志的接收端可以通过该标签进行日志区分

容器Docker

01、Docker与虚拟机相比有哪些优势
 

 
1、Docker 更简单、更易用、更快速,与虚拟机相比,Docker共享宿主机的操作系统和硬件资源,所有的应用模块都是在宿主机上的隔离,非常节省资源,多个应用模块类似于宿主机上多个“应用进程”
2、与虚拟机相比,容器的创建启动、停止等能都实现秒级的速度,从而实现业务系统服务的快速弹性扩展
3、更灵活的硬件资源调整、管控:所有的运维基础服务以及公司自有模块都可以随意封装为镜像,只要有Docker运行的基础环境,就可以直接启动服务,从而实现“一次封装,到处运行”
4、所有容器能够针对CPU,内存、磁盘IO、网络等进行更细化的调整控制,让所有容器更能充分利用宿主机的硬件资源;
5、透明部署,促进企业实现真正的DevOps:docker 的出现,让运维、测试、研发等企业技术人员,彻底跳出“环境部署的苦海”,实现真正的企业内部业务系统的“透明部署”,简化了技术部门产品发布的流程
02、熟练掌握镜像管理命令
镜像管理命令命令说明
docker images查看本机镜像
docker search 镜像名称从官方仓库查找镜像
docker pull 镜像名称:标签下载镜像
docker push 镜像名称:标签上传镜像
docker save 镜像名称:标签 -o 备份镜像名称.tar备份镜像为tar包
docker load -i 备份镜像名称导入备份的镜像文件
docker rmi 镜像名称:标签删除镜像(必须先删除该镜像启动的所有容器)
docker history 镜像名称:标签查看镜像的制作历史
docker inspect 镜像名称:标签查看镜像的详细信息
docker tag 镜像名称:标签 新的镜像名称:新的标签创建新的镜像名称和标签
03、熟练掌握容器管理命令
容器管理命令命令说明
docker run -it(d) 镜像名称:标签 启动命令创建启动并进入一个容器
docker ps查看容器 -a 所有容器,包含未启动的,-q 只显示id
docker rm 容器ID-f 强制删除
docker start|stop|restart 容器id启动、停止、重启容器
docker exec -it 容器id 启动命令在容器内执行命令
docker cp 本机文件路径 容器id:容器内路径把本机文件拷贝到容器内(上传)
docker cp 容器id:容器内路径 本机文件路径把容器内文件拷贝到本机(下载)
docker inspect 容器ID查看容器的详细信息
docker logs 容器ID查看容器日志
docker info查看容器的配置信息
docker version查看服务器与客户端版本
04、简述Dockerfile中常见命令关键字并说明用途
命令命令说明
FROM指定基础镜像
RUN制作镜像时执行的命令,在容器内运行,可以有多个
ADD复制文件到镜像,自动解压
COPY复制文件到镜像,不解压
EXPOSE声明开放的端口
WORKDIR定义容器默认工作目录(等于cd)
ENV设置容器启动后的环境变量
CMD容器启动时执行的命令,仅可以有一条(可以被覆盖)
ENTRYPOINT容器启动时执行的命令,仅可以有一条(不可以被覆盖)
05、如何查看私有仓库中的镜像和标签
 

 
私有仓库的镜像存储在/var/lib/registry
查看私有镜像仓库中的镜像名称或标签
查看名称: curl http://仓库IP:5000/v2/_catalog
查看标签: curl http://仓库IP:5000/v2/镜像名称/tags/list
06、容器卷有什么用途
 

 
数据卷是宿主机上面的某个特殊目录或者文件,它可供一个或多个容器使用
特性:
  1、数据卷中所有的数据是保存在宿主机磁盘本地的,它可以被一个或多个容器使用
    在权限允许的前提下,宿主机+各个容器对数据卷都可以进行读、写、删除等各项操作
    并且在宿主机或者各个容器任何一个节点上面变更数据(增、删、改),实现数据的 “全局同步”
  2、对数据卷的更新,不会影响镜像
  3、卷会一直存在,即使没有容器,数据也不会丢失
07、如何限制容器使用的物理机资源
 

 
可以在容器启动的时候通过参数限制容器对内存及cpu的使用
例如:
  设置容器使用的cpu权重,在多个容器对cpu发生资源争用的的时候,按照权重分配资源
  cpuset-cpus 把容器使用cpu资源固定在一个或多个指定的cpu 核上
  使用参数-m设置容器使用宿主机的物理内存容量大小
  memory-swap 设置容器使用宿主机的物理内存+物理交换分区的总容量大小
08、安装部署容器服务,内核需要支持哪些技术
 

 
1、Cgroups(Control Groups)资源管理
2、SELinux 安全
3、NameSpace 命名空间
09、如何实现多个不同容器内的服务相互调用
 

 
可以通过共享容器的命名空间或(link)实现
  在启动时候可以通过参数 network=container:容器名称
  把两个服务监听在同一个网络命名空间上,从而实现服务内部相互调用
10、容器内的服务如何发布出来
 

 
容器可以通过 -p 参数把容器端口和宿主机端口绑定或共享宿主机网络名称空间
我们可以通过访问宿主机的 IP:Port 来达到访问到容器内服务的目的
同一宿主机的同一个端口只能绑定一个容器服务

原生云(CLOUD2)

kubernetes

01、简述k8s master的组件及用途
 

 
apiserver 组件是整个系统的对外接口,供客户端和其它组件调用
scheduler 组件负责对集群内部的资源进行调度,相当于“调度室”
etcd 组件是一个键值对的数据库,K8S运行过程中的元数据存储在这里
controllermanager 组件负责管理控制器,相当于“大总管”
02、kube-proxy的作用是什么
 

 
kube-proxy 是 Kubernetes 的核心组件,主要负责为Pod对象提供代理
kube-proxy 是实现 Kubernetes Service 的通信与负载均衡机制的重要组件
他通过 iptables 或 LVS 实现了负载均衡
03、POD是什么
 

 
POD 是 Kubernetes 管理的最小单元,是 Linux 中多个进程的聚合单位
Pod 是一个或多个容器的集合,本身也是一个特殊的容器
04、CNI 是什么
 

 
CNI 的全称是 Container Network Interface,CNI 是容器网络的 API 接口。
常见的 CNI 插件包括 Calico、flannel、Terway、Weave Net 以及 Contiv。
05、etcd 是什么,与 k8s 有什么关系
 

 
etcd 是一个键值对的数据库,k8s 在运行过程中的元数据存储在 etcd 中
基于 etcd k8s 解决了服务发现、分布式锁等问题
06、简述K8S创建容器的过程

UserAPI ServeretcdSchedulerkubeletRuntimecreate podwriteConfirmConfirmwatch(new pod)bind podwriteConfirmConfirmwatch(bound pod)Runtime-shimConfirmupdate pod statuswriteConfirmConfirmUserAPI ServeretcdSchedulerkubelet

Runtime

 

 
1、用户发请求给 api-server
2、api-server 记录到 etcd 中
3、api-server给用户返回结果,客户端已经执行完成
4、api-server 调用 scheduler 为容器选择运行的主机
5、scheduler 返回容器的调度结果
6、api-server 把结果记录到 etcd 中
7、api-server 调用对应主机的 kubelet 创建容器
8、kubelet 调用本机 docker 完成容器的创建,并返回结果给 api-server
9、api-server 把结果记录到 etcd 中
07、说明 Pod 生命周期

2022-08-312022-08-312022-08-312022-08-312022-08-312022-08-312022-08-312022-08-312022-08-31Init1 Init2 Init3 post start main Container liveness probe readiness probepre stop initmain

Pod生命周期

 

 
# init 初始化容器(可选),在主容器之前运行,主要作用是在主容器启动前的准备工作
# postStart 容器启动回调(可选),在主容器启动后立即执行,主要作用是在主容器启动时同步完成其他任务
# livenessProbe 存活探测器(可选),用来确定什么时候要重启容器。例如:服务崩溃、应用死锁、无响应
# readinessProbe 就绪探测器(可选),服务需要满足特定的需求才能对外提供。例如:需要同步数据、或等待相关依赖服务启动。如果不能满足就绪条件,既不杀死应用,也不给它发送请求(通过 Kubernetes Service 的流量)。
# preStop 容器终止前回调(可选),在主容器终止前最后执行,主要作用是在主容器终止前完成最后的任务
# main container 容器主进程(必选),运行容器的核心服务。
08、如何查看、设置、删除标签
 

 
[查看标签 ~]# kubectl get 资源对象 --show-labels
[添加标签 ~]# kubectl label 资源对象 资源对象名称 key=value
[删除标签 ~]# kubectl label 资源对象 资源对象名称 key-
09、说明 kubectl 子命令的用途
子命令说明备注
api-resources查看当前服务器上所有的资源对象
api-versions查看当前服务器上所有资源对象的版本
config管理当前节点上kubeconfig 的认证信息
run创建Pod资源对象一般用来创建 Pod 模板
get查看资源对象的状态信息可选参数: -o 显示格式
describe查询资源对象的属性信息
logs查看容器的报错信息可选参数: -c 容器名称
exec在某一个容器内执行特定的命令可选参数: -c 容器名称
cp在容器和宿主机之间拷贝文件或目录可选参数: -c 容器名称
delete删除资源对象可选参数: -f 文件名称
create创建资源对象必选参数: -f 文件名称
apply(创建/更新)资源对象必选参数: -f 文件名称
10、k8s 中 Pod 出现故障的拍错步骤和思路
 

 
# 查看 pod 状态: kubectl get Pod Pod名称
# 查看 pod 信息: kubectl describe Pod Pod名称
# 查看 pod 日志: kubectl logs Pod名称 -c 容器名称
11、如何为 Pod 进行资源配额
 

 
可以为 Pod 配额的资源有 cpu、memory
可以配置 resource.requests 最小资源需求,也可以配置 resource.limits 最大资源限额
12、注解全局资源配额策略limitRange
 

 
---                         # Yaml文件启始标识
apiVersion: v1              # API版本
kind: LimitRange            # 资源对象类型
metadata:                   # LimitRange元数据
  name: mylimit             # 资源对象名称
  namespace: myns           # 配置策略的名称空间
spec:                       # LimitRange配置规格
  limits:                   # 配额策略
  - type: Container         # 对单一 Container 进行配额
    default:                # 对没有设置最大配额的 Container 使用该配额
      cpu: 500m             # cpu 资源配额
      memory: 800Mi         # memory 资源配额
    defaultRequest:         # 对没有设置最小需求的 Container 使用该配额
      cpu: 10m              # cpu 资源配额
      memory: 8Mi           # memory 资源配额
    max:                    # 单一 Container 能设置配额的最大值
      cpu: "800m"           # cpu 资源配额
      memory: "1000Mi"      # memory 资源配额
    min:                    # 单一 Container 能设置需求的最小值
      cpu: "8m"             # cpu 资源配额
      memory: "8Mi"         # memory 资源配额
  - type: Pod               # 对单一 Pod 进行配额
    max:                    # 单个 Pod 能配置最大资源配额
      cpu: "1200m"          # cpu 资源配额
      memory: "1200Mi"      # memory 资源配额
    min:                    # 单个 Pod 需求的最小资源配额
      cpu: "8m"             # cpu 资源配额
      memory: "8Mi"         # memory 资源配额
13、注解全局资源配额策略Quota
 

 
---                             # Yaml文件启始标识
apiVersion: v1                  # API版本
kind: ResourceQuota             # 资源对象类型
metadata:                       # ResourceQuota元数据
  name: myquota                 # 资源对象名称
  namespace: myns               # 配置策略的名称空间
spec:                           # ResourceQuota配置规格
  hard:                         # 配额策略
    requests.cpu: "500m"        # 最小 cpu 总额限额
    requests.memory: "500Mi"    # 最小 memory 总额限额
    limits.cpu: "5000m"         # 最大 cpu 总额限额
    limits.memory: "8Gi"        # 最大 memory 总额限额
    pods: "3"                   # 最多创建 Pod 的数量
14、优先级 PreemptLowerPriority 与 Never 区别
 

 
Never 不抢占,对于已经调度完成的容器没有影响,优先调度高优先级的Pod
PreemptLowerPriority 抢占,优先调度高优先级的Pod,如果资源不足,杀死优先级低的,保证高优先级的Pod运行
15、K8S 中的污点指的是什么
 

 
污点(Taint)和容忍(Toleration)是从Kubernetes 1.6开始提供的高级调度功能
污点与结点亲和性相反,它能使节点能够排斥一类特定的 Pod,污点标签有:
  NoSchedule 不会被调度
  PreferNoSchedule 尽量不调度
  NoExecute 驱逐节点
16、特权 Pod 的安全策略有那三种
 

 
pod-security.kubernetes.io/enforce=privileged: 不受限制的策略,提供最大可能范围的权限许可。此策略允许特权提升
pod-security.kubernetes.io/enforce=baseline: 弱限制性的策略,禁止已知的策略提升权限。允许使用默认的 Pod 配置。
pod-security.kubernetes.io/enforce=restricted: 非常严格的限制性策略,遵循当前的保护 Pod 的最佳实践
17、卷 emptyDir 的特点和适用场景
 

 
emptyDir 是一个简单的空目录,用来提供存储临时性的存储空间,与 Pod 生命周期一致。
  当 Pod 被创建时,emptyDir 也会同时被创建,并且在 Pod 在该节点上运行期间,一直存在。
  当 Pod 被从节点上删除时,emptyDir 卷中的数据也会被永久删除。
18、卷 configMap 的特点和适用场景
configMap 卷提供了向 Pod 注入配置数据的方法,使容器化的应用具有可移植性。
ConfigMap 对象中存储的数据可以被卷引用,经常用来修改配置文件或设置环境变量。
19、卷 secret 的特点和适用场景
secret 是一种临时卷,特点是在他里面的数据都会经过 BASE64 编码。
与 configMap 功能类似,经常用来向容器内注入数据,一般需要保密的数据使用该类型。
例如:证书、秘钥、登录用的用户名密码等
20、卷 hostPath 的特点和适用场景
hostPath 是持久卷,卷的本质是使用本地设备,例如磁盘、分区、目录等。
hostPath 卷里面的数据不会随着 Pod 的结束而消失。注意:不同节点上的数据可能表现不一致
21、K8S 中 PV/PVC 指的是什么
PV 指的是持久卷(PersistentVolume),PV 是资源的提供者,根据集群的基础设施变化而变化,由K8s集群管理员配置
PVC 指的是持久卷声明(Persistent VolumeClaim),PVC 是资源的使用者,根据业务服务的需求变化来配置
PV/PVC 的引入使K8s集群具备了存储的逻辑抽象能力
22、PV/PVC资源文件注解
---                                         # Yaml文件启始标识
kind: PersistentVolume                      # 资源对象类型
apiVersion: v1                              # API版本
metadata:                                   # PersistentVolume元数据
  name: pv-nfs                              # 资源对象名称
spec:                                       # PersistentVolume规格
  volumeMode: Filesystem                    # 支持的卷模式,支持 Filesystem 和 Block
  accessModes:                              # 支持的访问模式
    - ReadWriteOnce                         # 支持 RWO 模式
    - ReadOnlyMany                          # 支持 ROX 模式
    - ReadWriteMany                         # 支持 RWX 模式
  capacity:                                 # 容量定义
    storage: 20Gi                           # 最大提供 20Gi 空间
  persistentVolumeReclaimPolicy: Retain     # 资源回收方式,支持 Retain 和 Delete
  nfs:                                      # 资源提供的服务
    server: registry                        # 相关资源配置参数
    path: /var/webroot                      # 相关资源配置参数
 
---                                         # Yaml文件启始标识
kind: PersistentVolumeClaim                 # 资源对象类型
apiVersion: v1                              # API版本
metadata:                                   # PersistentVolumeClaim元数据
  name: pvc1                                # 资源对象名称
spec:                                       # PersistentVolumeClaim规格
  volumeMode: Filesystem                    # 需求的卷模式,支持 Filesystem 和 Block
  accessModes:                              # 需求的访问模式
    - ReadWriteOnce                         # 需求 RWO 模式
  resources:                                # 资源配额
    requests:                               # 最小资源需求
      storage: 15Gi                         # 存储空间 15Gi
23、K8S 中的 service 有什么用途
将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。
为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求以负载均衡方式分发到后端的各个Pod上。
还提供对后端 Pod 的自动发现功能
24、K8S 中的 service 的类型有哪些
1、ClusterIP:通过集群的内部 IP 暴露服务,选择该值时服务只能够在集群内部访问,这也是默认的 ServiceType
2、NodePort: 通过每个节点上的 IP 和静态端口(NodePort)暴露服务
3、LoadBalancer:使用云提供商的负载均衡器向外部暴露服务(一般需要购买和付费)
4、ExternalName:通过返回 CNAME 和对应值,可以将服务映射到 externalName 字段的内容
25、如何将一个K8S的应用发布到集群之外
1、使用 NodePort 服务,映射端口(四层)
2、使用 ingress 服务(七层)
3、使用 LoadBalancer 依赖云供应商,需要购买和付费
26、说明 Ingress 与 nodePort 服务区别
nodePort 工作在4层,通过协议、端口、路由转发实现的对外发布服务,可以发布任何服务
Ingress 工作在7层,可以发布 http、https 服务,可以实现 session 粘滞、地址重写、多虚拟主机等功能
27、serviceAccount 是什么
系统服务的账户,主要用途为运行在 kubernetes 中的 Pod 程序提供可鉴别的身份和权限
28、role 和 clusterRole 的用途和区别
role 普通角色,受限于名称空间,只能在名称空间内部使用
clusterRole 集群角色,可以在整个集群中使用
29、roleBinding 和 clusterRoleBinding 的用途和区别
roleBinding 普通角色授权,可以使用 role 和 clusterRole 进行授权,该授权只在名称空间内有效
clusterRoleBinding 集群角色授权,只能使用 clusterRole 授权,该授权在整个集群中均有效
30、控制器是如何找到需要管理的 POD
为了建立控制器和 POD 间的关联,K8S 先给每个 POD 打上一个标签(Label)
然后再给相应的位置定义标签选择器(Label Selector),引用这些标签,例如:
# ------------------ POD中定义--------------------
  metadata:
    labels:             # 声明标签
      app: myapp-apache # 定义标签名字
# ---------------- 控制器中定义--------------------
  selector:             # 声明标签选择器
    app: myapp-apache   # 为服务的后端选择标签 
31、常用控制器有哪些,说明特点
ReplicationController # 多副本控制器,不支持集合,已经被 ReplicaSet 和 Deployment 代替
ReplicaSet # 多副本控制器,支持集合,一般不直接使用,而是由 Deployment 调用
Deployment # 该控制器由 ReplicaSet、Pod 组成、支持集群扩容缩容、滚动、更新、回滚、自动维护 Pod 可用性及副本数量等功能
DaemonSet # 该控制器无法自定义副本数量,会在每个硬件节点都创建一个 Pod,会自动随同硬件节点数量自动增减 Pod 
Job # 单任务控制器,保证一次任务正确执行完成,执行单一任务后结束
CronJob # 周期性计划任务,按照时间周期创建 Job,保留最后三次的执行结果
HorizontalPodAutoscaler # 可以在集群中基于CPU利用率度量指标实现水平自动缩放POD的数量
StatefulSet # 该控制器可以结合 Headless 服务、存储卷、DNS 等服务,使用稳定的网络标识、存储、按顺序扩缩容Pod。
32、deployment 和 statefulsets 的用途和区别
Deployment 创建的 Pod 名称、存储都是随机配置,多个 Pod 副本并发创建,无法通过 service 单独访问 Pod 应用
StatefulSet 使用稳定的网络标识、存储、按顺序扩缩容Pod,可以通过 service 单独访问 Pod 应用
33、deployment 和 daemonset 的用途和区别
Deployment 可以自定义副本数量,同一个节点可以运行多个 Pod 副本
DaemonSet 无法定义副本数量,副本与硬件节点绑定,每节点运行一个 Pod
34、job 和 cronJob 的用途和区别
Job 是单任务控制器,执行任务成功后就结束了,后续不在执行
CronJob 是周期性计划任务,是按时间周期触发的 Job 任务执行
35、资源文件含义注释
---                                         # Yaml文件启始标识
kind: Deployment                            # 资源对象类型
apiVersion: apps/v1                         # API版本
metadata:                                   # Deployment元数据
  name: websvc                              # 资源对象名称
spec:                                       # Deployment规格
  replicas: 1                               # 副本数量
  selector:                                 # 标签选择器
    matchExpressions:                       # 匹配表达式
    - operator: In                          # 使用 In 表达式判断
      key: app                              # 键值对 key
      values:                               # 键值列表
      - apache                              # 值
  template:                                 # 模板
    metadata:                               # Pod元数据
      labels:                               # 标签
        app: apache                         # 标签键值对
    spec:                                   # Pod规格
      terminationGracePeriodSeconds: 10     # 宽限期
      restartPolicy: Always                 # Pod重启Container的策略
      volumes:                              # 卷定义
      - name: log-data                      # 卷名称
        hostPath:                           # 卷类型
          path: /var/weblog                 # hostPath卷路径
          type: DirectoryOrCreate           # hostPath卷参数,目录不存在就创建
      containers:                           # 容器定义
      - name: httpd                         # 容器名称
        image: myos:httpd                   # 创建容器的镜像
        imagePullPolicy: IfNotPresent       # 镜像策略,如果本地没有就下载
        volumeMounts:                       # 加载卷
        - name: log-data                    # 卷名称
          mountPath: /var/log/httpd         # 加载卷的路径
        ports:                              # 容器端口配置
        - name: web-port                    # 端口配置名称
          protocol: TCP                     # 使用的协议
          containerPort: 80                 # 容器端口
        resources:                          # 定义容器配额
          requests:                         # 最小资源配额
            cpu: "200m"                     # cpu资源200m
          limits:                           # 最大资源限额
            memory: "4Gi"                   # 内存资源4Gi
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值