Merge pull request #43703 from metachris/glusterfsReadmeUpdate

Automatic merge from submit-queue

Fixed typos and issues in examples/volumes/glusterfs/README.md

**What this PR does / why we need it**:

This PR updates the GlusterFS `README.md` to fix several typos, outdated documentation and examples that did not work anymore.

**Which issue this PR fixes** 

None

**Special notes for your reviewer**:

None

**Release note**:

`release-note-NONE`
This commit is contained in:
Kubernetes Submit Queue 2017-04-22 23:23:40 -07:00 committed by GitHub
commit 28b47b5ebd
2 changed files with 36 additions and 37 deletions

View File

@ -1,34 +1,35 @@
## Glusterfs ## GlusterFS
[Glusterfs](http://www.gluster.org) is an open source scale-out filesystem. These examples provide information about how to allow containers use Glusterfs volumes. [GlusterFS](http://www.gluster.org) is an open source scale-out filesystem. These examples provide information about how to allow containers use GlusterFS volumes.
The example assumes that you have already set up a Glusterfs server cluster and the Glusterfs client package is installed on all Kubernetes nodes. The example assumes that you have already set up a GlusterFS server cluster and have a working GlusterFS volume ready to use in the containers.
### Prerequisites ### Prerequisites
Set up Glusterfs server cluster; install Glusterfs client package on the Kubernetes nodes. ([Guide](http://gluster.readthedocs.io/en/latest/Administrator%20Guide/)) * Set up a GlusterFS server cluster
* Create a GlusterFS volume
* If you are not using hyperkube, you may need to install the GlusterFS client package on the Kubernetes nodes ([Guide](http://gluster.readthedocs.io/en/latest/Administrator%20Guide/))
### Create endpoints ### Create endpoints
Here is a snippet of [glusterfs-endpoints.json](glusterfs-endpoints.json), The first step is to create the GlusterFS endpoints definition in Kubernetes. Here is a snippet of [glusterfs-endpoints.json](glusterfs-endpoints.json):
``` ```
"addresses": [ "subsets": [
{ {
"IP": "10.240.106.152" "addresses": [{ "ip": "10.240.106.152" }],
} "ports": [{ "port": 1 }]
], },
"ports": [
{ {
"port": 1 "addresses": [{ "ip": "10.240.79.157" }],
"ports": [{ "port": 1 }]
} }
] ]
``` ```
The "IP" field should be filled with the address of a node in the Glusterfs server cluster. In this example, it is fine to give any valid value (from 1 to 65535) to the "port" field. The `subsets` field should be populated with the addresses of the nodes in the GlusterFS cluster. It is fine to provide any valid value (from 1 to 65535) in the `port` field.
Create the endpoints, Create the endpoints:
```sh ```sh
$ kubectl create -f examples/volumes/glusterfs/glusterfs-endpoints.json $ kubectl create -f examples/volumes/glusterfs/glusterfs-endpoints.json
@ -42,7 +43,7 @@ NAME ENDPOINTS
glusterfs-cluster 10.240.106.152:1,10.240.79.157:1 glusterfs-cluster 10.240.106.152:1,10.240.79.157:1
``` ```
We need also create a service for this endpoints, so that the endpoints will be persistented. We will add this service without a selector to tell Kubernetes we want to add its endpoints manually. You can see [glusterfs-service.json](glusterfs-service.json) for details. We also need to create a service for these endpoints, so that they will persist. We will add this service without a selector to tell Kubernetes we want to add its endpoints manually. You can see [glusterfs-service.json](glusterfs-service.json) for details.
Use this command to create the service: Use this command to create the service:
@ -51,11 +52,12 @@ $ kubectl create -f examples/volumes/glusterfs/glusterfs-service.json
``` ```
### Create a POD ### Create a Pod
The following *volume* spec in [glusterfs-pod.json](glusterfs-pod.json) illustrates a sample configuration. The following *volume* spec in [glusterfs-pod.json](glusterfs-pod.json) illustrates a sample configuration:
```json ```json
"volumes": [
{ {
"name": "glusterfsvol", "name": "glusterfsvol",
"glusterfs": { "glusterfs": {
@ -64,11 +66,12 @@ The following *volume* spec in [glusterfs-pod.json](glusterfs-pod.json) illustra
"readOnly": true "readOnly": true
} }
} }
]
``` ```
The parameters are explained as the followings. The parameters are explained as the followings.
- **endpoints** is endpoints name that represents a Gluster cluster configuration. *kubelet* is optimized to avoid mount storm, it will randomly pick one from the endpoints to mount. If this host is unresponsive, the next Gluster host in the endpoints is automatically selected. - **endpoints** is the name of the Endpoints object that represents a Gluster cluster configuration. *kubelet* is optimized to avoid mount storm, it will randomly pick one from the endpoints to mount. If this host is unresponsive, the next Gluster host in the endpoints is automatically selected.
- **path** is the Glusterfs volume name. - **path** is the Glusterfs volume name.
- **readOnly** is the boolean that sets the mountpoint readOnly or readWrite. - **readOnly** is the boolean that sets the mountpoint readOnly or readWrite.
@ -84,17 +87,13 @@ You can verify that the pod is running:
$ kubectl get pods $ kubectl get pods
NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE
glusterfs 1/1 Running 0 3m glusterfs 1/1 Running 0 3m
$ kubectl get pods glusterfs -t '{{.status.hostIP}}{{"\n"}}'
10.240.169.172
``` ```
You may ssh to the host (the hostIP) and run 'mount' to see if the Glusterfs volume is mounted, You may execute the command `mount` inside the container to see if the GlusterFS volume is mounted correctly:
```sh ```sh
$ mount | grep kube_vol $ kubectl exec glusterfs -- mount | grep gluster
10.240.106.152:kube_vol on /var/lib/kubelet/pods/f164a571-fa68-11e4-ad5c-42010af019b7/volumes/kubernetes.io~glusterfs/glusterfsvol type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072) 10.240.106.152:kube_vol on /mnt/glusterfs type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)```
```
You may also run `docker ps` on the host to see the actual container. You may also run `docker ps` on the host to see the actual container.

View File

@ -8,7 +8,7 @@
"containers": [ "containers": [
{ {
"name": "glusterfs", "name": "glusterfs",
"image": "kubernetes/pause", "image": "nginx",
"volumeMounts": [ "volumeMounts": [
{ {
"mountPath": "/mnt/glusterfs", "mountPath": "/mnt/glusterfs",