mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Fix mounting volumes in docker based kubernetes setup.
This commit is contained in:
		@@ -1,12 +1,15 @@
 | 
				
			|||||||
FROM google/debian:wheezy
 | 
					FROM debian:jessie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN apt-get update
 | 
					RUN apt-get update
 | 
				
			||||||
RUN apt-get -yy -q install iptables ca-certificates
 | 
					RUN apt-get -yy -q install iptables ca-certificates file util-linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN cp /usr/bin/nsenter /nsenter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY hyperkube /hyperkube
 | 
					COPY hyperkube /hyperkube
 | 
				
			||||||
RUN chmod a+rx /hyperkube
 | 
					RUN chmod a+rx /hyperkube
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
COPY master-multi.json /etc/kubernetes/manifests-multi/master.json
 | 
					COPY master-multi.json /etc/kubernetes/manifests-multi/master.json
 | 
				
			||||||
COPY master.json /etc/kubernetes/manifests/master.json
 | 
					COPY master.json /etc/kubernetes/manifests/master.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY safe_format_and_mount /usr/share/google/safe_format_and_mount
 | 
					COPY safe_format_and_mount /usr/share/google/safe_format_and_mount
 | 
				
			||||||
RUN chmod a+rx /usr/share/google/safe_format_and_mount
 | 
					RUN chmod a+rx /usr/share/google/safe_format_and_mount
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,15 +92,24 @@ docker run --net=host -d gcr.io/google_containers/etcd:2.0.12 /usr/local/bin/etc
 | 
				
			|||||||
### Step Two: Run the master
 | 
					### Step Two: Run the master
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sh
 | 
					```sh
 | 
				
			||||||
docker run --net=host --privileged -d -v /sys:/sys:ro -v /var/run/docker.sock:/var/run/docker.sock  gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube kubelet --api-servers=http://localhost:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=127.0.0.1 --config=/etc/kubernetes/manifests
 | 
					docker run \
 | 
				
			||||||
 | 
					    --volume=/:/rootfs:ro \
 | 
				
			||||||
 | 
					    --volume=/sys:/sys:ro \
 | 
				
			||||||
 | 
					    --volume=/dev:/dev \
 | 
				
			||||||
 | 
					    --volume=/var/lib/docker/:/var/lib/docker:ro \
 | 
				
			||||||
 | 
					    --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
 | 
				
			||||||
 | 
					    --volume=/var/run:/var/run:rw \
 | 
				
			||||||
 | 
					    --net=host \
 | 
				
			||||||
 | 
					    --privileged=true \
 | 
				
			||||||
 | 
					    -d \
 | 
				
			||||||
 | 
					    gcr.io/google_containers/hyperkube:v1.0.1 \
 | 
				
			||||||
 | 
					    /hyperkube kubelet --containerized --hostname-override="127.0.0.1" --address="0.0.0.0" --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This actually runs the kubelet, which in turn runs a [pod](../user-guide/pods.md) that contains the other master components.
 | 
					This actually runs the kubelet, which in turn runs a [pod](../user-guide/pods.md) that contains the other master components.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Step Three: Run the service proxy
 | 
					### Step Three: Run the service proxy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*Note, this could be combined with master above, but it requires --privileged for iptables manipulation*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```sh
 | 
					```sh
 | 
				
			||||||
docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2
 | 
					docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,8 +71,8 @@ func NewNsenterMounter() *NsenterMounter {
 | 
				
			|||||||
		// default to root
 | 
							// default to root
 | 
				
			||||||
		m.paths[binary] = filepath.Join("/", binary)
 | 
							m.paths[binary] = filepath.Join("/", binary)
 | 
				
			||||||
		for _, path := range []string{"/bin", "/usr/sbin", "/usr/bin"} {
 | 
							for _, path := range []string{"/bin", "/usr/sbin", "/usr/bin"} {
 | 
				
			||||||
			binPath := filepath.Join(hostRootFsPath, path, binary)
 | 
								binPath := filepath.Join(path, binary)
 | 
				
			||||||
			if _, err := os.Stat(binPath); err != nil {
 | 
								if _, err := os.Stat(filepath.Join(hostRootFsPath, binPath)); err != nil {
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			m.paths[binary] = binPath
 | 
								m.paths[binary] = binPath
 | 
				
			||||||
@@ -176,8 +176,9 @@ func (n *NsenterMounter) IsLikelyNotMountPoint(file string) (bool, error) {
 | 
				
			|||||||
	exec := exec.New()
 | 
						exec := exec.New()
 | 
				
			||||||
	out, err := exec.Command(nsenterPath, args...).CombinedOutput()
 | 
						out, err := exec.Command(nsenterPath, args...).CombinedOutput()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		// If findmnt didn't run, just claim it's not a mount point.
 | 
							// If the command itself is correct, then if we encountered error
 | 
				
			||||||
		return true, nil
 | 
							// then most likely this means that the directory does not exist.
 | 
				
			||||||
 | 
							return true, os.ErrNotExist
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	strOut := strings.TrimSuffix(string(out), "\n")
 | 
						strOut := strings.TrimSuffix(string(out), "\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user