面试题整理9----谈谈对k8s的理解2

面试题整理9----谈谈对k8s的理解2

  • 1. Service 资源
    • 1.1 Service
      • ClusterIP
      • NodePort
      • LoadBalancer
      • Ingress
      • ExternalName
    • 1.2 Endpoints
    • 1.3 Ingress
    • 1.4 EndpointSlice
    • 1.5 IngressClass
  • 2. 配置和存储资源
    • 2.1 ConfigMap
    • 2.2 Secret
    • 2.3 PersistentVolume
    • 2.4 PersistentVolumeClaim
    • 2.5 StorageClass
      • 2.5.1 PV,PVC,StorageClass之间的关系
    • 2.6 Volume
    • 2.7 CSIDriver
    • 2.8 CSINode
    • 2.9 CSIStorageCapacity
    • 2.10 StorageVersionMigration v1alpha1
  • 3. RBAC 鉴权资源
    • 3.1 Role和RoleBinding
      • 3.1.1 Role
      • 3.1.2 RoleBinding
      • 3.1.3 常见用例
    • 3.2 ClusterRole和ClusterRoleBinding
      • 3.2.1 ClusterRole
      • 3.2.2 ClusterRoleBinding
      • 3.2.3 常见用例
    • 3.3 LocalSubjectAccessReview
    • 3.4 SelfSubjectAccessReview
    • 3.5 SelfSubjectRulesReview
    • 3.6 SubjectAccessReview

1. Service 资源

1.1 Service

Service 是软件服务(例如 mysql)的命名抽象,包含代理要侦听的本地端口(例如 3306)和一个选择算符,选择算符用来确定哪些 Pod 将响应通过代理发送的请求。

Service几种模式:

  • ClusterIP

适用于集群内部的服务间通信。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  • NodePort

适用于需要从集群外部通过node节点的映射访问服务的场景。

api版version: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30007
  • LoadBalancer

适用于需要从互联网访问服务的场景。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  • Ingress

适用于需要基于路径或主机名路由流量的场景。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: my-app.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
  • ExternalName

将 Service 映射到一个外部名称,通常是一个 DNS 名称。适用于需要将 Kubernetes 服务与外部服务集成的场景。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName: my-external-service.com

1.2 Endpoints

Endpoints 是实现实际服务的端点的集合。即是通过service发现的后端pods的集合.

1.3 Ingress

Ingress 是允许入站连接到达后端定义的端点的规则集合。

1.4 EndpointSlice

EndpointSlice 是实现某 Service 的端点的子集.

1.5 IngressClass

IngressClass 代表 Ingress 的类,被 Ingress 的规约引用

2. 配置和存储资源

2.1 ConfigMap

ConfigMap 包含供 Pod 使用的配置数据。存储非敏感的配置数据。如配置文件、环境变量等。

有2种方法可以加载configmap中的环境变量:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      envFrom:
        - configMapRef:
            name: my-configmap

或者

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      env:
        - name: MY_ENV_VARIABLE
          valueFrom:
            configMapKeyRef:
              name: my-configmap
              key: my-config-key

2.2 Secret

Secret 包含某些类别的秘密数据。 存储敏感数据,并确保数据的安全性和访问控制。如密码、密钥、证书等。

用户名密码的引用方式:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      env:
        - name: DB_USERNAME
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: username
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: password

证书文件的引用:

secret的导入

kubectl create secret tls my-tls-secret \
  --cert=path/to/tls.crt \
  --key=path/to/tls.key

pod中的引用

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      volumeMounts:
        - name: tls-certs
          mountPath: /app/tls
          readOnly: true
  volumes:
    - name: tls-certs
      secret:
        secretName: my-tls-secret

2.3 PersistentVolume

PersistentVolume (PV) 是管理员制备的一个存储资源。全局资源

2.4 PersistentVolumeClaim

PersistentVolumeClaim 是用户针对一个持久卷的请求和申领。名称空间资源

2.5 StorageClass

StorageClass 为可以动态制备 PersistentVolume 的存储类描述参数。全局资源

2.5.1 PV,PVC,StorageClass之间的关系

  1. Storage Class:定义了一种存储类型,包括存储的类型、回收策略等。它允许动态创建 PV。
  2. Persistent Volume (PV):是集群中的一块存储资源,类似于一个物理磁盘。PV 可以是静态创建的,也可以是通过 Storage Class 动态创建的。
  3. Persistent Volume Claim (PVC):是用户对存储资源的请求,类似于对 PV 的申请。PVC 可以绑定到一个 PV,从而使用该 PV 提供的存储资源。

2.6 Volume

Volume 表示 Pod 中一个有名字的卷,可以由 Pod 中的任意容器进行访问。

2.7 CSIDriver

CSIDriver 抓取集群上部署的容器存储接口(CSI)卷驱动有关的信息。

2.8 CSINode

CSINode 包含节点上安装的所有 CSI 驱动有关的信息。

2.9 CSIStorageCapacity

CSIStorageCapacity 存储一个 CSI GetCapacity 调用的结果。

2.10 StorageVersionMigration v1alpha1

StorageVersionMigration 表示存储的数据向最新存储版本的一次迁移。

3. RBAC 鉴权资源

3.1 Role和RoleBinding

RoleRoleBinding 是 Kubernetes 中用于管理命名空间级别权限的两个核心资源。它们与 ClusterRoleClusterRoleBinding 类似,但作用范围仅限于特定的命名空间。

3.1.1 Role

Role 定义了一组在特定命名空间内的权限。你可以把它看作是一种命名空间级别的“角色”,它描述了哪些 API 组、资源类型以及操作可以被允许。

Role 示例:

  1. 查看特定命名空间中的 pods
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
  1. 管理特定命名空间中的 ConfigMaps
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: configmap-admin
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

3.1.2 RoleBinding

RoleBindingRole 绑定到一个或多个用户、组或服务账户上,从而授予这些实体在特定命名空间内的相应权限。你可以把它看作是一种命名空间级别的“角色绑定”。

RoleBinding 示例:

  1. pod-reader Role 绑定到特定用户
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
  1. configmap-admin Role 绑定到一个服务账户
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: configmap-admin-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: configmap-admin-sa
roleRef:
  kind: Role
  name: configmap-admin
  apiGroup: rbac.authorization.k8s.io

3.1.3 常见用例

  1. 命名空间管理员:创建一个具有特定命名空间内所有权限的 Role,并将其绑定到命名空间管理员用户或组。

  2. 应用程序访问控制:为应用程序创建一个 Role,允许它访问和修改特定命名空间内的资源(如 pods、services、configmaps 等),并将其绑定到应用程序使用的服务账户。

  3. CI/CD 管道:为 CI/CD 管道创建一个 Role,允许它在特定命名空间内创建、更新和删除部署、服务等资源,并将其绑定到 CI/CD 工具使用的服务账户。

  4. 多租户环境:在多租户环境中,为每个租户创建一个独立的命名空间,并为每个租户分配一个 RoleRoleBinding,以限制他们对资源的访问权限。

通过合理地使用 RoleRoleBinding,你可以实现细粒度的访问控制,确保集群中各个命名空间的安全性和稳定性。

3.2 ClusterRole和ClusterRoleBinding

ClusterRoleClusterRoleBinding 是 Kubernetes 中用于管理集群级别权限的两个核心资源。它们与 RoleRoleBinding 类似,但作用范围是整个集群,而不仅仅是某个命名空间。

3.2.1 ClusterRole

ClusterRole 定义了一组跨集群范围的权限。你可以把它看作是一种集群级别的“角色”,它描述了哪些 API 组、资源类型以及操作可以被允许。

ClusterRole 示例:

  1. 查看所有命名空间中的 pods
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
  1. 管理集群中的所有 ConfigMaps
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: configmap-admin
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

3.2.2 ClusterRoleBinding

ClusterRoleBindingClusterRole 绑定到一个或多个用户、组或服务账户上,从而授予这些实体相应的权限。你可以把它看作是一种集群级别的“角色绑定”。

ClusterRoleBinding 示例:

  1. pod-reader ClusterRole 绑定到特定用户
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: read-pods
subjects:
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
  1. configmap-admin ClusterRole 绑定到一个服务账户
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: configmap-admin-binding
subjects:
- kind: ServiceAccount
  name: configmap-admin-sa
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: configmap-admin
  apiGroup: rbac.authorization.k8s.io

3.2.3 常见用例

  1. 集群管理员:创建一个具有所有权限的 ClusterRole,并将其绑定到集群管理员用户或组。

  2. 监控和日志收集:为监控和日志收集工具创建一个 ClusterRole,允许它们读取集群中的各种资源(如 pods、nodes、services 等),并将其绑定到相应的服务账户。

  3. CI/CD 管道:为 CI/CD 管道创建一个 ClusterRole,允许它创建、更新和删除部署、服务等资源,并将其绑定到 CI/CD 工具使用的服务账户。

  4. 备份和恢复:为备份和恢复工具创建一个 ClusterRole,允许它读取和修改持久卷、配置映射等资源,并将其绑定到备份和恢复工具使用的服务账户。

3.3 LocalSubjectAccessReview

LocalSubjectAccessReview 检查用户或组是否可以在给定的命名空间内执行某操作。

3.4 SelfSubjectAccessReview

SelfSubjectAccessReview 检查当前用户是否可以执行某操作。

3.5 SelfSubjectRulesReview

SelfSubjectRulesReview 枚举当前用户可以在某命名空间内执行的操作集合。

3.6 SubjectAccessReview

SubjectAccessReview 检查用户或组是否可以执行某操作。

至此对k8s的理解应该就差不多了.当然面试中不过不拦着可以继续对K8s的监控,告警,日志,流量治理,CICD等各个面继续深入阐述自己的理解.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【翻译】大型 Transformer 模型推理优化

翻译原文:Large Transformer Model Inference Optimization | LilLog 原文作者:Lilian Weng 目录 方法概述蒸馏 Distillation量化 Quantization Transformer 量化的挑战训练后量化 (PTQ) 混合精度量化 Mixed-precision quantization细粒度量化量化的二…

【Leecode】Leecode刷题之路第88天之合并两个有序数组

题目出处 88-合并两个有序数组-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 88-合并两个有序数组-官方解法 方法1:直接合并后排序 思路: 代码示例&#xff1a…

Java图片拼接

最近遇到一个挺离谱的功能,某个表单只让上传一张图,多图上传会使导出失败。跟开发沟通后表示,这个问题处理不了。我... 遂自己思考,能否以曲线救国的方式拯救一下,即不伤及代码之根本,又能解决燃眉之急。灵…

bridge between Lua world and the .NET

一、新建项目&#xff1a;luademo 安装包&#xff1a;<PackageReference Include"NLua" Version"1.7.3" /> using NLua; using System;namespace luademo {internal class Program{static void Main(string[] args){Lua state new Lua();for (int …

跟着问题学23番外——反向传播算法理论(1)

前向传播与反向传播 在单层神经网络的优化算法里&#xff0c;我们讲到优化算法是为了寻找模型参数使得网络的损失值最小&#xff0c;这里详细介绍一下应用的基础——反向传播算法。 在神经网络中&#xff0c;梯度计算是通过反向传播算法来实现的。反向传播算法用于计算损失函…

Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案

一、背景介绍 在我国的大江南北遍布着各种各样的果园&#xff0c;针对这些地处偏僻的果园及农场等环境&#xff0c;较为传统的安全防范方式是建立围墙&#xff0c;但是仅靠围墙仍然无法阻挡不法分子的有意入侵和破坏&#xff0c;因此为了及时发现和处理一些难以察觉的问题&…

华为IPD流程6大阶段370个流程活动详解_第二阶段:计划阶段 — 86个活动

华为IPD流程涵盖了产品从概念到上市的完整过程,各阶段活动明确且相互衔接。在概念启动阶段,产品经理和项目经理分析可行性,PAC评审后成立PDT。概念阶段则包括产品描述、市场定位、投资期望等内容的确定,同时组建PDT核心组并准备项目环境。团队培训涵盖团队建设、流程、业务…

开源轮子 - EasyExcel01(核心api)

EasyExcel01 - 核心api 本文整理自掘金大佬 - 竹子爱熊猫 https://juejin.cn/post/7405158045662576640 文章目录 EasyExcel01 - 核心api一&#xff1a;初相识EasyExcel1&#xff1a;写入excel入门2&#xff1a;读取Excel入门 二&#xff1a;数据模型注解1&#xff1a;读写通用…

实验13 C语言连接和操作MySQL数据库

一、安装MySQL 1、使用包管理器安装MySQL sudo apt update sudo apt install mysql-server2、启动MySQL服务&#xff1a; sudo systemctl start mysql3、检查MySQL服务状态&#xff1a; sudo systemctl status mysql二、安装MySQL开发库 sudo apt-get install libmysqlcli…

【java基础系列】实现数字的首位交换算法

在java中&#xff0c;手写实现一个数字的首位交换算法实现 实现效果 实现代码 核心业务代码 public static void main(String[] args) {int[] arr {1,2,3,4,5};int temp arr[0];for (int i 0; i < arr.length; i) {System.out.print(arr[i]);}System.out.println(&quo…

kubeadm一键部署K8S 集群架构

kubeadm一键部署K8S 集群架构(centos7) https://www.k8src.cn/ https://kubernetes.io/zh-cn/docs/home/ https://blog.csdn.net/m0_58709145/article/details/140128179 https://blog.csdn.net/jiaqijiaqi666/article/details/129745828 Kubeadm init报错[ERROR CRI]: contai…

【LeetCode: 876. 链表的中间结点 + 链表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门hello world输出【入门一】

开发环境搭建&#xff1a;Linux-Ubuntu下搭建ESP32的开发环境的步骤&#xff0c;使用乐鑫最新稳定版的esp-idf-CSDN博客 一、安装好开发环境后&#xff0c;在esp目录下再创建一个esp32的目录【用于编程测试demo】 二、进入esp32目录&#xff0c;打开终端【拷贝esp-idf的hello工…

单节点calico性能优化

在单节点上部署calicov3273后&#xff0c;发现资源占用 修改calico以下配置是资源消耗降低 1、因为是单节点&#xff0c;没有跨节点pod网段组网需要&#xff0c;禁用overlay方式网络(ipip&#xff0c;vxlan),使用route方式网络 配置calico-node的环境变量 CALICO_IPV4POOL_I…

基于鲲鹏服务器的打砖块小游戏部署

案例介绍 鲲鹏服务器是基于鲲鹏处理器的新一代数据中心服务器&#xff0c;适用于大数据、分布式存储、高性能计算和数据库等应用。鲲鹏服务器具有高性能、低功耗、灵活的扩展能力&#xff0c;适合大数据分析、软件定义存储、Web等应用场景。 本案例将指导开发者如何在鲲鹏服务…

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

机器学习基础算法 (一)-线性回归

python 环境的配置参考 从零开始&#xff1a;Python 环境搭建与工具配置 线性回归的 Python 实现 线性回归是一种经典的机器学习算法&#xff0c;用于预测连续的目标变量。它假设目标变量和特征之间存在线性关系。本文将详细介绍线性回归的原理、Python 实现、模型评估和调优&…

基于linux下实现的ping程序(C语言)

linux下实现的ping程序 一、设计目的 PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于ICMP&#xff0c;使用ICMP的回送请求和回送应答来工作。由计算机网络课程知道&#xff0c;ICMP是基于IP的一个协议&#xff0c;ICMP包通过IP的封装之后传递。 课程设…

WPF 布局控件

wpf 布局控件有很多&#xff0c;常用的有&#xff1a;Grid, UniformGrid, Border, StackPanel, WrapPanel, DockPanel。 1. Grid Grid 经常作为控件的 Content 使用&#xff0c;常作为 Windows, UserControl 等 UI 元素的根节点。它用来展示一个 n 行 n 列的排版。 因此就有…

内网渗透横向移动技巧

在正常情况中&#xff0c;横向移动是在已经获取了足够的权限的情况下进行横向移动&#xff0c;下面中的方法大部分也需要高权限的操作。 https://www.freebuf.com/articles/network/251364.html 内网横向移动分为三种情况&#xff1a; 1.在VPN环境中进行横向移动&#xff1b; 2…