mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 13:50:01 +00:00 
			
		
		
		
	As per http://blog.docker.com/2015/03/updates-available-to-popular-repos-update-your-images/ docker has stopped answering dockerfile/redis and dockerfile/nginx. Fix all users in our tree. Sadly this means a lot of published examples are now broken.
		
			
				
	
	
		
			177 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ## Getting started on Google Compute Engine
 | |
| 
 | |
| The example below creates a Kubernetes cluster with 4 worker node Virtual Machines and a master Virtual Machine (i.e. 5 VMs in your cluster). This cluster is set up and controlled from your workstation (or wherever you find convenient).
 | |
| 
 | |
| ### Before you start
 | |
| 
 | |
| If you want a simplified getting started experience and GUI for managing clusters, please consider trying [Google Container Engine](https://cloud.google.com/container-engine/) for hosted cluster installation and management.  
 | |
| 
 | |
| If you want to use custom binaries or pure open source Kubernetes, please continue with the instructions below.
 | |
| 
 | |
| ### Prerequisites
 | |
| 
 | |
| 1. You need a Google Cloud Platform account with billing enabled. Visit the [Google Developers Console](http://cloud.google.com/console) for more details.
 | |
| 1. Make sure you can start up a GCE VM from the command line.  At least make sure you can do the [Create an instance](https://cloud.google.com/compute/docs/quickstart#create_an_instance) part of the GCE Quickstart.
 | |
| 1. Make sure you have the `gcloud preview` command line component installed. Simply run `gcloud preview` at the command line - if it asks to install any components, go ahead and install them. If it simply shows help text, you're good to go.
 | |
| 1. Make sure you can ssh into the VM without interactive prompts.  See the [Log in to the instance](https://cloud.google.com/compute/docs/quickstart#ssh) part of the GCE Quickstart.
 | |
| 
 | |
| ### Starting a Cluster
 | |
| 
 | |
| You can install a cluster with one of two one-liners:
 | |
| 
 | |
| ```bash
 | |
| curl -sS https://get.k8s.io | bash
 | |
| ```
 | |
| 
 | |
| or
 | |
| 
 | |
| ```bash
 | |
| wget -q -O - https://get.k8s.io | bash
 | |
| ```
 | |
| 
 | |
| ### Installing the kubernetes client on your workstation
 | |
| 
 | |
| This will leave you with a ```kubernetes``` directory on your workstation, and a running cluster.
 | |
| 
 | |
| Feel free to move the ```kubernetes``` directory to the appropriate directory on your workstation (e.g. ```/opt/kubernetes```) then ```cd``` into that directory:
 | |
| 
 | |
| ```bash
 | |
| mv kubernetes ${SOME_DIR}/kubernetes
 | |
| cd ${SOME_DIR}/kubernetes
 | |
| ```
 | |
| 
 | |
| If you run into trouble please see the section on [troubleshooting](https://github.com/brendandburns/kubernetes/blob/docs/docs/getting-started-guides/gce.md#troubleshooting), or come ask questions on IRC at #google-containers on freenode.
 | |
| 
 | |
| 
 | |
| ### Running a container (simple version)
 | |
| 
 | |
| Once you have your cluster created you can use ```${SOME_DIR}/kubernetes/cluster/kubectl.sh``` to access
 | |
| the kubernetes api.
 | |
| 
 | |
| The `kubectl.sh` line below spins up two containers running
 | |
| [Nginx](http://nginx.org/en/) running on port 80:
 | |
| 
 | |
| ```bash
 | |
| cluster/kubectl.sh run-container my-nginx --image=nginx --replicas=2 --port=80
 | |
| ```
 | |
| 
 | |
| To stop the containers:
 | |
| 
 | |
| ```bash
 | |
| cluster/kubectl.sh stop rc my-nginx
 | |
| ```
 | |
| 
 | |
| To delete the containers:
 | |
| 
 | |
| ```bash
 | |
| cluster/kubectl.sh delete rc my-nginx
 | |
| ```
 | |
| 
 | |
| ### Running a container (more complete version)
 | |
| 
 | |
| ```bash
 | |
| cd kubernetes
 | |
| cluster/kubectl.sh create -f docs/getting-started-guides/pod.json
 | |
| ```
 | |
| 
 | |
| Where pod.json contains something like:
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "id": "php",
 | |
|   "kind": "Pod",
 | |
|   "apiVersion": "v1beta1",
 | |
|   "desiredState": {
 | |
|     "manifest": {
 | |
|       "version": "v1beta1",
 | |
|       "id": "php",
 | |
|       "containers": [{
 | |
|         "name": "nginx",
 | |
|         "image": "nginx",
 | |
|         "ports": [{
 | |
|           "containerPort": 80,
 | |
|           "hostPort": 8081
 | |
|         }],
 | |
|         "livenessProbe": {
 | |
|           "enabled": true,
 | |
|           "type": "http",
 | |
|           "initialDelaySeconds": 30,
 | |
|           "httpGet": {
 | |
|             "path": "/index.html",
 | |
|             "port": 8081
 | |
|           }
 | |
|         }
 | |
|       }]
 | |
|     }
 | |
|   },
 | |
|   "labels": {
 | |
|     "name": "foo"
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| You can see your cluster's pods:
 | |
| 
 | |
| ```bash
 | |
| cluster/kubectl.sh get pods
 | |
| ```
 | |
| 
 | |
| and delete the pod you just created:
 | |
| 
 | |
| ```bash
 | |
| cluster/kubectl.sh delete pods php
 | |
| ```
 | |
| 
 | |
| Since this pod is scheduled on a minion running in GCE, you will have to enable incoming tcp traffic via the port specified in the
 | |
| pod manifest before you see the nginx welcome page. After doing so, it should be visible at http://<external ip of minion running nginx>:<port from manifest>.
 | |
| 
 | |
| Look in `examples/` for more examples
 | |
| 
 | |
| ### Tearing down the cluster
 | |
| 
 | |
| ```bash
 | |
| cd kubernetes
 | |
| cluster/kube-down.sh
 | |
| ```
 | |
| 
 | |
| ### Customizing
 | |
| 
 | |
| The script above relies on Google Storage to stage the Kubernetes release. It
 | |
| then will start (by default) a single master VM along with 4 worker VMs.  You
 | |
| can tweak some of these parameters by editing `kubernetes/cluster/gce/config-default.sh`
 | |
| You can view a transcript of a successful cluster creation
 | |
| [here](https://gist.github.com/satnam6502/fc689d1b46db9772adea).
 | |
| 
 | |
| ### Troubleshooting
 | |
| 
 | |
| #### Project settings
 | |
| 
 | |
| You need to have the Google Cloud Storage API, and the Google Cloud Storage
 | |
| JSON API enabled. It is activated by default for new projects. Otherwise, it
 | |
| can be done in the Google Cloud Console.  See the [Google Cloud Storage JSON
 | |
| API Overview](https://cloud.google.com/storage/docs/json_api/) for more
 | |
| details.
 | |
| 
 | |
| #### SSH
 | |
| 
 | |
| If you're having trouble SSHing into your instances, ensure the GCE firewall
 | |
| isn't blocking port 22 to your VMs.  By default, this should work but if you
 | |
| have edited firewall rules or created a new non-default network, you'll need to
 | |
| expose it: `gcloud compute firewall-rules create --network=<network-name>
 | |
| --description "SSH allowed from anywhere" --allow tcp:22 default-ssh`
 | |
| 
 | |
| Additionally, your GCE SSH key must either have no passcode or you need to be
 | |
| using `ssh-agent`.
 | |
| 
 | |
| #### Networking
 | |
| 
 | |
| The instances must be able to connect to each other using their private IP. The
 | |
| script uses the "default" network which should have a firewall rule called
 | |
| "default-allow-internal" which allows traffic on any port on the private IPs.
 | |
| If this rule is missing from the default network or if you change the network
 | |
| being used in `cluster/config-default.sh` create a new rule with the following
 | |
| field values:
 | |
| 
 | |
| * Source Ranges: `10.0.0.0/8`
 | |
| * Allowed Protocols and Port: `tcp:1-65535;udp:1-65535;icmp`
 |