merge master to 1.10, with fixes (#7682)
This commit is contained in:
committed by
k8s-ci-robot
parent
bb8c59a640
commit
44b51d6056
@@ -135,7 +135,7 @@ system:serviceaccount:<namespace>:default
|
||||
{"apiVersion":"abac.authorization.kubernetes.io/v1beta1","kind":"Policy","spec":{"user":"system:serviceaccount:kube-system:default","namespace":"*","resource":"*","apiGroup":"*"}}
|
||||
```
|
||||
|
||||
需要重新启动 apitorver 以获取新的策略行.
|
||||
需要重新启动 apiserver 以获取新的策略行.
|
||||
|
||||
{% endcapture %}
|
||||
{% include templates/concept.md %}
|
||||
|
||||
@@ -58,7 +58,7 @@ service Registration {
|
||||
```gRPC
|
||||
service DevicePlugin {
|
||||
// ListAndWatch returns a stream of List of Devices
|
||||
// Whenever a Device state change or a Device disapears, ListAndWatch
|
||||
// Whenever a Device state change or a Device disappears, ListAndWatch
|
||||
// returns the new list
|
||||
rpc ListAndWatch(Empty) returns (stream ListAndWatchResponse) {}
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ $ kubectl describe pods/private-image-test-1 | grep "Failed"
|
||||
|
||||
**注意:** Google Kubernetes Engine,GCE及其他自动创建node的云平台上,推荐使用本方法。
|
||||
|
||||
Kuberentes支持在pod中指定仓库密钥。
|
||||
Kubernetes支持在pod中指定仓库密钥。
|
||||
|
||||
#### 使用Docker Config创建Secret
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ Kubernetes 提供了很多的功能,总会有新的场景受益于新特性。
|
||||
|
||||
[Label](/docs/user-guide/labels/) 允许用户按照自己的方式组织管理对应的资源。 [注解](/docs/user-guide/annotations/) 使用户能够以自定义的描述信息来修饰资源,以适用于自己的工作流,并为管理工具提供检查点状态的简单方法。
|
||||
|
||||
此外,[Kubernetes 控制面 (Controll Plane)](/docs/admin/cluster-components) 是构建在相同的 [APIs](/docs/api/) 上面,开发人员和用户都可以用。用户可以编写自己的控制器, [调度器](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/docs/devel/scheduler.md)等等,如果这么做,根据新加的[自定义 API](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/extending-api.md) ,可以扩展当前的通用 [CLI 命令行工具](/docs/user-guide/kubectl-overview/)。
|
||||
此外,[Kubernetes 控制面 (Control Plane)](/docs/admin/cluster-components) 是构建在相同的 [APIs](/docs/api/) 上面,开发人员和用户都可以用。用户可以编写自己的控制器, [调度器](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/docs/devel/scheduler.md)等等,如果这么做,根据新加的[自定义 API](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/extending-api.md) ,可以扩展当前的通用 [CLI 命令行工具](/docs/user-guide/kubectl-overview/)。
|
||||
|
||||
这种 [设计](https://git.k8s.io/community/contributors/design-proposals/architecture/principles.md) 使得许多其他系统可以构建在 Kubernetes 之上。
|
||||
|
||||
|
||||
@@ -52,12 +52,12 @@ Kubernetes 系统读取 Deployment 规约,并启动我们所期望的该应用
|
||||
|
||||
### 描述 Kubernetes 对象
|
||||
|
||||
当创建 KUbernetes 对象时,必须提供对象的规约,用来描述该对象的期望状态,以及关于对象的一些基本信息(例如名称)。
|
||||
当使用 KUbernetes API 创建对象时(或者直接创建,或者基于`kubectl`),API 请求必须在请求体中包含 JSON 格式的信息。
|
||||
当创建 Kubernetes 对象时,必须提供对象的规约,用来描述该对象的期望状态,以及关于对象的一些基本信息(例如名称)。
|
||||
当使用 Kubernetes API 创建对象时(或者直接创建,或者基于`kubectl`),API 请求必须在请求体中包含 JSON 格式的信息。
|
||||
**大多数情况下,需要在 .yaml 文件中为 `kubectl` 提供这些信息**。
|
||||
`kubectl` 在发起 API 请求时,将这些信息转换成 JSON 格式。
|
||||
|
||||
这里有一个 `.yaml` 示例文件,展示了 KUbernetes Deployment 的必需字段和对象规约:
|
||||
这里有一个 `.yaml` 示例文件,展示了 Kubernetes Deployment 的必需字段和对象规约:
|
||||
|
||||
{% include code.html language="yaml" file="nginx-deployment.yaml" ghlink="/docs/concepts/overview/working-with-objects/nginx-deployment.yaml" %}
|
||||
|
||||
@@ -78,7 +78,7 @@ deployment "nginx-deployment" created
|
||||
|
||||
### 必需字段
|
||||
|
||||
在想要创建的 KUbernetes 对象对应的 `.yaml` 文件中,需要配置如下的字段:
|
||||
在想要创建的 Kubernetes 对象对应的 `.yaml` 文件中,需要配置如下的字段:
|
||||
|
||||
* `apiVersion` - 创建该对象所使用的 Kubernetes API 的版本
|
||||
* `kind` - 想要创建的对象的类型
|
||||
|
||||
@@ -17,11 +17,14 @@ spec:
|
||||
selector:
|
||||
run: my-nginx
|
||||
---
|
||||
apiVersion: apps/v1beta1
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-nginx
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
run: my-nginx
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
apiVersion: apps/v1beta1
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-nginx
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
run: my-nginx
|
||||
replicas: 2
|
||||
template:
|
||||
metadata:
|
||||
|
||||
@@ -1,238 +0,0 @@
|
||||
---
|
||||
approvers:
|
||||
- thockin
|
||||
title: CentOS
|
||||
---
|
||||
|
||||
* TOC
|
||||
{:toc}
|
||||
|
||||
## 警告
|
||||
|
||||
本文档适用于Kubernetes 1.1.0,目前已经被[废弃](https://github.com/kubernetes/website/issues/1613)。相关内容请参阅最新版[指南](/docs/getting-started-guides/kubeadm/)。
|
||||
|
||||
## 前提条件
|
||||
|
||||
在CentOS上部署和配置Kubernetes,您需要在集群中拥有一台机器作为master节点,并拥有至少一台运行CentOS 7系统的主机作为集群节点(node)。
|
||||
|
||||
## 启动一个集群
|
||||
|
||||
本文档是一篇基于CentOS系统部署和配置Kubernetes的入门指南,内容涵盖一个手工的配置,以便于您了解所有的底层软件包、服务以及端口等信息。
|
||||
|
||||
Kubernetes由一系列服务构成,包括kube-apiserver、kube-scheduler、kube-controller-manager、kubelet以及kube-proxy等。这些服务由systemd管理,配置集中位于/etc/kubernetes。我们将在集群中的不同主机上部署不同的服务。其中,第一台主机,即centos-master,将被部署成为Kubernetes集群中的master节点。这台主机上将运行kube-apiserver、kube-controller-manager和kube-scheduler。 此外,master节点还将运行 _etcd_。集群中剩余的主机,即centos-minion-n节点,将运行kubelet、proxy、cadvisor和docker。
|
||||
|
||||
集群中的所有节点将运行flanneld来构建网络(networking overlay)。
|
||||
|
||||
**系统信息:**
|
||||
|
||||
主机:
|
||||
|
||||
请使用您真实环境中的信息替换以下配置中的各个主机IP
|
||||
|
||||
```conf
|
||||
centos-master = 192.168.121.9
|
||||
centos-minion-1 = 192.168.121.65
|
||||
centos-minion-2 = 192.168.121.66
|
||||
centos-minion-3 = 192.168.121.67
|
||||
```
|
||||
|
||||
**配置主机环境:**
|
||||
|
||||
* 在集群所有节点上——centos-{master,minion-n},创建包含以下配置信息的/etc/yum.repos.d/virt7-docker-common-release.repo文件。
|
||||
|
||||
```conf
|
||||
[virt7-docker-common-release]
|
||||
name=virt7-docker-common-release
|
||||
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
|
||||
gpgcheck=0
|
||||
```
|
||||
|
||||
* 在集群所有节点上——centos-{master,minion-n},安装Kubernetes、etcd和flanneld。这一过程也将同时在节点上安装docker和cadvisor。
|
||||
|
||||
```shell
|
||||
yum -y install --enablerepo=virt7-docker-common-release kubernetes etcd flannel
|
||||
```
|
||||
|
||||
* 将master节点和其他节点的主机名——IP映射添加到所有集群节点的/etc/hosts文件中(如果主机名已经在DNS中记录,则可略过此步)
|
||||
|
||||
```shell
|
||||
echo "192.168.121.9 centos-master
|
||||
192.168.121.65 centos-minion-1
|
||||
192.168.121.66 centos-minion-2
|
||||
192.168.121.67 centos-minion-3" >> /etc/hosts
|
||||
```
|
||||
|
||||
* 编辑/etc/kubernetes/config文件以保证在集群所有主机上都包含以下内容:
|
||||
|
||||
```shell
|
||||
# logging to stderr意为从systemd journal获取日志
|
||||
KUBE_LOGTOSTDERR="--logtostderr=true"
|
||||
|
||||
# journal消息级别, 0代表debug
|
||||
KUBE_LOG_LEVEL="--v=0"
|
||||
|
||||
# 是否允许集群运行privileged docker containers
|
||||
KUBE_ALLOW_PRIV="--allow-privileged=false"
|
||||
|
||||
# 配置replication conrtoller和scheduler所需的kube-apiserver地址
|
||||
KUBE_MASTER="--master=http://centos-master:8080"
|
||||
```
|
||||
|
||||
* 由于docker与一些防火墙规则不兼容,需要在master节点及其他集群节点上禁用防火墙。在CentOS系统上,需要首先禁用SELinux,进而才能禁用防火墙。
|
||||
|
||||
```shell
|
||||
setenforce 0
|
||||
systemctl disable iptables-services firewalld
|
||||
systemctl stop iptables-services firewalld
|
||||
```
|
||||
|
||||
**配置master节点上的Kubernetes服务**
|
||||
|
||||
* 编辑/etc/etcd/etcd.conf文件内容如下:
|
||||
|
||||
```shell
|
||||
# [member]
|
||||
ETCD_NAME=default
|
||||
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
|
||||
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
|
||||
|
||||
#[cluster]
|
||||
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
|
||||
```
|
||||
|
||||
* 编辑/etc/kubernetes/apiserver文件内容如下:
|
||||
|
||||
```shell
|
||||
# 本地服务器监听地址
|
||||
KUBE_API_ADDRESS="--address=0.0.0.0"
|
||||
|
||||
# 本地服务器监听端口
|
||||
KUBE_API_PORT="--port=8080"
|
||||
|
||||
# Kubelet监听端口
|
||||
KUBELET_PORT="--kubelet-port=10250"
|
||||
|
||||
# 以逗号间隔的etcd集群中各个节点的地址
|
||||
KUBE_ETCD_SERVERS="--etcd-servers=http://centos-master:2379"
|
||||
|
||||
# Kubernetes服务IP地址网段
|
||||
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
|
||||
|
||||
# 请添加您需要的Kubernetes API Server启动参数
|
||||
KUBE_API_ARGS=""
|
||||
```
|
||||
|
||||
* 启动ETCD并保存master节点的网络设置(network overlay configuration):
|
||||
**警告** 请根据您的真实环境配置网络信息!在本文环境中,`172.30.0.0/16`网段是可用的。
|
||||
|
||||
```shell
|
||||
systemctl start etcd
|
||||
etcdctl mkdir /kube-centos/network
|
||||
etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"
|
||||
```
|
||||
|
||||
* 在master节点上配置/etc/sysconfig/flanneld文件使用flannel覆盖Docker网络 (需要在其他集群节点上完成相同配置,详见下文):
|
||||
|
||||
```shell
|
||||
# Flanneld配置选项
|
||||
|
||||
# etcd url地址,指向运行etcd的服务器
|
||||
FLANNEL_ETCD_ENDPOINTS="http://centos-master:2379"
|
||||
|
||||
# etcd配置秘钥,即flannel查询的配置秘钥
|
||||
# 用于网段分配
|
||||
FLANNEL_ETCD_PREFIX="/kube-centos/network"
|
||||
|
||||
# 其它需要的Flannel启动参数
|
||||
#FLANNEL_OPTIONS=""
|
||||
```
|
||||
|
||||
* 在master节点上启动相关服务:
|
||||
|
||||
```shell
|
||||
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler flanneld; do
|
||||
systemctl restart $SERVICES
|
||||
systemctl enable $SERVICES
|
||||
systemctl status $SERVICES
|
||||
done
|
||||
```
|
||||
|
||||
**在集群其他节点上配置Kubernetes服务**
|
||||
|
||||
***我们需要在集群其他节点上配置kubelet,启动kubelet和proxy服务***
|
||||
|
||||
* 编辑/etc/kubernetes/kubelet文件内容如下:
|
||||
|
||||
```shell
|
||||
# info server的服务地址
|
||||
KUBELET_ADDRESS="--address=0.0.0.0"
|
||||
|
||||
# info server的监听端口
|
||||
KUBELET_PORT="--port=10250"
|
||||
|
||||
# 本字段可以设置空值以使用真实的主机名
|
||||
# 注意节点序号(n)
|
||||
KUBELET_HOSTNAME="--hostname-override=centos-minion-n"
|
||||
|
||||
# api-server地址
|
||||
KUBELET_API_SERVER="--api-servers=http://centos-master:8080"
|
||||
|
||||
# 添加您所需要的Kubelet参数
|
||||
KUBELET_ARGS=""
|
||||
```
|
||||
|
||||
* 在所有节点上配置/etc/sysconfig/flanneld文件设置使用flannel覆盖Docker网络:
|
||||
|
||||
```shell
|
||||
# Flanneld配置选项
|
||||
|
||||
# etcd url地址,指向运行etcd的服务器
|
||||
FLANNEL_ETCD_ENDPOINTS="http://centos-master:2379"
|
||||
|
||||
# etcd配置秘钥,即flannel查询的配置秘钥
|
||||
# 用于网段分配
|
||||
FLANNEL_ETCD_PREFIX="/kube-centos/network"
|
||||
|
||||
# 其他需要配置的选项
|
||||
#FLANNEL_OPTIONS=""
|
||||
```
|
||||
|
||||
* 在节点上启动相关服务(centos-minion-n)
|
||||
|
||||
```shell
|
||||
for SERVICES in kube-proxy kubelet flanneld docker; do
|
||||
systemctl restart $SERVICES
|
||||
systemctl enable $SERVICES
|
||||
systemctl status $SERVICES
|
||||
done
|
||||
```
|
||||
* 配置kubectl
|
||||
|
||||
```shell
|
||||
kubectl config set-cluster default-cluster --server=http://centos-master:8080
|
||||
kubectl config set-context default-context --cluster=default-cluster --user=default-admin
|
||||
kubectl config use-context default-context
|
||||
```
|
||||
|
||||
*至此,Kubernetes在CentOS集群中的部署已经完成 !*
|
||||
|
||||
* 在centos-master节点上通过kubectl命令检查所有的Kubernetes节点已经到位
|
||||
|
||||
```shell
|
||||
$ kubectl get nodes
|
||||
NAME STATUS AGE VERSION
|
||||
centos-minion-1 Ready 3d v1.6.0+fff5156
|
||||
centos-minion-2 Ready 3d v1.6.0+fff5156
|
||||
centos-minion-3 Ready 3d v1.6.0+fff5156
|
||||
```
|
||||
|
||||
**现在,Kubernetes集群已经正常运行!可以创建测试pod验证集群了!**
|
||||
|
||||
## 支持级别
|
||||
|
||||
|
||||
IaaS Provider | Config. Mgmt | OS | Networking | Docs | Conforms | Support Level
|
||||
-------------------- | ------------ | ------ | ---------- | --------------------------------------------- | ---------| ----------------------------
|
||||
Bare-metal | custom | CentOS | flannel | [docs](/docs/getting-started-guides/centos/centos_manual_config) | | Community ([@coolsvap](https://github.com/coolsvap))
|
||||
|
||||
有关所有解决方案的支持级别信息,请参阅[解决方案列表](/docs/getting-started-guides/#table-of-solutions)。
|
||||
@@ -10,14 +10,14 @@ spec:
|
||||
args:
|
||||
- while true; do
|
||||
echo -en '\n';
|
||||
if [[ -e /etc/cpu_limit ]]; then
|
||||
echo -en '\n'; cat /etc/cpu_limit; fi;
|
||||
if [[ -e /etc/podinfo/cpu_limit ]]; then
|
||||
echo -en '\n'; cat /etc/podinfo/cpu_limit; fi;
|
||||
if [[ -e /etc/cpu_request ]]; then
|
||||
echo -en '\n'; cat /etc/cpu_request; fi;
|
||||
echo -en '\n'; cat /etc/podinfo/cpu_request; fi;
|
||||
if [[ -e /etc/mem_limit ]]; then
|
||||
echo -en '\n'; cat /etc/mem_limit; fi;
|
||||
echo -en '\n'; cat /etc/podinfo/mem_limit; fi;
|
||||
if [[ -e /etc/mem_request ]]; then
|
||||
echo -en '\n'; cat /etc/mem_request; fi;
|
||||
echo -en '\n'; cat /etc/podinfo/mem_request; fi;
|
||||
sleep 5;
|
||||
done;
|
||||
resources:
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
cpu: "250m"
|
||||
volumeMounts:
|
||||
- name: podinfo
|
||||
mountPath: /etc
|
||||
mountPath: /etc/podinfo
|
||||
readOnly: false
|
||||
volumes:
|
||||
- name: podinfo
|
||||
|
||||
@@ -16,15 +16,15 @@ spec:
|
||||
command: ["sh", "-c"]
|
||||
args:
|
||||
- while true; do
|
||||
if [[ -e /etc/labels ]]; then
|
||||
echo -en '\n\n'; cat /etc/labels; fi;
|
||||
if [[ -e /etc/annotations ]]; then
|
||||
echo -en '\n\n'; cat /etc/annotations; fi;
|
||||
if [[ -e /etc/podinfo/labels ]]; then
|
||||
echo -en '\n\n'; cat /etc/podinfo/labels; fi;
|
||||
if [[ -e /etc/podinfo/annotations ]]; then
|
||||
echo -en '\n\n'; cat /etc/podinfo/annotations; fi;
|
||||
sleep 5;
|
||||
done;
|
||||
volumeMounts:
|
||||
- name: podinfo
|
||||
mountPath: /etc
|
||||
mountPath: /etc/podinfo
|
||||
readOnly: false
|
||||
volumes:
|
||||
- name: podinfo
|
||||
|
||||
@@ -38,7 +38,7 @@ title: 概述
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content__modules">
|
||||
<div id="basics-modules" class="content__modules">
|
||||
<h2>Kubernetes 基础模块</h2>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
|
||||
@@ -728,7 +728,7 @@ spec:
|
||||
name: jmx
|
||||
- containerPort: 9042
|
||||
name: cql
|
||||
# If you need it it is going away in C* 4.0
|
||||
# If you need it, it will go away in C* 4.0.
|
||||
#- containerPort: 9160
|
||||
# name: thrift
|
||||
resources:
|
||||
|
||||
@@ -17,11 +17,14 @@ spec:
|
||||
selector:
|
||||
run: my-nginx
|
||||
---
|
||||
apiVersion: apps/v1beta1
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-nginx
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
run: my-nginx
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
apiVersion: apps/v1beta1
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-nginx
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
run: my-nginx
|
||||
replicas: 2
|
||||
template:
|
||||
metadata:
|
||||
|
||||
Reference in New Issue
Block a user