IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> kubernetes审计 -> 正文阅读

[系统运维]kubernetes审计

写在前面:用到的一些参考链接

官方介绍:https://github.com/kubernetes/website/blob/release-1.12/content/zh/docs/tasks/debug-application-cluster/audit.md
阿里云介绍:https://help.aliyun.com/document_detail/91406.html
腾讯云介绍:https://cloud.tencent.com/document/product/457/50510
ucloud配置参数:?https://docs.ucloud.cn/uk8s/bestpractice/apiserver_audit

存疑:

  1. 目前暂时不清楚在何种规模下会增加apiserver多少的内存消耗,需要有数据支持,及监控。(30%,在什么集群规模下,怎么来的数据。)

  2. 为什么log会禁止批处理?日志容易写乱?是否会出现json不完整?

审计目的

官方介绍(kubernetes 1.12):

Kubernetes 审计功能提供了与安全相关的按时间顺序排列的记录集,记录单个用户、管理员或系统其他组件影响系统的活动顺序。它能帮助集群管理员处理以下问题:

  • 发生了什么?

  • 什么时候发生的?

  • 谁触发的?

  • 活动发生在哪个(些)对象上?

  • 在哪观察到的?

  • 它从哪触发的?

  • 活动的后续处理行为是什么?

这对平台管理者来说十分重要,能够回答一些在故障时候出现的问题。哪个用户,从哪个ip上,发起了什么请求。

如删除了一个命名空间,导致这个命名空间下的所有pod被回收,对故障进行复盘。(当然可以引入webhook来阻止高危的操作)

Kube-apiserver?执行审计。每个执行阶段的每个请求都会生成一个事件,然后根据特定策略对事件进行预处理并写入后端。

该策略确定记录的内容并且在后端存储记录。当前的后端支持日志文件和 webhook。

每个请求都可以用相关的 “stage” 记录。已知的 stage 有:

  • RequestReceived?- 事件的 stage 将在审计处理器接收到请求后,并且在委托给其余处理器之前生成。

  • ResponseStarted?- 在响应消息的头部发送后,但是响应消息体发送前。这个 stage 仅为长时间运行的请求生成(例如 watch)。

  • ResponseComplete?- 当响应消息体完成并且没有更多数据需要传输的时候。

  • Panic?- 当 panic 发生时生成。

审计日志记录功能会增加 API server 的内存消耗,因为需要为每个请求存储审计所需的某些上下文。此外,内存消耗取决于审计日志记录的配置。

目前暂时不清楚在何种规模下会增加apiserver多少的内存消耗,需要有数据支持,及监控。(30%,在什么集群规模下,怎么来的数据。)

审计策略:

处理事件时,将按顺序与规则列表进行比较。第一个匹配规则设置事件的 [审计级别][auditing-level]。已知的审计级别有:

  • None?- 符合这条规则的日志将不会记录。

  • Metadata?- 记录请求的 metadata(请求的用户、timestamp、resource、verb 等等),但是不记录请求或者响应的消息体。

  • Request?- 记录事件的 metadata 和请求的消息体,但是不记录响应的消息体。这不适用于非资源类型的请求。

  • RequestResponse?- 记录事件的 metadata,请求和响应的消息体。这不适用于非资源类型的请求。

您可以使用?--audit-policy-file?标志将包含策略的文件传递给?kube-apiserver。如果不设置该标志,则不记录事件。注意?rules?字段?必须?在审计策略文件中提供。没有(0)规则的策略将被视为非法配置。

目前较为规范的配置是gce提供的配置文件,这个配置文件所产生的日志量是很大的:

apiVersion:?audit.k8s.io/v1
kind:?Policy
omitStages:
??-?"RequestReceived"
rules:
??#?集群中包含大量以下低风险请求,建议不做审计(不记录日志)
??#?kube-proxy?的?watch?请求
??-?level:?None
????users:?["system:kube-proxy"]
????verbs:?["watch"]
????resources:
??????-?group:?""?#?core
????????resources:?["endpoints",?"services",?"services/status"]
??#?在?kube-system?namespace?下对?configmap?的?get?请求
??-?level:?None
????users:?["system:unsecured"]
????namespaces:?["kube-system"]
????verbs:?["get"]
????resources:
??????-?group:?""?#?core
????????resources:?["configmaps"]
??#?kubelet?对于?node?节点的?get?请求
??-?level:?None
????users:?["kubelet"]?#?legacy?kubelet?identity
????verbs:?["get"]
????resources:
??????-?group:?""?#?core
????????resources:?["nodes",?"nodes/status"]
??#?system:node?用户组对于?node?节点的?get?请求
??-?level:?None
????userGroups:?["system:nodes"]
????verbs:?["get"]
????resources:
??????-?group:?""?#?core
????????resources:?["nodes",?"nodes/status"]
??#?系统组件在?kube-system?namespace?下对于?endpoints?的?get/update?请求
??-?level:?None
????users:
??????-?system:kube-controller-manager
??????-?system:kube-scheduler
??????-?system:serviceaccount:kube-system:endpoint-controller
????verbs:?["get",?"update"]
????namespaces:?["kube-system"]
????resources:
??????-?group:?""?#?core
????????resources:?["endpoints"]
??#?apiserver?对于?namespace?的?get?请求
??-?level:?None
????users:?["system:apiserver"]
????verbs:?["get"]
????resources:
??????-?group:?""?#?core
????????resources:?["namespaces",?"namespaces/status",?"namespaces/finalize"]
??#?cluster-autoscaler?集群伸缩组件在?kube-system?namespace?下对?configmap、endpoint?的?get/update?请求
??-?level:?None
????users:?["cluster-autoscaler"]
????verbs:?["get",?"update"]
????namespaces:?["kube-system"]
????resources:
??????-?group:?""?#?core
????????resources:?["configmaps",?"endpoints"]
??#?HPA?通过?controller?manager?获取?metrics?信息的请求
??-?level:?None
????users:
??????-?system:kube-controller-manager
????verbs:?["get",?"list"]
????resources:
??????-?group:?"metrics.k8s.io"
??#?以下只读?URL
??-?level:?None
????nonResourceURLs:
??????-?/healthz*
??????-?/version
??????-?/swagger*
??#?event?事件
??-?level:?None
????resources:
??????-?group:?""?#?core
????????resources:?["events"]

??#?kubelet、system:node-problem-detector?和?system:nodes?对于节点的?update?和?patch?请求,等级设置为?Request,记录元数据和请求的消息体
??-?level:?Request
????users:?["kubelet",?"system:node-problem-detector",?"system:serviceaccount:kube-system:node-problem-detector"]
????verbs:?["update","patch"]
????resources:
??????-?group:?""?#?core
????????resources:?["nodes/status",?"pods/status"]
??-?level:?Request
????userGroups:?["system:nodes"]
????verbs:?["update","patch"]
????resources:
??????-?group:?""?#?core
????????resources:?["nodes/status",?"pods/status"]

??#?对于可能包含敏感信息或二进制文件的?Secrets,ConfigMaps,tokenreviews?接口的日志等级设为?Metadata
??-?level:?Metadata
????resources:
??????-?group:?""?#?core
????????resources:?["secrets",?"configmaps",?"serviceaccounts/token"]
??????-?group:?authentication.k8s.io
????????resources:?["tokenreviews"]

??#?对于一些返回体比较大的?get,?list,?watch?请求,设置为?Request
??-?level:?Request
????verbs:?["get",?"list",?"watch"]
????resources:
??????-?group:?""?#?core
??????-?group:?"admissionregistration.k8s.io"
??????-?group:?"apiextensions.k8s.io"
??????-?group:?"apiregistration.k8s.io"
??????-?group:?"apps"
??????-?group:?"authentication.k8s.io"
??????-?group:?"authorization.k8s.io"
??????-?group:?"autoscaling"
??????-?group:?"batch"
??????-?group:?"certificates.k8s.io"
??????-?group:?"extensions"
??????-?group:?"metrics.k8s.io"
??????-?group:?"networking.k8s.io"
??????-?group:?"node.k8s.io"
??????-?group:?"policy"
??????-?group:?"rbac.authorization.k8s.io"
??????-?group:?"scheduling.k8s.io"
??????-?group:?"storage.k8s.io"

??#?对已知?Kubernetes?API?默认设置为?RequestResponse
??-?level:?RequestResponse
????resources:
??????-?group:?""?#?core
??????-?group:?"admissionregistration.k8s.io"
??????-?group:?"apiextensions.k8s.io"
??????-?group:?"apiregistration.k8s.io"
??????-?group:?"apps"
??????-?group:?"authentication.k8s.io"
??????-?group:?"authorization.k8s.io"
??????-?group:?"autoscaling"
??????-?group:?"batch"
??????-?group:?"certificates.k8s.io"
??????-?group:?"extensions"
??????-?group:?"metrics.k8s.io"
??????-?group:?"networking.k8s.io"
??????-?group:?"node.k8s.io"
??????-?group:?"policy"
??????-?group:?"rbac.authorization.k8s.io"
??????-?group:?"scheduling.k8s.io"
??????-?group:?"storage.k8s.io"

??#?对于其他请求都设置为?Metadata
??-?level:?Metadata

当然可以使用最低限度的配置文件:

#?Log?all?requests?at?the?Metadata?level.
apiVersion:?audit.k8s.io/v1beta1
kind:?Policy
rules:
-?level:?Metadata

审计后端

审计后端实现将审计事件导出到外部存储。?Kube-apiserver?提供两个后端:

  • Log 后端,将事件写入到磁盘

  • Webhook 后端,将事件发送到外部 API

日志后端:

#?指定用来写入审计事件的日志文件路径。不指定此标志会禁用日志后端
--audit-log-path=/var/log/kubernetes/audit/audit.log
#?指定审计策略配置文件
--audit-policy-file=/etc/kubernetes/audit-policy.yaml
#?定义保留旧审计日志文件的最大天数
--audit-log-maxage=7
#?定义要保留的审计日志文件的最大数量
--audit-log-maxbackup=10
#?定义审计日志文件的最大大小(兆字节)
--audit-log-maxsize=1000

webhook后端:

# webhook 配置文件的路径。Webhook 配置文件实际上是一个kubeconfig。
--audit-webhook-config-file
#?指定在第一次失败后重发请求等待的时间。随后的请求将以指数退避重试。
--audit-webhook-initial-backoff

批处理:

??为什么log会禁止批处理?日志容易写乱?是否会出现json不完整?

log和webhook后端都是支持batch。默认情况下webhook启用batch,log中禁batch。

  • -audit-webhook-mode?定义缓存策略,可选值如下:

  • batch?- 以批处理缓存事件和异步的过程。这是默认值。

  • blocking?- 阻止 API server 处理每个单独事件的响应。

webhook的参数:

批处理相关:
--audit-webhook-batch-buffer-size?int?????Default:?10000
指定存储批处理和写入事件的缓冲区字节数(默认值:10000)。只在批处理模式下使用。
--audit-webhook-batch-max-size?int?????Default:?400
指定一个批处理的最大长度(默认值:400)。只在批处理模式下使用。
--audit-webhook-batch-max-wait?duration?????Default:?30s
指定尚未达到最大值的批处理的强制写入等待时间(默认值:30s)。只在批处理模式下使用。
--audit-webhook-batch-throttle-burst?int?????Default:?15
指定在未使用 ThrottleQPS 时同时发送请求的最大数量(默认值:15)。只在批处理模式下使用。
--audit-webhook-batch-throttle-enable?????Default:?true
指定是否启用 batching throttling(默认值:true)。只在批处理模式下使用。
--audit-webhook-batch-throttle-qps?float32?????Default:?10
设定每秒内可执行的批处理的最大平均数(默认值:10)。只在批处理模式下使用。

webhook相关:
--audit-webhook-config-file?string
指定 kubeconfig 格式的配置文件的路径。该文件设定了审计 webhook 配置。
--audit-webhook-initial-backoff?duration?????Default:?10s
指定重试第一个失败请求之前等待的时间(默认值:10s)。

处理模式:
--audit-webhook-mode?string?????Default:?"batch"
指定发送审计事件的策略。blocking 表示发送事件时阻塞服务器响应;batch 表示在后端异步缓冲和写入事件。目前仅支持 batch 和 blocking(默认值:batch)。

是否截断:
--audit-webhook-truncate-enabled
指定是否允许截断事件和批处理。
--audit-webhook-truncate-max-batch-size?int?????Default:?10485760
指定发送到底层后端的批处理的最大字节数(默认值:10485760)。实际序列化时的大小会比设定值大几百字节。如果一个批处理超出该大小,它会被分为几个小的批处理。
--audit-webhook-truncate-max-event-size?int?????Default:?102400
指定发送到底层后端的审计事件的最大字节数(默认值:102400)。如果一个事件超出该大小,则第一个请求和回复会被删除,如果还没有减少到合适的大小,该事件将被丢弃。

--audit-webhook-version?string?????Default:?"audit.k8s.io/v1beta1"
指定序列化审计日志的 API 组名和版本号(默认值:audit.k8s.io/v1beta1)。

对于log下的batch模式:

批处理相关:
--audit-log-batch-buffer-size?int?????Default:?10000
指定存储批处理和写入事件的缓冲区字节数(默认值:10000)。只在批处理模式下使用。
--audit-log-batch-max-size?int?????Default:?1
指定一个批处理的最大长度(默认值:1)。只在批处理模式下使用。
--audit-log-batch-max-wait?duration
指定尚未达到最大值的批处理的强制写入等待时间。只在批处理模式下使用。
--audit-log-batch-throttle-burst?int
指定在未使用 ThrottleQPS 时同时发送请求的最大数量。只在批处理模式下使用。
--audit-log-batch-throttle-enable
指定是否启用 batching throttling。只在批处理模式下使用。
--audit-log-batch-throttle-qps?float32
设定每秒内可执行的批处理的最大平均数。只在批处理模式下使用。

日志格式:
--audit-log-format?string?????Default:?"json"
指定存储审计日志的格式。legacy 表示每个事件记录 1 行文本;json 表示以结构化 json 格式记录。目前仅支持 legacy 和 json(默认值:json)。

日志大小等:
--audit-log-maxage?int
指定历史审计日志的最大保存天数,以日志文件名中的时间戳为准。
--audit-log-maxbackup?int
指定历史审计日志的最大保存数量。
--audit-log-maxsize?int
指定审计日志流转前的最大大小(单位:MB)。

处理模式:
--audit-log-mode?string?????Default:?"blocking"
指定发送审计事件的策略。blocking 表示发送事件时阻塞服务器响应;batch 表示在后端异步缓冲和写入事件。目前仅支持 batch 和 blocking(默认值:blocking)。
--audit-log-path?string
如果指定该参数,则所有 API 服务器接受的请求都会记录到此文件。"-"?表示记录到标准输出。

是否截断:
--audit-log-truncate-enabled
指定是否允许截断事件和批处理。
--audit-log-truncate-max-batch-size?int?????Default:?10485760
指定发送到底层后端的批处理的最大字节数(默认值:10485760)。实际序列化时的大小会比设定值大几百字节。如果一个批处理超出该大小,它会被分为几个小的批处理。
--audit-log-truncate-max-event-size?int?????Default:?102400
指定发送到底层后端的审计事件的最大字节数(默认值:102400)。如果一个事件超出该大小,则第一个请求和回复会被删除,如果还没有减少到合适的大小,该事件将被丢弃。
--audit-log-version?string?????Default:?"audit.k8s.io/v1beta1"


参数解释:

需要设置参数以适应 apiserver 上的负载。

例如,如果 kube-apiserver 每秒收到 100 个请求,并且每个请求仅在?ResponseStarted?和?ResponseComplete?阶段进行审计,则应该考虑每秒生成约 200 个审计事件。假设批处理中最多有 100 个事件,则应将限制级别设置为至少 2 个 QPS。假设后端最多需要 5 秒钟来写入事件,您应该设置缓冲区大小以容纳最多 5 秒的事件,即 10 个 batch,即 1000 个事件。

但是,在大多数情况下,默认参数应该足够了,您不必手动设置它们。您可以查看 kube-apiserver 公开的以下 Prometheus 指标,并在日志中监控审计子系统的状态。

  • apiserver_audit_event_total?包含所有暴露的审计事件数量的指标。

  • apiserver_audit_error_total?在暴露时由于发生错误而被丢弃的事件的数量。

数据使用

日志采集

部署filebeat 、 fluentd等应用。

webhook

logstash日志:

$?cat?<<EOF?>?/etc/logstash/config
input{
????http{
????????#TODO,?figure?out?a?way?to?use?kubeconfig?file?to?authenticate?to?logstash
????????#https://www.elastic.co/guide/en/logstash/current/plugins-inputs-http.html#plugins-inputs-http-ssl
????????port=>8888
????}
}
filter{
????split{
????????#?Webhook?audit?backend?sends?several?events?together?with?EventList
????????#?split?each?event?here.
????????field=>[items]
????????#?We?only?need?event?subelement,?remove?others.
????????remove_field=>[headers,?metadata,?apiVersion,?"@timestamp",?kind,?"@version",?host]
????}
????mutate{
????????rename?=>?{items=>event}
????}
}
output{
????file{
????????#?Audit?events?from?different?users?will?be?saved?into?different?files.
????????path=>"/var/log/kube-audit-%{[event][user][username]}/audit"
????}
}

kubeapi-server的文件

$?cat?<<EOF?>?/etc/kubernetes/audit-webhook-kubeconfig
apiVersion:?v1
clusters:
-?cluster:
????server:?http://<ip_of_logstash>:8888
??name:?logstash
contexts:
-?context:
????cluster:?logstash
????user:?""
??name:?default-context
current-context:?default-context
kind:?Config
preferences:?{}
users:?[]
EOF

除了文件输出插件外,logstash 还有其它多种输出可以让用户路由不同的数据。例如,用户可以将审计事件发送给支持全文搜索和分析的 elasticsearch 插件。

可视化展示

目前的公有云有很多已经提供了此种能力。如:腾讯云提供的能力。

可以查看本文开头的链接了解。

文本json格式

展示了多种level下的结构体:

{
????"kind":?"Event",
????"apiVersion":?"audit.k8s.io/v1",
????"level":?"Metadata",
????"auditID":?"c1660935-5fdf-4d0a-8d79-88601c0ef4d7",
????"stage":?"ResponseStarted",
????"requestURI":?"/api/v1/namespaces/kube-system/configmaps?allowWatchBookmarks=true\u0026fieldSelector=metadata.name%3Dextension-apiserver-authentication\u0026resourceVersion=2089128\u0026timeout=7m46s\u0026timeoutSeconds=466\u0026watch=true",
????"verb":?"watch",
????"user":?{
????????"username":?"system:kube-scheduler",
????????"groups":?[
????????????"system:authenticated"
????????]
????},
????"sourceIPs":?[
????????"10.8.58.159"
????],
????"userAgent":?"kube-scheduler/v1.20.2?(linux/amd64)?kubernetes/faecb19",
????"objectRef":?{
????????"resource":?"configmaps",
????????"namespace":?"kube-system",
????????"name":?"extension-apiserver-authentication",
????????"apiVersion":?"v1"
????},
????"responseStatus":?{
????????"metadata":?{},
????????"status":?"Success",
????????"message":?"Connection?closed?early",
????????"code":?200
????},
????"requestReceivedTimestamp":?"2022-01-12T15:04:14.207897Z",
????"stageTimestamp":?"2022-01-12T15:04:24.208083Z",
????"annotations":?{
????????"authorization.k8s.io/decision":?"allow",
????????"authorization.k8s.io/reason":?"RBAC:?allowed?by?RoleBinding?\"system::extension-apiserver-authentication-reader/kube-system\"?of?Role?\"extension-apiserver-authentication-reader\"?to?User?\"system:kube-scheduler\""
????}
}

{
????“kind”:?“Event”,
????“apiVersion”:?“audit.k8s.io/v1”,
????“level”:?“Metadata”,
????“auditID”:?“1d4d5380-5028-485c-9f7c-206be0c5dd27”,
????“stage”:?“ResponseComplete”,
????“requestURI”:?“/readyz”,
????“verb”:?“get”,
????“user”:?{
????????“username”:?“system:anonymous”,
????????“groups”:?[
????????????“system:unauthenticated”
????????]
????},
????“sourceIPs”:?[
????????“10.8.58.159”
????],
????“userAgent”:?“kube-probe/1.20”,
????“responseStatus”:?{
????????“metadata”:?{},
????????“code”:?200
????},
????“requestReceivedTimestamp”:?“2022-01-12T15:04:22.521353Z”,
????“stageTimestamp”:?“2022-01-12T15:04:22.525616Z”,
????“annotations”:?{
????????“authorization.k8s.io/decision”:?“allow”,
????????“authorization.k8s.io/reason”:?“RBAC:?allowed?by?ClusterRoleBinding?“system:public-info-viewer”?of?ClusterRole?“system:public-info-viewer”?to?Group?“system:unauthenticated””
????}
}

{
????"kind":?"Event",
????"apiVersion":?"audit.k8s.io/v1",
????"level":?"Request",
????"auditID":?"305ee9dd-cde8-46db-8e6f-9295be3adc99",
????"stage":?"ResponseStarted",
????"requestURI":?"/apis/autoscaling/v1/horizontalpodautoscalers?allowWatchBookmarks=true\u0026resourceVersion=2089128\u0026timeout=5m14s\u0026timeoutSeconds=314\u0026watch=true",
????"verb":?"watch",
????"user":?{
????????"username":?"system:kube-controller-manager",
????????"groups":?[
????????????"system:authenticated"
????????]
????},
????"sourceIPs":?[
????????"10.8.58.159"
????],
????"userAgent":?"kube-controller-manager/v1.20.2?(linux/amd64)?kubernetes/faecb19/shared-informers",
????"objectRef":?{
????????"resource":?"horizontalpodautoscalers",
????????"apiGroup":?"autoscaling",
????????"apiVersion":?"v1"
????},
????"responseStatus":?{
????????"metadata":?{},
????????"status":?"Success",
????????"message":?"Connection?closed?early",
????????"code":?200
????},
????"requestReceivedTimestamp":?"2022-01-12T14:59:07.905200Z",
????"stageTimestamp":?"2022-01-12T15:04:21.905991Z",
????"annotations":?{
????????"authorization.k8s.io/decision":?"allow",
????????"authorization.k8s.io/reason":?"RBAC:?allowed?by?ClusterRoleBinding?\"system:kube-controller-manager\"?of?ClusterRole?\"system:kube-controller-manager\"?to?User?\"system:kube-controller-manager\""
????}
}

{
????“kind”:?“Event”,
????“apiVersion”:?“audit.k8s.io/v1”,
????“level”:?“RequestResponse”,
????“auditID”:?“0ef468b9-2a51-4aff-94a3-c6ac23a208cd”,
????“stage”:?“ResponseComplete”,
????“requestURI”:?“/api/v1/namespaces/kube-system/endpoints/k8s.io-minikube-hostpath”,
????“verb”:?“update”,
????“user”:?{
????????“username”:?“system:serviceaccount:kube-system:storage-provisioner”,
????????“uid”:?“0cf59b55-fe9b-474e-8002-1a5f98481018”,
????????“groups”:?[
????????????“system:serviceaccounts”,
????????????“system:serviceaccounts:kube-system”,
????????????“system:authenticated”
????????]
????},
????“sourceIPs”:?[
????????“10.8.58.159”
????],
????“userAgent”:?“storage-provisioner/v0.0.0?(linux/amd64)?kubernetes/$Format”,
????“objectRef”:?{
????????“resource”:?“endpoints”,
????????“namespace”:?“kube-system”,
????????“name”:?“k8s.io-minikube-hostpath”,
????????“uid”:?“4b89abc0-a674-4a1f-b614-5ab16dbcb6ce”,
????????“apiVersion”:?“v1”,
????????“resourceVersion”:?“2160928”
????},
????“responseStatus”:?{
????????“metadata”:?{},
????????“code”:?200
????},
????“requestObject”:?{
????????“kind”:?“Endpoints”,
????????“apiVersion”:?“v1”,
????????“metadata”:?{
????????????“name”:?“k8s.io-minikube-hostpath”,
????????????“namespace”:?“kube-system”,
????????????“uid”:?“4b89abc0-a674-4a1f-b614-5ab16dbcb6ce”,
????????????“resourceVersion”:?“2160928”,
????????????“creationTimestamp”:?“2021-12-06T06:48:26Z”,
????????????“labels”:?{
????????????????“addonmanager.kubernetes.io/mode”:?“Reconcile”
????????????},
????????????“annotations”:?{
????????????????“control-plane.alpha.kubernetes.io/leader”:?“{“holderIdentity”:“10-8-58-159_2ae98eec-40ba-4e87-857f-03a3a59a115e”,“leaseDurationSeconds”:15,“acquireTime”:“2022-01-11T09:36:56Z”,“renewTime”:“2022-01-12T15:04:23Z”,“leaderTransitions”:2}”,
????????????????“kubectl.kubernetes.io/last-applied-configuration”:?“{“apiVersion”:“v1”,“kind”:“Endpoints”,“metadata”:{“annotations”:{},“labels”:{“addonmanager.kubernetes.io/mode”:“Reconcile”},“name”:“k8s.io-minikube-hostpath”,“namespace”:“kube-system”}}\n”
????????????},
????????????“managedFields”:?[
????????????????{
????????????????????“manager”:?“storage-provisioner”,
????????????????????“operation”:?“Update”,
????????????????????“apiVersion”:?“v1”,
????????????????????“time”:?“2021-12-06T06:48:26Z”,
????????????????????“fieldsType”:?“FieldsV1”,
????????????????????“fieldsV1”:?{
????????????????????????“f:metadata”:?{
????????????????????????????“f:annotations”:?{
????????????????????????????????“.”:?{},
????????????????????????????????“f:control-plane.alpha.kubernetes.io/leader”:?{}
????????????????????????????}
????????????????????????}
????????????????????}
????????????????},
????????????????{
????????????????????“manager”:?“kubectl-client-side-apply”,
????????????????????“operation”:?“Update”,
????????????????????“apiVersion”:?“v1”,
????????????????????“time”:?“2021-12-22T02:14:03Z”,
????????????????????“fieldsType”:?“FieldsV1”,
????????????????????“fieldsV1”:?{
????????????????????????“f:metadata”:?{
????????????????????????????“f:annotations”:?{
????????????????????????????????“f:kubectl.kubernetes.io/last-applied-configuration”:?{}
????????????????????????????},
????????????????????????????“f:labels”:?{
????????????????????????????????“.”:?{},
????????????????????????????????“f:addonmanager.kubernetes.io/mode”:?{}
????????????????????????????}
????????????????????????}
????????????????????}
????????????????}
????????????]
????????}
????},
????“responseObject”:?{
????????“kind”:?“Endpoints”,
????????“apiVersion”:?“v1”,
????????“metadata”:?{
????????????“name”:?“k8s.io-minikube-hostpath”,
????????????“namespace”:?“kube-system”,
????????????“uid”:?“4b89abc0-a674-4a1f-b614-5ab16dbcb6ce”,
????????????“resourceVersion”:?“2160929”,
????????????“creationTimestamp”:?“2021-12-06T06:48:26Z”,
????????????“labels”:?{
????????????????“addonmanager.kubernetes.io/mode”:?“Reconcile”
????????????},
????????????“annotations”:?{
????????????????“control-plane.alpha.kubernetes.io/leader”:?“{“holderIdentity”:“10-8-58-159_2ae98eec-40ba-4e87-857f-03a3a59a115e”,“leaseDurationSeconds”:15,“acquireTime”:“2022-01-11T09:36:56Z”,“renewTime”:“2022-01-12T15:04:23Z”,“leaderTransitions”:2}”,
????????????????“kubectl.kubernetes.io/last-applied-configuration”:?“{“apiVersion”:“v1”,“kind”:“Endpoints”,“metadata”:{“annotations”:{},“labels”:{“addonmanager.kubernetes.io/mode”:“Reconcile”},“name”:“k8s.io-minikube-hostpath”,“namespace”:“kube-system”}}\n”
????????????},
????????????“managedFields”:?[
????????????????{
????????????????????“manager”:?“storage-provisioner”,
????????????????????“operation”:?“Update”,
????????????????????“apiVersion”:?“v1”,
????????????????????“time”:?“2021-12-06T06:48:26Z”,
????????????????????“fieldsType”:?“FieldsV1”,
????????????????????“fieldsV1”:?{
????????????????????????“f:metadata”:?{
????????????????????????????“f:annotations”:?{
????????????????????????????????“.”:?{},
????????????????????????????????“f:control-plane.alpha.kubernetes.io/leader”:?{}
????????????????????????????}
????????????????????????}
????????????????????}
????????????????},
????????????????{
????????????????????“manager”:?“kubectl-client-side-apply”,
????????????????????“operation”:?“Update”,
????????????????????“apiVersion”:?“v1”,
????????????????????“time”:?“2021-12-22T02:14:03Z”,
????????????????????“fieldsType”:?“FieldsV1”,
????????????????????“fieldsV1”:?{
????????????????????????“f:metadata”:?{
????????????????????????????“f:annotations”:?{
????????????????????????????????“f:kubectl.kubernetes.io/last-applied-configuration”:?{}
????????????????????????????},
????????????????????????????“f:labels”:?{
????????????????????????????????“.”:?{},
????????????????????????????????“f:addonmanager.kubernetes.io/mode”:?{}
????????????????????????????}
????????????????????????}
????????????????????}
????????????????}
????????????]
????????}
????},
????“requestReceivedTimestamp”:?“2022-01-12T15:04:23.035889Z”,
????“stageTimestamp”:?“2022-01-12T15:04:23.042363Z”,
????“annotations”:?{
????????“authentication.k8s.io/legacy-token”:?“system:serviceaccount:kube-system:storage-provisioner”,
????????“authorization.k8s.io/decision”:?“allow”,
????????“authorization.k8s.io/reason”:?“RBAC:?allowed?by?RoleBinding?“system:persistent-volume-provisioner/kube-system”?of?Role?“system:persistent-volume-provisioner”?to?ServiceAccount?“storage-provisioner/kube-system””
????}
}

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:25:19  更:2022-01-14 02:26:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:21:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码