写在前面


  • 分享一些 K8sLimitRange 的笔记
  • 博文内容涉及:
    • LimitRange 简单介绍
    • LimitRange 资源对象创建使用
    • 准入检查资源约束的一些 Demo
  • 理解不足小伙伴帮忙指正

跳出童年时代吧,朋友,觉醒呵! — J.J. 卢梭


LimitRange 介绍

在默认情况下,Kubernetes 不会对 Pod 做 CPU 和内存等资源限制,即 Kubernetes 系统中任何 Pod 都可以使用其所在节点的所有可用的CPU和内存

通过配置 Pod 的计算资源 RequestsLimits,我们可以限制 Pod 的资源使用,配置最高要求和最低要求

但对于 Kubernetes 集群管理员而言,为每一个 Pod 配置 Requests和Limits 是麻烦的,同时维护特别的不方便。需要考虑如何确保一个 Pod 不会垄断命名空间内所有可用的资源。

更多时候,我们需要对集群内Requests和Limits的配置做一个全局限制。这里就要用到 Limitrange ,LimitRange 用来限制命名空间内 适用的对象类别 (例如 PodPersistentVolumeClaim) 指定的资源分配量(限制和请求)的一个策略对象。对 Pod 和容器的 Requests 和 Limits 配置做进一步做出限制。

LimitRange 可以做什么:

  • 在一个命名空间中实施对每个 Pod 或 Container 最小和最大的资源使用量的限制。
  • 在一个命名空间中实施对每个 PersistentVolumeClaim 能申请的最小和最大的存储空间大小的限制。
  • 在一个命名空间中实施对一种资源的 申请值和限制值比值的控制
  • 设置一个命名空间中对计算资源的默认申请/限制值,并且自动的在运行时注入到多个Container中。
  • 当某命名空间中有一个LimitRange对象时,会在该命名空间中实施 LimitRange 限制。

LimitRange 的名称必须是合法的 DNS 子域名。

资源限制和请求的约束

管理员在一个命名空间内创建一个 LimitRange 对象。 用户在此命名空间内创建(或尝试创建) PodPersistentVolumeClaim 等对象。

首先,LimitRanger 准入控制器对所有没有设置计算资源需求的所有 Pod(及其容器)设置默认请求值与限制值。也就是(limitsRequest)

其次,LimitRange 跟踪其使用量 以保证没有超出命名空间中存在的任意 LimitRange 所定义的最小、最大资源使用量以及使用量比值

若尝试创建或更新的对象(Pod 和 PersistentVolumeClaim)违反了 LimitRange 的约束, 向 API 服务器的请求会失败,并返回 HTTP 状态码 403 Forbidden以及描述哪一项约束被违反的消息。

若你在命名空间中添加 LimitRange 启用了对 cpu 和 memory 等计算相关资源的限制(Max,Min), 你必须指定这些值请求使用量 requests 与限制使用量 limits ,否则,系统将会拒绝创建 Pod,除非在 LimitRange 定义 默认的 ( limits 和 requests )。

LimitRange验证仅在 Pod 准入阶段进行,不对正在运行的 Pod 进行验证。 如果你添加或修改 LimitRange,命名空间中已存在的 Pod 将继续不变

如果命名空间中存在两个或更多 LimitRange 对象,应用哪个默认值是不确定的

创建 LimitsRange 对象

将 LimitsRange 应用到一个 Kubernetes 的命名空间中,需要先定义一个 LimitRange ,定义最大及最小范围、Requests 和 Limits 的 默认值、Limits 与 Requests 的最大比例上限等。

创建一个命名空间

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl create ns limitrange-example
namespace/limitrange-example created
┌──[root@vms81.liruilongs.github.io]-[/]
└─$vim limit.yaml

编写一个 LimitRange ,并运行

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply -f limit.yaml -n limitrange-example
limitrange/mylimits created

查看状态

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl get limitRange -n limitrange-example
NAME       CREATED AT
mylimits   2022-11-06T17:56:20Z

资源文件信息

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat limit.yaml
apiVersion: v1
kind: LimitRange
metadata:name: mylimits
spec:limits:- max:cpu: "4"memory: 2Gimin:cpu: 200mmemory: 6MimaxLimitRequestRatio:cpu: 3memory: 2type: Pod- default:cpu: 300mmemory: 200MidefaultRequest:cpu: 200mmemory: 100Mimax:cpu: "2"memory: 1Gimin:cpu: 100m #0.1Cmemory: 3MimaxLimitRequestRatio:cpu: 5memory: 4type: Container

上面的 资源文件是相对全的一个资源文件的定义,查看定义的详细信息

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl  describe  limitRange  mylimits -n limitrange-example
Name:       mylimits
Namespace:  limitrange-example
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Pod         cpu       200m  4    -                -              3
Pod         memory    6Mi   2Gi  -                -              2
Container   cpu       100m  2    200m             300m           5
Container   memory    3Mi   1Gi  100Mi            200Mi          4
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

在定义 LimitRange 时,当 LimitRange 中 container 类型限制没有指定 Limits 和 Requests 的默认值时,会使用 Man 作为默认值

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat limit-Max.yaml
apiVersion: v1
kind: LimitRange
metadata:name: mylimits
spec:limits:- max:cpu: "2"memory: 1Gimin:cpu: 100mmemory: 3Mitype: Container
┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply -f limit-Max.yaml  -n limitrange-example
limitrange/mylimits created
┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl describe  limitranges  mylimits -n limitrange-example
Name:       mylimits
Namespace:  limitrange-example
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Container   cpu       100m  2    2                2              -
Container   memory    3Mi   1Gi  1Gi              1Gi            -

具体的属性解释

在 LimitRange 中整体分为两部分,pod 部分和 Container(容器) 部分,PodContainer 都可以设置 Min、MaxMax Limit/Requests Ratio参数。分别来看下,

对于容器部分:

不同的是 Container 还可以设置 Default Request 和 Default Limit 参数,而 Pod 不能设置 Default Request和 Default Limit 参数。

  • Container 的 Min (100m 和 3Mi)是 Pod 中所有容器的 Requests 值下限,即创建 pod 等资源时,申请值 Requests 的值不能低于 Min 的值,否则提示违反约束
  • Container 的 Max (2C 和 1Gi)是 Pod 中所有容器的 Limits 值上限,同理, 限制 资源使用 Limits 不能超过 2000m、 1Gi( 二进制的字节表示) ;
  • Container 的 Default Request (200m 和 100Mi)是 Pod 中所有未指定 Requests 值的容器的默认 Requests 值;
  • Container 的 Default Limit (300m 和 200Mi)是 Pod 中所有未指定 Limits 值的容器的默认 Limits 值。
  • Container 的 Max Limit/Requests Ratio (5 和 4)限制了 Pod 中所有容器的 Limits 值与 Requests 值的比例上限;
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
..............
Container   cpu       100m  2    200m             300m           5
Container   memory    3Mi   1Gi  100Mi            200Mi          4

当创建的容器未指定 Requests 值或者 Limits 值时,将使用 Container 的 Default Request 值或者 Default Limit 值。

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl describe  limitranges  mylimits -n limitrange-example
Name:       mylimits
Namespace:  limitrange-example
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Container   cpu       100m  2    200m             300m           5
Container   memory    3Mi   1Gi  100Mi            200Mi          4
┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod-demoname: pod-demo
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: pod-demoresources:dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

没有指定时,会使用默认值

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl get pods pod-demo -n  limitrange-example -o json | jq  .spec.containers[0].resources
{"limits": {"cpu": "300m","memory": "200Mi"},"requests": {"cpu": "200m","memory": "100Mi"}
}

对于同一资源类型,这 4 个参数必须满足以下关系:Min ≤ Default Request ≤ Default Limit ≤ Max。

对于 Pod 部分:

这里需要注意的但是容器的总和:

  • Pod 的 Min(200m 和 6Mi)是 Pod 中所有容器的 Requests 值的 总和 下限;
  • Pod 的 Max(4 和 2Gi)是 Pod 中所有容器的 Limits 值的 总和 上限。
  • Pod 的 Max Limit/Requests Ratio (3 和 2)限制了 Pod 中所有容器的 Limits 值总和与 Requests 值总和的比例上限。
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Pod         cpu       200m  4    -                -              3
Pod         memory    6Mi   2Gi  -                -              2
........

对于任意一个 Pod 而言,该 Pod 中所有容器的 Requests 总和必须大于或等于 6MiB,而且所有容器的 Limits 总和必须小于或等于 1GiB;同样,所有容器的 CPU Requests 总和必须大于或等于 200m,而且所有容器的 CPU Limits 总和必须小于或等于 2。

  • Pod 里任何容器的 Limits 与 Requests 的比例都不能超过 Container 的 Max Limit/Requests Ratio
  • Pod 里所有容器的 Limits 总和与 Requests 的总和的比例不能超过 Pod 的 Max Limit/Requests Ratio

准入检查 Demo

当前的 LimitRange 定义为:

Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Pod         cpu       200m  4    -                -              3
Pod         memory    6Mi   2Gi  -                -              2
Container   cpu       100m  2    200m             300m           5
Container   memory    3Mi   1Gi  100Mi            200Mi          4

当容器中定义的申请的最小 request 值 大于 LimitRange 默认定义的限制资源 limits 的值时,是无法调度的。在上面定义了 Limitrange 的命名空间内创建一个 pod, 没有指定 limits 所以使用默认的 limits 值,但是默认的 limits 值 300m 小于当前 容器的值

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$cat  pod-demo-limitrange.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod-demoname: pod-demo
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: pod-demoresources:requests:cpu:  500mdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

申请的最小值大于默认的最大值,显然不符合逻辑,所以 pod 无法调度创建,

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl apply -f  pod-demo-limitrange.yaml -n limitrange-example
The Pod "pod-demo" is invalid: spec.containers[0].resources.requests: Invalid value: "500m": must be less than or equal to cpu limit

如果同时设置了 requestslimits,那么 limits 不使用默认值

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$cat pod-demo-limitrange.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod-demoname: pod-demo
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: pod-demoresources:requests:cpu:  500mlimits:cpu: 800mdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

新 Pod 会被成功调度,但是这里需要注意的是, requests 和 limits 要符合 Limitrange 中 容器的MAX,MIN配置

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl apply -f  pod-demo-limitrange.yaml -n limitrange-example
pod/pod-demo created
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl get pods -n limitrange-example
NAME       READY   STATUS    RESTARTS   AGE
pod-demo   1/1     Running   0          11s

Max 限制 ,当 Limits 大于 Max 值时,Pod 不会创建成功, 我的定义如下一个 LimiRanga 的资源对象

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl describe  limitranges  -n limitrange-example mylimits
Name:       mylimits
Namespace:  limitrange-example
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Container   cpu       100m  2    2                2              -
Container   memory    3Mi   1Gi  1Gi              1Gi            -
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

当前的命名空间限制 容器 Limits CUP 大小为 2C ,这里创建一个 3C 的 容器来看下

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod-demoname: pod-demo
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: pod-demoresources:limits:cpu: '3'dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

创建失败,提示不满足准入规则

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply  -f pod1.yaml -n limitrange-example
Error from server (Forbidden): error when creating "pod1.yaml": pods "pod-demo" is forbidden: maximum cpu usage per Container is 2, but limit is 3

** Max Limit/Request Ratio 限制** ,当 Limit/Request 的比值 超过 Max Limit/Request Ratio 时调度失败

定义如下一个 LimitRange :

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat limit-Ratio.yaml
apiVersion: v1
kind: LimitRange
metadata:name: mylimits
spec:limits:- max:cpu: "4"memory: 2Gimin:cpu: 200mmemory: 6MimaxLimitRequestRatio:cpu: 3memory: 2type: Pod
┌──[root@vms81.liruilongs.github.io]-[/]
└─$vim limit-Ratio.yaml
┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply  -f  limit-Ratio.yaml -n limitrange-example
limitrange/mylimits configured

生成的 规则如下:

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl describe  limitranges  -n limitrange-example mylimits
Name:       mylimits
Namespace:  limitrange-example
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Pod         cpu       200m  4    -                -              3
Pod         memory    6Mi   2Gi  -                -              2
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

可以看到 限制 pod 中 cpu 的 Max Limit/Request Ratio 比值 为 3,即 Requests 是 Limits 的 3 倍,最大和小之间最多可以相差 2 个单位

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod-demoname: pod-demo
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: pod-demoresources:limits:cpu: '4'requests:cpu: '1'dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

我们创建这样一个 pod ,cpu 总和 最大和最小相差 3 个单位,Requests 是 Limits 的 4 倍

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply  -f pod1.yaml  -n limitrange-example
Error from server (Forbidden): error when creating "pod1.yaml": pods "pod-demo" is forbidden: [minimum memory usage per Pod is 6Mi.  No request is specified, maximum memory usage per Pod is 2Gi.  No limit is specified, cpu max limit to request ratio per Pod is 3, but provided ratio is 4.000000, memory max limit to request ratio per Pod is 2, but no request is specified or request is 0]
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

可以看到提示准入规则校验失败。相差了 4 倍不符合要求

Pod 的 Limits 和 Requests 限制,当设置了 Pod 的 Max 和 Min 、Max Limit/Request Ratio 时,如果没有定义对应的 Limits 和 Requests ,则创建失败.

还使用之前的 Limitrange,

Namespace:  limitrange-example
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Pod         cpu       200m  4    -                -              3
Pod         memory    6Mi   2Gi  -                -              2

创建一个 pod ,只定义 cpu 的相关属性,没有定义 memory 相关属性

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod-demoname: pod-demo
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: pod-demoresources:limits:cpu: '4'requests:cpu: '1'dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

Limitrange 中定义了 Max 所以必须要设置 Limit ,设置了 Min ,需要设置 Request。

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply  -f pod1.yaml  -n limitrange-example
Error from server (Forbidden): error when creating "pod1.yaml": pods "pod-demo" is forbidden: [minimum memory usage per Pod is 6Mi.  No request is specified, maximum memory usage per Pod is 2Gi.  No limit is specified, memory max limit to request ratio per Pod is 2, but no request is specified or request is 0]

创建失败 ,提示,没有内存相关的资源限制定义

资源约束 Demo

为命名空间配置 CPU 最小和最大约束

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl create namespace constraints-cpu-example
namespace/constraints-cpu-example created
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$vim cpu-constraints.yaml
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl apply -f cpu-constraints.yaml -n  constraints-cpu-example
limitrange/cpu-min-max-demo-lr created

创建 LimitRange yaml 文件

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$ cat cpu-constraints.yaml
apiVersion: v1
kind: LimitRange
metadata:name: cpu-min-max-demo-lr
spec:limits:- max:cpu: "800m"min:cpu: "200m"type: Container
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$

输出结果显示 CPU 的最小和最大限制符合预期。但需要注意的是,尽管你在 LimitRange 的配置文件中你没有声明默认值,默认值也会被自动创建。默人资源限制为 limits 和 requests 都是 max 的值

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl describe limitrange cpu-min-max-demo-lr -n  constraints-cpu-example
Name:       cpu-min-max-demo-lr
Namespace:  constraints-cpu-example
Type        Resource  Min   Max   Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---   ---------------  -------------  -----------------------
Container   cpu       200m  800m  800m             800m           -
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$

创建一个不定义 资源限制 pod

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl run pod-demo-limitrange --image=nginx  --image-pull-policy=IfNotPresent -n constraints-cpu-e
xample
pod/pod-demo-limitrange created
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl get pods -n constraints-cpu-example
NAME                  READY   STATUS    RESTARTS   AGE
pod-demo-limitrange   1/1     Running   0          30s

可以看到使用了默认值,当前 pod 的 limits 值为 800m,requests 值为 800m,即最少为 800m pod 才能被调度,超过 800m 。pod 被 kill

┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$kubectl get pods pod-demo-limitrange -n constraints-cpu-example   -o json | jq  .spec.containers[0].resources
{"limits": {"cpu": "800m"},"requests": {"cpu": "800m"}
}

这里的 demo 官网文档有比较全面的描述, 感兴趣小伙伴可以看看,https://kubernetes.io/zh-cn/docs/concepts/policy/limit-range/ ,这里不多介绍

最后看下 使用 LimitRange 限制 PVC 的使用

┌──[root@vms81.liruilongs.github.io]-[/]
└─$cat limit-pvc.yaml
apiVersion: v1
kind: LimitRange
metadata:name: storagelimits
spec:limits:- type: PersistentVolumeClaimmax:storage: 2Gimin:storage: 1Gi

定义资源,查看限制信息

┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl apply -f limit-pvc.yaml  -n limitrange-example
limitrange/storagelimits created
┌──[root@vms81.liruilongs.github.io]-[/]
└─$kubectl  describe  limitranges  -n limitrange-example
Name:                  storagelimits
Namespace:             limitrange-example
Type                   Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio
----                   --------  ---  ---  ---------------  -------------  -----------------------
PersistentVolumeClaim  storage   1Gi  2Gi  -                -              -
┌──[root@vms81.liruilongs.github.io]-[/]
└─$

关于 Limitrange 资源对象和小伙伴们分享到这样,之前会分享 资源配额管理 Resource Quotas 的一些笔记, 生活加油哦 ^_^

博文参考


《Kubernetes 权威指南 第四版 》

https://kubernetes.io/zh-cn/docs/concepts/policy/limit-range/

关于K8s中资源配置范围管理(LimitRange)的一些笔记相关推荐

  1. 关于K8s中资源服务质量管理Resource Qos的一些笔记整理

    写在前面 分享一些 K8s中资源服务质量管理Resource Qos 的笔记 博文内容涉及: K8s Qos 简单介绍 资源配置的特点: 节点的超用,可压缩/不可压缩,完全可靠性等介绍 QoS Cla ...

  2. asp.net core程序在k8s中基于rabbitmq队列消息数的HPA实践!

    背景 最近一段时间,陆陆续续的把手里头项目都迁移到了k8s中,期间遇到很多的坑,并且也学到了许多k8s的知识(从0-1),大家都知道k8s中的一大特性是自动扩容,对此结合自己的业务发现很是有" ...

  3. k8s 中的资源配置

    在 k8s 中可以对pod 中每个容器使用的资源进行限制,当前主要为 cpu 和 内存.主要有 requests 和 limits 两个配置. requests 用于 scheduler 阶段,表示要 ...

  4. kubernetes(k8s)使用声明式管理与 创建yaml模板文件

    文章目录 一:声明式管理方法 1.1 什么是声明式管理 1.2 查看资源配置 1.2.1 查看资源配置清单 1.2 使用explain 解释资源配置清单 1.3 修改资源配置清单并应用 1.3.1 离 ...

  5. 【云原生】k8s中kubectl陈述式资源管理

    内容预知 1.k8s陈述资源管理方法的说明 1.1 管理k8s核心资源的三种基本方法 陈述式资源管理方法 声明式资源管理方法 GUI式资源管理方法 1.2 kubectl命令行工具 的说明 2.k8s ...

  6. k8s中kubectl陈述式/声明式资源管理

    k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于与 apiserv ...

  7. k8s部署jar包_学习K8S之路.6--- 在K8S中部署Jenkins,并使用Jenkins打包jar包

    一:部署jenkins jenkins官网:https://jenkins.io/download/ jenkins镜像:https://hub.docker.com/r/jenkins/jenkin ...

  8. kubernetes(三)k8s中通信和Service

    目录 1.同一个Pod中的容器通信 2.集群内Pod之间的通信 3 集群内Service-Cluster IP 4.外部服务访问集群中的Pod 4.1 Service-NodePort 4.2.Ser ...

  9. K8s 中使用 cert-manager 申请免费 Https 证书

    K8s 中使用 cert-manager 申请免费 Https 证书 Intro 最近在尝试将自己的应用从自己用 kind 部署的一个 k8s 集群迁移到 Azure 的 AKS 上,其中一个问题就是 ...

最新文章

  1. Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异
  2. Qt vlc视频开发libvlc_new返回空的问题
  3. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc
  4. android中编译和使用luajit开发应用,Android 嵌入 LuaJIT 的曲折道路
  5. notepad拼心形_配置基于NotePad++工具下的C#开发环境
  6. 玩个锤子,李飞飞夫妇团队的最新研究
  7. 2143亿!2018年天猫“双11”成交总额是这样预测的
  8. https和http有什么区别
  9. 6LoWPAN Header compression
  10. 西门子电机选型参考一
  11. 使用ftp访问资源管理器托拽文件下载出现“当前的安全设置不允许从该位置下载文件”提示
  12. 对于运维以及运维开发工程师的一些了解
  13. [转帖]计较,是贫穷的开始 鸡汤...
  14. Python ACM模式
  15. Android 仿HTC拉环解锁波浪效果
  16. WebRTC中的SDP
  17. 知云文献翻译打不开_推荐一款阅读英文文献的神器,效率高不少,理解深不少!...
  18. SuperEdge再添国产智能加速卡支持,为边缘智能推理再提速10倍
  19. 计算机英语填词游戏,英语填字游戏电脑版
  20. 江苏灵匠php_江苏灵匠信息科技有限公司

热门文章

  1. 预处理对象executeQuery方法,对数据库进行有条件和无条件的查询
  2. 南宁富士康c语言笔试题,富士康笔试题目
  3. 使用python代码举例说明离散随机变量
  4. [论文阅读] (09)SP2019 HOLMES Real-time APT Detection through Correlation of Suspicious Information Flow
  5. 如何停止计算机设备,电脑出现“该设备因问题而停止”该怎么办?
  6. 亚信科技AntDB数据库荣获2022年度技术卓越奖
  7. mysql印象最深的事情_印象最深刻的一件事500字
  8. win10 网页 你尚未连接 代理服务器可能有问题,或地址不正确。
  9. Docker 进入Mysql容器
  10. 三大运营商发春,要向腾讯劫个色