fix some typo and syntax error

pull/79/head
bin liu 2017-11-22 16:40:42 +08:00
parent 3c35271b11
commit 3ae1132344
5 changed files with 14 additions and 14 deletions

View File

@ -237,11 +237,11 @@ Pod 能够重启,会导致 Init 容器重新执行,主要有如下几个原
- 用户更新 PodSpec 导致 Init 容器镜像发生改变。应用容器镜像的变更只会重启应用容器。
- Pod 基础设施容器被重启。这不多见,但某些具有 root 权限可访问 Node 的人可能会这样做。
- 当 `restartPolicy` 设置为 AlwaysPod 中所有容器会终止,强制重启,由于垃圾收集导致 Init 容器完的记录丢失。
- 当 `restartPolicy` 设置为 AlwaysPod 中所有容器会终止,强制重启,由于垃圾收集导致 Init 容器完的记录丢失。
## 支持与兼容性
Apiserver 版本为 1.6 或更高版本的集群,通过使用 `spec.initContainers` 字段来支持 Init 容器。 之前的版本可以使用 alpha 和 beta 注解支持 Init 容器。 `spec.initContainers` 字段也被加入到 alpha 和 beta 注解中,所以 Kubernetes 1.3.0 版本或更高版本可以执行 Init 容器,并且 1.6 版本的 apiserver 能够安全回退到 1.5.x 版本,而不会使存在的已创建 Pod 失去 Init 容器的功能。
Apiserver 版本为 1.6 或更高版本的集群,通过使用 `spec.initContainers` 字段来支持 Init 容器。 之前的版本可以使用 alpha 和 beta 注解支持 Init 容器。 `spec.initContainers` 字段也被加入到 alpha 和 beta 注解中,所以 Kubernetes 1.3.0 版本或更高版本可以执行 Init 容器,并且 1.6 版本的 apiserver 能够安全回退到 1.5.x 版本,而不会使存在的已创建 Pod 失去 Init 容器的功能。
原文地址https://k8smeetup.github.io/docs/concepts/workloads/pods/init-containers/

View File

@ -57,7 +57,7 @@ Kubernetes 对象是 “目标性记录” —— 一旦创建对象Kubernete
### 描述 Kubernetes 对象
当创建 KUbernetes 对象时,必须提供对象的 spec用来描述该对象的期望状态以及关于对象的一些基本信息例如名称。当使用 KUbernetes API 创建对象时(或者直接创建,或者基于`kubectl`API 请求必须在请求体中包含 JSON 格式的信息。**更常用的是,需要在 .yaml 文件中为 kubectl 提供这些信息**。 `kubectl` 在执行 API 请求时,将这些信息转换成 JSON 格式。
当创建 Kubernetes 对象时,必须提供对象的 spec用来描述该对象的期望状态以及关于对象的一些基本信息例如名称。当使用 Kubernetes API 创建对象时(或者直接创建,或者基于`kubectl`API 请求必须在请求体中包含 JSON 格式的信息。**更常用的是,需要在 .yaml 文件中为 kubectl 提供这些信息**。 `kubectl` 在执行 API 请求时,将这些信息转换成 JSON 格式。
这里有一个 `.yaml` 示例文件,展示了 Kubernetes Deployment 的必需字段和对象 spec
@ -94,7 +94,7 @@ deployment "nginx-deployment" created
### 必需字段
在想要创建的 KUbernetes 对象对应的 `.yaml` 文件中,需要配置如下的字段:
在想要创建的 Kubernetes 对象对应的 `.yaml` 文件中,需要配置如下的字段:
- `apiVersion` - 创建该对象所使用的 Kubernetes API 的版本
- `kind` - 想要创建的对象的类型

View File

@ -15,18 +15,18 @@ Pods are employed a number of ways in a Kubernetes cluster, including:
- **一个Pod中运行一个容器**。“每个Pod中一个容器”的模式是最常见的用法在这种使用方式中你可以把Pod想象成是单个容器的封装kuberentes管理的是Pod而不是直接管理容器。
- **在一个Pod中同时运行多个容器**。一个Pod中也可以同时封装几个需要紧密耦合互相协作的容器它们之间共享资源。这些在同一个Pod中的容器可以互相协作成为一个service单位——一个容器共享文件另一个“sidecar”容器来更新这些文件。Pod将这些容器的存储资源作为一个实体来管理。
[Kubernetes Blog](http://blog.kubernetes.io) 有关于Pod用例的详细信息查看:
[Kubernetes Blog](http://blog.kubernetes.io) 有关于Pod用例的详细信息查看:
- [The Distributed System Toolkit: Patterns for Composite Containers](http://blog.kubernetes.io/2015/06/the-distributed-system-toolkit-patterns.html)
- [Container Design Patterns](http://blog.kubernetes.io/2016/06/container-design-patterns.html)
每个Pod都是应用的一个实例。如果你想平行扩展应用的话运行多个实例你应该运行多个Pod每个Pod都是一个应用实例。在Kubernetes中这通常被称为replication。
每个Pod都是应用的一个实例。如果你想平行扩展应用的话运行多个实例你应该运行多个Pod每个Pod都是一个应用实例。在Kubernetes中这通常被称为replication。
### Pod中如何管理多个容器
Pod中可以同时运行多个进程作为容器运行协同工作。同一个Pod中的容器会自动的分配到同一个 node 上。同一个Pod中的容器共享资源、网络环境和依赖它们总是被同时调度。
注意在一个Pod中同时运行多个容器是一种比较高级的用法。只有当你的容器需要紧密配合协作的时候才考虑用这种模式。例如你有一个容器作为web服务器运行需要用到共享的volume有另一个”sidecar“容器来从远端获取资源更新这些文件,如下图所示:
注意在一个Pod中同时运行多个容器是一种比较高级的用法。只有当你的容器需要紧密配合协作的时候才考虑用这种模式。例如你有一个容器作为web服务器运行需要用到共享的volume有另一个“sidecar”容器来从远端获取资源更新这些文件,如下图所示:
![pod diagram](../images/pod-overview.png)

View File

@ -8,17 +8,17 @@ V1 core版本的Pod的配置模板见[Pod template](../manifests/template/pod-v1
Pod就像是豌豆荚一样它由一个或者多个容器组成例如Docker容器它们共享容器存储、网络和容器运行配置项。Pod中的容器总是被同时调度有共同的运行环境。你可以把单个Pod想象成是运行独立应用的“逻辑主机”——其中运行着一个或者多个紧密耦合的应用容器——在有容器之前这些应用都是运行在几个相同的物理机或者虚拟机上。
尽管kubernetes支持多种容器运行时但是docker依然是最常用的运行时环境我们可以使用docker的术语和规则来定义Pod。
尽管kubernetes支持多种容器运行时但是Docker依然是最常用的运行时环境我们可以使用Docker的术语和规则来定义Pod。
Pod中共享的环境包括Linux的namespacecgroup和其他可能的隔绝环境这一点跟docker容器一致。在Pod的环境中每个容器中可能还有更小的子隔离环境。
Pod中共享的环境包括Linux的namespacecgroup和其他可能的隔绝环境这一点跟Docker容器一致。在Pod的环境中每个容器中可能还有更小的子隔离环境。
Pod中的容器共享IP地址和端口号它们之间可以通过`localhost`互相发现。它们之间可以通过进程间通信,例如[SystemV](https://en.wikipedia.org/wiki/UNIX_System_V)信号或者POSIX共享内存。不同Pod之间的容器具有不同的IP地址不能直接通过IPC通信。
Pod中的容器也有访问共享volume的权限这些volume会被定义成pod的一部分并挂载到应用容器的文件系统中。
根据docker的结构Pod中的容器共享namespace和volume不支持共享PID的namespace。
根据Docker的结构Pod中的容器共享namespace和volume不支持共享PID的namespace。
就像每个应用容器pod被认为是临时非持久的实体。在Pod的生命周期中讨论过pod被创建后被分配一个唯一的UIUID调度到节点上并一致维持期望的状态直到被终结根据重启策略或者被删除。如果node死掉了分配到了这个node上的pod在经过一个超时时间后会被重新调度到其他node节点上。一个给定的pod如UID定义的不会被“重新调度”到新的节点上而是被一个同样的pod取代如果期望的话甚至可以是相同的名字但是会有一个新的UID查看replication controller获取详情未来一个更高级别的API将支持pod迁移
就像每个应用容器pod被认为是临时非持久的实体。在Pod的生命周期中讨论过pod被创建后被分配一个唯一的IDUID调度到节点上并一致维持期望的状态直到被终结根据重启策略或者被删除。如果node死掉了分配到了这个node上的pod在经过一个超时时间后会被重新调度到其他node节点上。一个给定的pod如UID定义的不会被“重新调度”到新的节点上而是被一个同样的pod取代如果期望的话甚至可以是相同的名字但是会有一个新的UID查看replication controller获取详情未来一个更高级别的API将支持pod迁移
Volume跟pod有相同的生命周期当其UID存在的时候。当Pod因为某种原因被删除或者被新创建的相同的Pod取代它相关的东西例如volume也会被销毁和再创建一个新的volume。
@ -114,9 +114,9 @@ Pod的强制删除是通过在集群和etcd中将其定义为删除状态。当
## Pod中容器的特权模式
从kubernetes1.1版本开始pod中的容器就可以开启previleged模式在容器定义文件的 `SecurityContext` 下使用 `privileged` flag。 这在使用linux的网络操作和访问设备的能力时是很用的。同时开启的特权模式的Pod中的容器也可以访问到容器外的进程和应用。在不需要修改和重新编译kubelet的情况下就可以使用pod来开发节点的网络和存储插件。
从kubernetes1.1版本开始pod中的容器就可以开启previleged模式在容器定义文件的 `SecurityContext` 下使用 `privileged` flag。 这在使用Linux的网络操作和访问设备的能力时是很用的。同时开启的特权模式的Pod中的容器也可以访问到容器外的进程和应用。在不需要修改和重新编译kubelet的情况下就可以使用pod来开发节点的网络和存储插件。
如果master节点运行的是kuberentes1.1.或更高版本而node节点的版本低于1.1版本则API server将也可以接受新的特权模式的pod但是无法启动pod将处于pending状态。
如果master节点运行的是kuberentes1.1或更高版本而node节点的版本低于1.1版本则API server将也可以接受新的特权模式的pod但是无法启动pod将处于pending状态。
执行 `kubectl describe pod FooPodName`可以看到为什么pod处于pending状态。输出的event列表中将显示
`Error validating pod "FooPodName"."FooPodNamespace" from api, ignoring: spec.containers[0].securityContext.privileged: forbidden '<*>(0xc2089d3248)true'`

View File

@ -70,7 +70,7 @@
由于对代理的规则传播是异步的因此在尝试访问应用程序之前需要等待几秒钟才能将规则传播到所有pod。
2. 在浏览器中打开BookInfo URLhttp://$GATEWAY_URL/productpage我们在上一节中使用的是 http://ingress.istio.io/productpage 您应该会看到BookInfo应用程序的产品页面显示。 注意,产品页面上没有评分星,因为`reviews:v1`不访问评级服务。
2. 在浏览器中打开BookInfo URLhttp://$GATEWAY_URL/productpage ,我们在上一节中使用的是 http://ingress.istio.io/productpage 您应该会看到BookInfo应用程序的产品页面显示。 注意,产品页面上没有评分星,因为`reviews:v1`不访问评级服务。
3. 将特定用户路由到`reviews:v2`。