mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 10:18:13 +00:00 
			
		
		
		
	Fixed typos and issues in examples/volumes/glusterfs/README.md
Updated the GlusterFS `README.md` to fix several typos, outdated documentation and examples that did not work anymore. Updated examples/volumes/glusterfs/README.md with better examples Updated the examples/volumes/glusterfs README with a better explanation of the endpoints attribute
This commit is contained in:
		| @@ -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": [ |     { | ||||||
|         { |       "addresses": [{ "ip": "10.240.79.157" }], | ||||||
|           "port": 1 |       "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,24 +52,26 @@ $ 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", |   { | ||||||
|      "glusterfs": { |     "name": "glusterfsvol", | ||||||
|         "endpoints": "glusterfs-cluster", |     "glusterfs": { | ||||||
|         "path": "kube_vol", |       "endpoints": "glusterfs-cluster", | ||||||
|         "readOnly": true |       "path": "kube_vol", | ||||||
|  |       "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. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|         "containers": [ |         "containers": [ | ||||||
|             { |             { | ||||||
|                 "name": "glusterfs", |                 "name": "glusterfs", | ||||||
|                 "image": "kubernetes/pause", |                 "image": "nginx", | ||||||
|                 "volumeMounts": [ |                 "volumeMounts": [ | ||||||
|                     { |                     { | ||||||
|                         "mountPath": "/mnt/glusterfs", |                         "mountPath": "/mnt/glusterfs", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Chris Hager
					Chris Hager