Skip to content

Commit

Permalink
Add local scripts, simplify kubecfg.sh
Browse files Browse the repository at this point in the history
  • Loading branch information
derekwaynecarr committed Aug 11, 2014
1 parent e35dfed commit fea7b61
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 13 deletions.
2 changes: 1 addition & 1 deletion cluster/kube-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
# You can override the default provider by exporting the KUBERNETES_PROVIDER
# variable in your bashrc
#
# The valid values: 'gce', 'azure' and 'vagrant'
# The valid values: 'gce', 'azure', 'vagrant', 'local'

KUBERNETES_PROVIDER=${KUBERNETES_PROVIDER:-gce}
11 changes: 0 additions & 11 deletions cluster/kubecfg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,4 @@ fi

detect-master > /dev/null

# detect-master returns this if there is no master found.
if [ "$KUBE_MASTER_IP" == "external-ip" ]; then
KUBE_MASTER_IP=""
fi

if [ "$KUBERNETES_MASTER" == "" ]; then
if [ "${KUBE_MASTER_IP}" != "" ]; then
$CLOUDCFG -h https://${KUBE_MASTER_IP} $@
exit $?
fi
fi
$CLOUDCFG $@
29 changes: 29 additions & 0 deletions cluster/local/config-default.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

# Copyright 2014 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

## Contains configuration values for interacting with the Vagrant cluster

# NUMBER OF MINIONS IN THE CLUSTER
NUM_MINIONS=1

# IP LOCATIONS FOR INTERACTING WITH THE MASTER
export KUBE_MASTER_IP="127.0.0.1"
export KUBERNETES_MASTER="http://127.0.0.1:8080"

# IP LOCATIONS FOR INTERACTING WITH THE MINIONS
for (( i=0; i <${NUM_MINIONS}; i++)) do
KUBE_MINION_IP_ADDRESSES[$i]="127.0.0.1"
done
69 changes: 69 additions & 0 deletions cluster/local/util.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/bash

# Copyright 2014 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# A library of helper functions that each provider hosting Kubernetes must implement to use cluster/kube-*.sh scripts.

source $(dirname ${BASH_SOURCE})/${KUBE_CONFIG_FILE-"config-default.sh"}

function detect-master () {
echo "KUBE_MASTER_IP: $KUBE_MASTER_IP"
echo "KUBE_MASTER: $KUBE_MASTER"
}

# Get minion IP addresses and store in KUBE_MINION_IP_ADDRESSES[]
function detect-minions {
echo "Minions already detected"
}

# Verify prereqs on host machine
function verify-prereqs {
for x in go; do
if [ "$(which $x)" == "" ]; then
echo "Can't find $x in PATH, please fix and retry."
exit 1
fi
done
}

# Instantiate a kubernetes cluster
function kube-up {
echo "Not applicable"
}

# Delete a kubernetes cluster
function kube-down {
echo "Not applicable"
}

# Update a kubernetes cluster with latest source
function kube-push {
echo "Not applicable"
}

# Execute prior to running tests to build a release if required for env
function test-build-release {
echo "Not applicable"
}

# Execute prior to running tests to initialize required structure
function test-setup {
echo "Not applicable"
}

# Execute after running tests to perform any required clean-up
function test-teardown {
echo "Not applicable"
}
52 changes: 51 additions & 1 deletion docs/getting-started-guides/locally.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,54 @@ hack/local-up-cluster.sh

This will build and start a lightweight local cluster, consisting of a master and a single minion. Type Control-C to shut it down.

If you are running both a remote kubernetes cluster and the local cluster, you can determine which you talk to using the ```KUBERNETES_MASTER``` environment variable.
You can use the cluster/kubecfg.sh script to interact with the local cluster.

```
cd kubernetes
modify cluster/kube-env.sh:
KUBERNETES_PROVIDER="local"
cluster/kubecfg.sh => interact with the local cluster
```

### Running a container

Your cluster is running, and you want to start running containers!

You can now use any of the cluster/kubecfg.sh commands to interact with your local setup.
```
cluster/kubecfg.sh list /pods
cluster/kubecfg.sh list /services
cluster/kubecfg.sh list /replicationControllers
cluster/kubecfg.sh -p 8080:80 run dockerfile/nginx 1 myNginx
## begin wait for provision to complete, you can monitor the docker pull by opening a new terminal
sudo docker images
## you should see it pulling the dockerfile/nginx image, once the above command returns it
sudo docker ps
## you should see your container running!
exit
## end wait
## introspect kubernetes!
cluster/kubecfg.sh list /pods
cluster/kubecfg.sh list /services
cluster/kubecfg.sh list /replicationControllers
```

Congratulations!

### Troubleshooting

#### I cannot create a replication controller with replica size greater than 1! What gives?

You are running a single minion setup. This has the limitation of only supporting a single replica of a given pod. If you are interested in running with larger replica sizes, we encourage you to try the local vagrant setup or one of the cloud providers.

#### I changed Kubernetes code, how do I run it?

```
cd kubernetes
hack/build-go.sh
hack/local-up-cluster.sh
```

0 comments on commit fea7b61

Please sign in to comment.