Merge branch 'master' into whmzsu

pull/178/head
whmzsu 2018-04-15 19:28:00 +08:00 committed by GitHub
commit 01b9fba75e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 27 deletions

View File

@ -39,4 +39,15 @@ Gitbook 在线浏览https://jimmysong.io/kubernetes-handbook/
<p align="center"> <p align="center">
<img src="https://github.com/rootsongjc/kubernetes-handbook/blob/master/images/cloud-native-go-wechat-qr-code.jpg?raw=true" alt="CloudNativeGo微信公众号二维码"/> <img src="https://github.com/rootsongjc/kubernetes-handbook/blob/master/images/cloud-native-go-wechat-qr-code.jpg?raw=true" alt="CloudNativeGo微信公众号二维码"/>
</p> </p>
## 支持本书
为贡献者加油⛽️!为云原生干杯🍻!
使用微信扫一扫请贡献者喝一杯🍺
<p align="center">
<img src="https://github.com/rootsongjc/kubernetes-handbook/blob/master/images/wechat-appreciate-qrcode.jpg?raw=true" alt="微信赞赏码"/>
</p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,6 +1,6 @@
# 使用Heketi作为kubernetes的持久存储GlusterFS的external provisionerKubernetes集成GlusterFS集群和Heketi # 使用Heketi作为kubernetes的持久存储GlusterFS的external provisionerKubernetes集成GlusterFS集群和Heketi
本文翻译自heketi的github网址官方文档https://github.com/heketi/heketi/blob/master/docs/admin/install-kubernetes.md 大部分为google翻译,少许人工调整,括号内为个人注解)其中注意事项部分为其他网上查询所得。 本文翻译自[heketi的github网址官方文档](https://github.com/heketi/heketi/blob/master/docs/admin/install-kubernetes.md )大部分为google翻译少许人工调整,括号内为个人注解)其中注意事项部分为其他网上查询所得。
本文的整个过程将在kubernetes集群上的3个或以上节点安装glusterfs的服务端集群DaemonSet方式并将heketi以deployment的方式部署到kubernetes集群。在我的示例部分有StorageClass和PVC的样例。本文介绍的HeketiGlusterFS这2个组件与kubernetes集成只适合用于测试验证环境并不适合生产环境请注意这一点。 本文的整个过程将在kubernetes集群上的3个或以上节点安装glusterfs的服务端集群DaemonSet方式并将heketi以deployment的方式部署到kubernetes集群。在我的示例部分有StorageClass和PVC的样例。本文介绍的HeketiGlusterFS这2个组件与kubernetes集成只适合用于测试验证环境并不适合生产环境请注意这一点。
Heketi是一个具有resetful接口的glusterfs管理程序作为kubernetes的Storage存储的external provisioner。 Heketi是一个具有resetful接口的glusterfs管理程序作为kubernetes的Storage存储的external provisioner。
@ -17,11 +17,7 @@ Heketi是一个具有resetful接口的glusterfs管理程序作为kubernetes
本指南支持在Kubernetes集群中集成部署和管理GlusterFS 容器化的存储节点。这使得Kubernetes管理员可以为其用户提供可靠的共享存储。 本指南支持在Kubernetes集群中集成部署和管理GlusterFS 容器化的存储节点。这使得Kubernetes管理员可以为其用户提供可靠的共享存储。
跟这个话题相关的另一个重要资源是 跟这个话题相关的另一个重要资源是[gluster-kubernetes](https://github.com/gluster/gluster-kubernetes) 项目。它专注于在Kubernetes集群中部署GlusterFS并提供简化的工具来完成此任务。它包含一个安装指南 [setup guide](https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md)。它还包括一个样例 [Hello World](https://github.com/gluster/gluster-kubernetes/tree/master/docs/examples/hello_world)。其中包含一个使用动态配置dynamically-provisioned的GlusterFS卷进行存储的Web server pod示例。对于那些想要测试或学习更多关于此主题的人请按照主[README](https://github.com/gluster/gluster-kubernetes) 的快速入门说明 进行操作。
[gluster-kubernetes](https://github.com/gluster/gluster-kubernetes) 项目。
它专注于在Kubernetes集群中部署GlusterFS并提供简化的工具来完成此任务。它包含一个安装指南 [setup guide](https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md).
它还包括一个样例 [Hello World](https://github.com/gluster/gluster-kubernetes/tree/master/docs/examples/hello_world)。
其中包含一个使用动态配置dynamically-provisioned的GlusterFS卷进行存储的Web server pod示例。对于那些想要测试或学习更多关于此主题的人请按照主[README](https://github.com/gluster/gluster-kubernetes) 的快速入门说明 进行操作。
本指南旨在展示Heketi在Kubernetes环境中管理Gluster的最简单示例。这是为了强调这种配置的主要组成组件因此并不适合生产环境。 本指南旨在展示Heketi在Kubernetes环境中管理Gluster的最简单示例。这是为了强调这种配置的主要组成组件因此并不适合生产环境。
@ -44,7 +40,7 @@ Heketi提供了一个CLI客户端为用户提供了一种管理Kubernetes中G
## Glusterfs和Heketi在Kubernetes集群中的部署过程 ## Glusterfs和Heketi在Kubernetes集群中的部署过程
以下所有文件都位于下方extras/kubernetes (git clone https://github.com/heketi/heketi.git)。 以下所有文件都位于下方extras/kubernetes (`git clone https://github.com/heketi/heketi.git`)。
* 部署 GlusterFS DaemonSet * 部署 GlusterFS DaemonSet
@ -135,7 +131,7 @@ Hello from heketi
修改拓扑文件以反映您所做的选择然后如下所示部署它修改主机名IPblock 设备的名称 如xvdg 修改拓扑文件以反映您所做的选择然后如下所示部署它修改主机名IPblock 设备的名称 如xvdg
```bash ```bash
#./heketi-client/bin/heketi-cli topology load --json=topology-sample.json heketi-client/bin/heketi-cli topology load --json=topology-sample.json
Handling connection for 57598 Handling connection for 57598
Found node ip-172-20-0-217.ec2.internal on cluster e6c063ba398f8e9c88a6ed720dc07dd2 Found node ip-172-20-0-217.ec2.internal on cluster e6c063ba398f8e9c88a6ed720dc07dd2
Adding device /dev/xvdg ... OK Adding device /dev/xvdg ... OK
@ -249,20 +245,19 @@ deployment "heketi" created
} }
] ]
} }
``` ```
* 确认glusterfs和heketi的pod运行正常 * 确认glusterfs和heketi的pod运行正常
```bash ```bash
# kubectl get pod # kubectl get pod
NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE
glusterfs-gf5zc 1/1 Running 2 8h glusterfs-gf5zc 1/1 Running 2 8h
glusterfs-ngc55 1/1 Running 2 8h glusterfs-ngc55 1/1 Running 2 8h
glusterfs-zncjs 1/1 Running 0 2h glusterfs-zncjs 1/1 Running 0 2h
heketi-5c8ffcc756-x9gnv 1/1 Running 5 7h heketi-5c8ffcc756-x9gnv 1/1 Running 5 7h
``` ```
* StorageClass ymal文件示例 * StorageClass yaml文件示例
```bash ```bash
# cat storage-class-slow.yaml # cat storage-class-slow.yaml
@ -315,7 +310,6 @@ myclaim Bound pvc-e98e9117-3ed7-11e8-b61d-08002795cb26
# kubectl get pv|grep myclaim # kubectl get pv|grep myclaim
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-e98e9117-3ed7-11e8-b61d-08002795cb26 1Gi RWO Delete Bound default/myclaim slow 1m pvc-e98e9117-3ed7-11e8-b61d-08002795cb26 1Gi RWO Delete Bound default/myclaim slow 1m
``` ```
* 可以将slow的sc设置为默认这样平台分配存储的时候可以自动从glusterfs集群分配pv * 可以将slow的sc设置为默认这样平台分配存储的时候可以自动从glusterfs集群分配pv
@ -328,7 +322,6 @@ storageclass.storage.k8s.io "slow" patched
NAME PROVISIONER AGE NAME PROVISIONER AGE
default fuseim.pri/ifs 1d default fuseim.pri/ifs 1d
slow (default) kubernetes.io/glusterfs 6h slow (default) kubernetes.io/glusterfs 6h
``` ```
# 容量限额测试 # 容量限额测试
已经通过Helm 部署的一个mysql2 实例使用存储2G信息查看如下 已经通过Helm 部署的一个mysql2 实例使用存储2G信息查看如下
@ -349,7 +342,6 @@ mysql2-mysql Bound pvc-ea4ae3e0-3e22-11e8-8bb6-08002795cb26
# kubectl get pv # kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-ea4ae3e0-3e22-11e8-8bb6-08002795cb26 2Gi RWO Delete Bound default/mysql2-mysql slow 19h pvc-ea4ae3e0-3e22-11e8-8bb6-08002795cb26 2Gi RWO Delete Bound default/mysql2-mysql slow 19h
``` ```
查看mysql的pod 查看mysql的pod
@ -357,7 +349,6 @@ pvc-ea4ae3e0-3e22-11e8-8bb6-08002795cb26 2Gi RWO Delete
```bash ```bash
# kubectl get pod|grep mysql2 # kubectl get pod|grep mysql2
mysql2-mysql-56d64f5b77-j2v84 1/1 Running 2 19h mysql2-mysql-56d64f5b77-j2v84 1/1 Running 2 19h
``` ```
进入mysql所在容器 进入mysql所在容器
@ -383,7 +374,7 @@ tmpfs 1.5G 0 1.5G 0% /sys/f
使用dd写入数据写入一段时间以后空间满了会报错报错信息有bug不是报空间满了而是报文件系统只读应该是glusterfs和docker配合的问题 使用dd写入数据写入一段时间以后空间满了会报错报错信息有bug不是报空间满了而是报文件系统只读应该是glusterfs和docker配合的问题
```bash ```bash
root@mysql2-mysql-56d64f5b77-j2v84:/var/lib/mysql# dd if=/dev/zero of=test.img bs=8M count=300 root@mysql2-mysql-56d64f5b77-j2v84:/var/lib/mysql# dd if=/dev/zero of=test.img bs=8M count=300
dd: error writing 'test.img': Read-only file system dd: error writing 'test.img': Read-only file system
dd: closing output file 'test.img': Input/output error dd: closing output file 'test.img': Input/output error

View File

@ -4,13 +4,13 @@
## nfs-client-provisioner ## nfs-client-provisioner
nfs-client-provisioner 是一个Kubernetes的简易NFS的外部provisioner本身不提供NFS需要现有的NFS服务器提供存储 nfs-client-provisioner 是一个Kubernetes的简易NFS的外部provisioner本身不提供NFS需要现有的NFS服务器提供存储
- PV以 ${namespace}-${pvcName}-${pvName}的命名格式提供在NFS服务器上 - PV以 `${namespace}-${pvcName}-${pvName}`的命名格式提供在NFS服务器上
- PV回收的时候以 archieved-${namespace}-${pvcName}-${pvName}的命名格式在NFS服务器上 - PV回收的时候以 `archieved-${namespace}-${pvcName}-${pvName}` 的命名格式在NFS服务器上
## 安装部署 ## 安装部署
- 修改deployment文件并部署 `deploy/deployment.yaml` - 修改deployment文件并部署 `deploy/deployment.yaml`
需要修改的地方只有NFS服务器所在的IP地址10.10.10.60以及NFS服务器共享的路径/ifs/kubernetes两处都需要修改为你实际的NFS服务器和共享目录 需要修改的地方只有NFS服务器所在的IP地址10.10.10.60以及NFS服务器共享的路径`/ifs/kubernetes`两处都需要修改为你实际的NFS服务器和共享目录
```yaml ```yaml
kind: Deployment kind: Deployment
apiVersion: extensions/v1beta1 apiVersion: extensions/v1beta1
@ -95,9 +95,9 @@ $ kubectl patch deployment nfs-client-provisioner -p '{"spec":{"template":{"spec
* NFS服务器配置 * NFS服务器配置
```bash ```bash
# cat /etc/exports # cat /etc/exports
```
``` ```
```ini
/media/docker *(no_root_squash,rw,sync,no_subtree_check) /media/docker *(no_root_squash,rw,sync,no_subtree_check)
``` ```
@ -148,7 +148,7 @@ spec:
可以修改Class的名字我的改成了default。 可以修改Class的名字我的改成了default。
```bash ```bash
# cat class.yaml # cat class.yaml
``` ```
```yaml ```yaml
apiVersion: storage.k8s.io/v1 apiVersion: storage.k8s.io/v1
@ -173,14 +173,13 @@ storageclass.storage.k8s.io "default" patched
# kubectl get sc # kubectl get sc
NAME PROVISIONER AGE NAME PROVISIONER AGE
default (default) fuseim.pri/ifs 2d default (default) fuseim.pri/ifs 2d
``` ```
* 测试创建PVC * 测试创建PVC
查看pvc文件 查看pvc文件
```bash ```bash
# cat test-claim.yaml # cat test-claim.yaml
``` ```
```yaml ```yaml
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
@ -196,7 +195,7 @@ spec:
``` ```
创建PVC 创建PVC
```bash ```bash
# kubectl apply -f test-claim.yaml # kubectl apply -f test-claim.yaml
persistentvolumeclaim "test-claim" created persistentvolumeclaim "test-claim" created
root@Ubuntu-master:~/kubernetes/nfs# kubectl get pvc|grep test root@Ubuntu-master:~/kubernetes/nfs# kubectl get pvc|grep test
test-claim Bound pvc-fe3cb938-3f15-11e8-b61d-08002795cb26 1Mi RWX default 10s test-claim Bound pvc-fe3cb938-3f15-11e8-b61d-08002795cb26 1Mi RWX default 10s
@ -236,7 +235,7 @@ spec:
启动POD一会儿POD就是completed状态说明执行完毕。 启动POD一会儿POD就是completed状态说明执行完毕。
```bash ```bash
# kubectl apply -f test-pod.yaml # kubectl apply -f test-pod.yaml
pod "test-pod" created pod "test-pod" created
kubectl get pod|grep test kubectl get pod|grep test
test-pod 0/1 Completed 0 40s test-pod 0/1 Completed 0 40s