optimization
This commit is contained in:
@ -5,10 +5,10 @@ sidebarDepth: 0
|
||||
description: 本教程的主要依据是:Kubernetes官网文档,以及使用Kubernetes落地SpringCloud微服务并投产的实战经验,在线答疑。适用人群_ Kubernetes 初学者_学习过 Kubernetes,但在投产过程中仍有诸多疑虑和困惑的技术爱好者
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes 教程,K8S 教程
|
||||
content: K8S教程,K8S 教程,K8S培训,Kubernetes培训
|
||||
---
|
||||
|
||||
# Kubernetes免费中文教程
|
||||
# Kubernetes教程K8S培训
|
||||
|
||||
<AdSenseTitle>
|
||||
|
||||
@ -143,3 +143,5 @@ meta:
|
||||
* 多环境
|
||||
* [导出部署配置](/learning/k8s-practice/ocp/export.html)
|
||||
* [导入部署配置](/learning/k8s-practice/ocp/import.html)
|
||||
|
||||
Kuboard提供免费K8S教程、K8S培训
|
||||
|
||||
30
learning/k8s-advanced/policy/sec.md
Normal file
30
learning/k8s-advanced/policy/sec.md
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
vssueId: 147
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_通过Pod安全策略_您可以在更细的颗粒度上授权您的用户执行Pod的创建和更新的操作
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes 教程,Resource Quota,ResourceQuota
|
||||
---
|
||||
|
||||
# 概述
|
||||
|
||||
<AdSenseTitle >
|
||||
|
||||
> 参考文档:[Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/)
|
||||
|
||||
**FEATURE STATE**: `Kubernetes v1.16` <Badge type="warning">beta</Badge>
|
||||
|
||||
通过Pod安全策略_您可以在更细的颗粒度上授权您的用户执行Pod的创建和更新的操作
|
||||
|
||||
* [概述](#概述)
|
||||
* [激活Pod安全策略](#激活Pod安全策略)
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
|
||||
## 概述
|
||||
|
||||
`Pod Security Policy` 是一个集群级别(不在任何名称空间中)的 Kubernetes 对象,它控制了Pod定义中安全敏感的一些内容。`Pod Security Policy` 对象可以定义一系列 Condition(条件),只有当这些 Condition(条件)满足时,Pod才可以在系统中运行,同时,`Pod Security Policy`
|
||||
|
||||
## 激活Pod安全策略
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文详细讲解了Kubernetes_Deployment的概念_并描述了如何使用kubectl_Kuboard创建一个Deployment
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Deployment,Kubernetes入门,K8S入门
|
||||
content: Kubernetes教程,K8S教程,Deployment,K8S培训,Kubernetes培训
|
||||
---
|
||||
|
||||
# 1.部署一个应用程序
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文介绍了如何使用kubectl_Kuboard查看和浏览Kubernetes上的节点_容器组_部署等信息_并依据这些信息作出问题诊断
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,容器组,Kubernetes入门,K8S入门
|
||||
content: Kubernetes教程,K8S教程,容器组,,K8S培训,Kubernetes培训
|
||||
---
|
||||
|
||||
# 2.查看Pods/Nodes
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文详细讲解了Kubernetes_Service的概念_并描述了如何使用kubectl_Kuboard创建一个Service_以使得部署在Kubernetes上的容器可以被访问
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes Service,Kubernetes入门,K8S入门
|
||||
content: Kubernetes教程,K8S教程,Kubernetes Service,K8S培训,Kubernetes培训
|
||||
---
|
||||
|
||||
# 3.公布应用程序
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_以gif动图的形式形象的描述Kubernetes核心概念_本文将会简单介绍Kubernetes的核心概念_因为这些定义可以在Kubernetes的文档中找到_所以文章也会避免用大段的枯燥的文字介绍_相反_我们会使用一些图表(其中一些是动画)和示例来解释这些概念
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门
|
||||
content: Kubernetes教程,K8S教程,K8S培训,Kubernetes培训
|
||||
---
|
||||
|
||||
# 6.复习Kubernetes核心概念
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文为初学者介绍了一套最合适的Kubernetes入门教程_该教程源自于Kubernetes官方网站_作者对其进行了翻译_并根据初学者的理解情况做了适当的改写
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门
|
||||
content: Kubernetes教程,K8S教程,K8S培训,Kubernetes培训
|
||||
---
|
||||
|
||||
# 0.学习Kubernetes基础知识
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文详细讲解了Kubernetes_Scale的概念_并描述了如何使用_kubectl_Kuboard_对一个应用程序进行伸缩操作
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门,Kubernetes Scale
|
||||
content: Kubernetes教程,K8S教程,K8S培训,Kubernetes培训,Kubernetes Scale
|
||||
---
|
||||
|
||||
# 4.伸缩应用程序
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文详细讲解了Kubernetes_Rolling_Update_的概念_并描述了如何使用_kubectl_Kuboard_对一个应用程序执行滚动更新。
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes入门,K8S入门,滚动更新
|
||||
content: Kubernetes教程,K8S教程,K8S培训,Kubernetes培训,滚动更新
|
||||
---
|
||||
|
||||
# 5.执行滚动更新
|
||||
|
||||
85
learning/k8s-intermediate/config/priority-preemption.md
Normal file
85
learning/k8s-intermediate/config/priority-preemption.md
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
vssueId: 148
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_通过Pod安全策略_您可以在更细的颗粒度上授权您的用户执行Pod的创建和更新的操作
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes 教程,Resource Quota,ResourceQuota
|
||||
---
|
||||
|
||||
# Pod 优先权
|
||||
|
||||
<AdSenseTitle >
|
||||
|
||||
> 参考文档:[Pod Priority and Preemption](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/)
|
||||
|
||||
**FEATURE STATE**: `Kubernetes v1.14` <Badge>stable</Badge>
|
||||
|
||||
Pod 中可以定义 优先级 `priority`,用于标识该 Pod 相对于其他 Pod 的重要程度。当存在 Pod 等待调度时(处于 Pending 状态),调度器将尝试抢占(preempt 或 驱逐 evict)低优先级(priority)的 Pod,以便调度 Pending 中的 Pod。
|
||||
|
||||
自 Kubernetes 1.9 开始,Priority 也会对如下两个场景产生影响:
|
||||
* Pod 的调度顺序
|
||||
* 资源耗尽时,从节点上驱逐 Pod 的顺序
|
||||
|
||||
Pod 优先权(priority and preemption)的特性在 Kubernetes 1.11 中是 beta状态,并默认激活,在1.14 中是 GA(Generally Available 正式发布)状态。如下表所示:
|
||||
|
||||
| Kubernetes Version | Priority and Preemption State | Enabled by default |
|
||||
| ------------------ | ----------------------------- | ------------------ |
|
||||
| 1.8 | alpha | no |
|
||||
| 1.9 | alpha | no |
|
||||
| 1.10 | alpha | no |
|
||||
| 1.11 | beta | yes |
|
||||
| 1.14 | stable | yes |
|
||||
|
||||
|
||||
::: danger 警告
|
||||
如果集群中的用户并不是全部可信,可能会出现一些恶意的用户,创建最高优先级的 Pod,使得其他的 Pod 被驱逐或者不能正常调度。可以通过在 [ResourceQuota](/learning/k8s-advanced/policy/rq.html) 中指定 priority 来解决此问题。
|
||||
:::
|
||||
|
||||
[[TOC]]
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
## 使用Pod优先权
|
||||
|
||||
在 Kubernetes v1.11 及以后的版本中,参考下面的步骤启用Pod优先权(Pod priority and preemption):
|
||||
|
||||
1. 添加一个或多个 [PriorityClass](#priorityclass)
|
||||
2. 创建Pod时指定 [priorityClassName](#pod-priority) 为其中一个 PriorityClass。(通常在 Deployment/StatefulSet等 的 `spec.template.spec.priorityClassName` 中指定,而不是直接创建 Pod)
|
||||
|
||||
如果你尝试过该特性之后,想要将其禁用,你必须在 API Server 和 Scheduler 的命令行启动参数中移除 `PodPriority` 参数,或者将其设置为 `false`。禁用该特性之后:
|
||||
* 已经创建的 Pod 将保留 priority 字段,但是抢占行为(preemption)被禁用了,且 priority 字段也将被忽略
|
||||
* 新创建的 Pod 将不能在设置 `priorityClassName` 字段
|
||||
|
||||
## 如何禁用 preemtion
|
||||
|
||||
> preemption,英文愿意为先买权,此处可以理解为抢占行为
|
||||
|
||||
::: tip
|
||||
在 Kubernetes 1.12+,当前集群资源不足时,关键的 Pod 将依赖于抢占权才能被调度。因此,并不建议禁用 preemption
|
||||
:::
|
||||
|
||||
::: tip
|
||||
在 Kubernetes 1.15+,如果 `NonPreemptingPriority` 被启用了,PriorityClass 可以设置为 `preemptionPolicy: Never`,此时,该 PriorityClass 的所有 Pod 将不会抢占(preempty)其他 Pod 的资源
|
||||
:::
|
||||
|
||||
在 Kubernetes 1.11+,preemption 由 kube-scheduler 的参数 `disablePreemption` 设置,默认为 `false`。如果在您已经知晓上面的提示的情况下,仍然要禁用 preemption,可以将 `disablePreemption` 参数设置为 `true`。
|
||||
|
||||
该参数需要通过 YAML 文件配置,而不能通过命令行参数设定。示例配置如下所示:
|
||||
|
||||
``` yaml {8}
|
||||
apiVersion: kubescheduler.config.k8s.io/v1alpha1
|
||||
kind: KubeSchedulerConfiguration
|
||||
algorithmSource:
|
||||
provider: DefaultProvider
|
||||
|
||||
...
|
||||
|
||||
disablePreemption: true
|
||||
```
|
||||
|
||||
## PriorityClass
|
||||
|
||||
待续 ...
|
||||
|
||||
## Pod priority
|
||||
@ -16,7 +16,7 @@ meta:
|
||||
Secret 中的信息可以通过 `kubectl get secret` 命令获取。例如,执行命令 `kubectl get secret mysecret -o yaml
|
||||
` 可获取前面章节中所创建的 Secret,输出信息如下:
|
||||
|
||||
```
|
||||
``` yaml
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
|
||||
@ -34,7 +34,9 @@ Ingress Controller (通常需要负载均衡器配合)负责实现 Ingress A
|
||||
2. Ingress Controller 根据请求的域名 `a.kuboard.cn` 和路径 `abc` 匹配集群中所有的 Ingress 信息,并最终找到 `Ingress B` 中有这个配置,其对应的 Service 为 `Service B` 的 `9080` 端口
|
||||
3. Ingress Controller 通过 kube-proxy 将请求转发到 `Service B` 对应的任意一个 Pod 上 与 `Service B` 的 `9080` 端口对应的容器端口上。(从 Ingress Controller 到 Pod 的负载均衡由 kube-proxy + Service 实现)
|
||||
|
||||
<img src="./ingress.assets/image-20190910222649193.png" style="border: 1px solid #d7dae2; max-width: 720px;" alt="Kubernetes教程:Ingress及其Controller"></img>
|
||||
<p style="max-width: 720px;">
|
||||
<img src="./ingress.assets/image-20190910222649193.png" alt="Kubernetes教程:Ingress及其Controller"></img>
|
||||
</p>
|
||||
|
||||
## Ingress Controller
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@ layout: LearningLayout
|
||||
description: Kubernetes教程_本文描述了一个经典微服务参考架构_并且通过三个视图(集群概览、名称空间、工作负载)理解微服务与Kubernetes的映射关系。
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes微服务
|
||||
content: Kubernetes教程,K8S教程,Kubernetes微服务,K8S培训,K8S教程
|
||||
---
|
||||
|
||||
# 从微服务视角看Kubernetes
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
---
|
||||
vssueId: 68
|
||||
layout: LearningLayout
|
||||
metaTitle: Spring Cloud on Kubernetes(K8S教程/K8S培训)
|
||||
description: Kubernetes教程_微服务参考架构_包含微服务运行时_构建及测试_部署及运维_监控及评估__设计和研发Kuboard的初心便源于此SpringCloud微服务参考架构。
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
|
||||
content: Kubernetes教程,K8S教程,Kubernetes微服务,K8S培训
|
||||
---
|
||||
|
||||
# Spring Cloud on Kubernetes
|
||||
@ -47,9 +48,3 @@ Spring Cloud on Kubernetes 并不对 Spring Cloud 架构、组件等做过多解
|
||||
为了更好地阐述此主题,作者准备了一个最简单的微服务 example 作为例子,该 example 只实现了对一张简单数据库表执行 CRUD 操作的功能,该 example 的部署架构如下图所示,源代码请参考 [kuboard-example](https://github.com/eip-work/kuboard-example),您也可以直接通过 Kuboard [导入 example 微服务](/guide/example/import.html)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<script type='text/javascript' src='https://www.wjx.top/handler/jqemed.ashx?activity=43409534&width=760&source=iframe'></script>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user