Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a2ea0ba4
Commit
a2ea0ba4
authored
Jun 09, 2015
by
jayunit100
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modularize local-up into clean functions so its self documenting
parent
f62a2a1b
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
51 deletions
+87
-51
local-up-cluster.sh
hack/local-up-cluster.sh
+87
-51
No files found.
hack/local-up-cluster.sh
View file @
a2ea0ba4
...
@@ -22,21 +22,27 @@ DOCKER_NATIVE=${DOCKER_NATIVE:-""}
...
@@ -22,21 +22,27 @@ DOCKER_NATIVE=${DOCKER_NATIVE:-""}
DOCKER
=(
docker
${
DOCKER_OPTS
}
)
DOCKER
=(
docker
${
DOCKER_OPTS
}
)
DOCKERIZE_KUBELET
=
${
DOCKERIZE_KUBELET
:-
""
}
DOCKERIZE_KUBELET
=
${
DOCKERIZE_KUBELET
:-
""
}
ALLOW_PRIVILEGED
=
${
ALLOW_PRIVILEGED
:-
""
}
ALLOW_PRIVILEGED
=
${
ALLOW_PRIVILEGED
:-
""
}
KUBE_ROOT
=
$(
dirname
"
${
BASH_SOURCE
}
"
)
/..
KUBE_ROOT
=
$(
dirname
"
${
BASH_SOURCE
}
"
)
/..
cd
"
${
KUBE_ROOT
}
"
cd
"
${
KUBE_ROOT
}
"
if
[
"
$(
id
-u
)
"
!=
"0"
]
;
then
echo
"WARNING : This script MAY be run as root for docker socket / iptables functionality... if failures occur... Retry as root."
2>&1
fi
# Stop right away if the build fails
# Stop right away if the build fails
set
-e
set
-e
source
"
${
KUBE_ROOT
}
/hack/lib/init.sh"
source
"
${
KUBE_ROOT
}
/hack/lib/init.sh"
"
${
KUBE_ROOT
}
/hack/build-go.sh"
"
${
KUBE_ROOT
}
/hack/build-go.sh"
${
DOCKER
[@]
}
ps 2> /dev/null 1> /dev/null
function
test_docker
{
if
[
"
$?
"
!=
"0"
]
;
then
${
DOCKER
[@]
}
ps 2> /dev/null 1> /dev/null
if
[
"
$?
"
!=
"0"
]
;
then
echo
"Failed to successfully run 'docker ps', please verify that docker is installed and
\$
DOCKER_HOST is set correctly."
echo
"Failed to successfully run 'docker ps', please verify that docker is installed and
\$
DOCKER_HOST is set correctly."
exit
1
exit
1
fi
fi
}
# Shut down anyway if there's an error.
# Shut down anyway if there's an error.
set
+e
set
+e
...
@@ -50,18 +56,21 @@ LOG_LEVEL=${LOG_LEVEL:-3}
...
@@ -50,18 +56,21 @@ LOG_LEVEL=${LOG_LEVEL:-3}
CONTAINER_RUNTIME
=
${
CONTAINER_RUNTIME
:-
"docker"
}
CONTAINER_RUNTIME
=
${
CONTAINER_RUNTIME
:-
"docker"
}
CHAOS_CHANCE
=
${
CHAOS_CHANCE
:-
0
.0
}
CHAOS_CHANCE
=
${
CHAOS_CHANCE
:-
0
.0
}
# For the common local scenario, fail fast if server is already running.
function
test_apiserver_off
{
# this can happen if you run local-up-cluster.sh twice and kill etcd in between.
# For the common local scenario, fail fast if server is already running.
curl
$API_HOST
:
$API_PORT
# this can happen if you run local-up-cluster.sh twice and kill etcd in between.
if
[
!
$?
-eq
0
]
;
then
curl
$API_HOST
:
$API_PORT
if
[
!
$?
-eq
0
]
;
then
echo
"API SERVER port is free, proceeding..."
echo
"API SERVER port is free, proceeding..."
else
else
echo
"ERROR starting API SERVER, exiting. Some host on
$API_HOST
is serving already on
$API_PORT
"
echo
"ERROR starting API SERVER, exiting. Some host on
$API_HOST
is serving already on
$API_PORT
"
exit
1
exit
1
fi
fi
}
# Detect the OS name/arch so that we can find our binary
function
detect_binary
{
case
"
$(
uname
-s
)
"
in
# Detect the OS name/arch so that we can find our binary
case
"
$(
uname
-s
)
"
in
Darwin
)
Darwin
)
host_os
=
darwin
host_os
=
darwin
;;
;;
...
@@ -72,9 +81,9 @@ case "$(uname -s)" in
...
@@ -72,9 +81,9 @@ case "$(uname -s)" in
echo
"Unsupported host OS. Must be Linux or Mac OS X."
>
&2
echo
"Unsupported host OS. Must be Linux or Mac OS X."
>
&2
exit
1
exit
1
;;
;;
esac
esac
case
"
$(
uname
-m
)
"
in
case
"
$(
uname
-m
)
"
in
x86_64
*
)
x86_64
*
)
host_arch
=
amd64
host_arch
=
amd64
;;
;;
...
@@ -94,10 +103,8 @@ case "$(uname -m)" in
...
@@ -94,10 +103,8 @@ case "$(uname -m)" in
echo
"Unsupported host arch. Must be x86_64, 386 or arm."
>
&2
echo
"Unsupported host arch. Must be x86_64, 386 or arm."
>
&2
exit
1
exit
1
;;
;;
esac
esac
}
GO_OUT
=
"
${
KUBE_ROOT
}
/_output/local/bin/
${
host_os
}
/
${
host_arch
}
"
KUBELET_CIDFILE
=
/tmp/kubelet.cid
cleanup_dockerized_kubelet
()
cleanup_dockerized_kubelet
()
{
{
...
@@ -141,29 +148,32 @@ cleanup()
...
@@ -141,29 +148,32 @@ cleanup()
exit
0
exit
0
}
}
trap
cleanup EXIT
function
startETCD
{
echo
"Starting etcd"
echo
"Starting etcd"
kube::etcd::start
kube::etcd::start
}
SERVICE_ACCOUNT_LOOKUP
=
${
SERVICE_ACCOUNT_LOOKUP
:-
false
}
function
set_service_accounts
{
SERVICE_ACCOUNT_KEY
=
${
SERVICE_ACCOUNT_KEY
:-
"/tmp/kube-serviceaccount.key"
}
SERVICE_ACCOUNT_LOOKUP
=
${
SERVICE_ACCOUNT_LOOKUP
:-
false
}
# Generate ServiceAccount key if needed
SERVICE_ACCOUNT_KEY
=
${
SERVICE_ACCOUNT_KEY
:-
"/tmp/kube-serviceaccount.key"
}
if
[[
!
-f
"
${
SERVICE_ACCOUNT_KEY
}
"
]]
;
then
# Generate ServiceAccount key if needed
if
[[
!
-f
"
${
SERVICE_ACCOUNT_KEY
}
"
]]
;
then
mkdir
-p
"
$(
dirname
${
SERVICE_ACCOUNT_KEY
})
"
mkdir
-p
"
$(
dirname
${
SERVICE_ACCOUNT_KEY
})
"
openssl genrsa
-out
"
${
SERVICE_ACCOUNT_KEY
}
"
2048 2>/dev/null
openssl genrsa
-out
"
${
SERVICE_ACCOUNT_KEY
}
"
2048 2>/dev/null
fi
fi
}
# Admission Controllers to invoke prior to persisting objects in cluster
function
start_apiserver
{
ADMISSION_CONTROL
=
NamespaceLifecycle,NamespaceAutoProvision,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
# Admission Controllers to invoke prior to persisting objects in cluster
ADMISSION_CONTROL
=
NamespaceLifecycle,NamespaceAutoProvision,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
priv_arg
=
""
priv_arg
=
""
if
[[
-n
"
${
ALLOW_PRIVILEGED
}
"
]]
;
then
if
[[
-n
"
${
ALLOW_PRIVILEGED
}
"
]]
;
then
priv_arg
=
"--allow-privileged "
priv_arg
=
"--allow-privileged "
fi
fi
APISERVER_LOG
=
/tmp/kube-apiserver.log
APISERVER_LOG
=
/tmp/kube-apiserver.log
sudo
-E
"
${
GO_OUT
}
/kube-apiserver"
${
priv_arg
}
\
sudo
-E
"
${
GO_OUT
}
/kube-apiserver"
${
priv_arg
}
\
--v
=
${
LOG_LEVEL
}
\
--v
=
${
LOG_LEVEL
}
\
--service_account_key_file
=
"
${
SERVICE_ACCOUNT_KEY
}
"
\
--service_account_key_file
=
"
${
SERVICE_ACCOUNT_KEY
}
"
\
--service_account_lookup
=
"
${
SERVICE_ACCOUNT_LOOKUP
}
"
\
--service_account_lookup
=
"
${
SERVICE_ACCOUNT_LOOKUP
}
"
\
...
@@ -174,22 +184,26 @@ sudo -E "${GO_OUT}/kube-apiserver" ${priv_arg}\
...
@@ -174,22 +184,26 @@ sudo -E "${GO_OUT}/kube-apiserver" ${priv_arg}\
--etcd_servers
=
"http://127.0.0.1:4001"
\
--etcd_servers
=
"http://127.0.0.1:4001"
\
--service-cluster-ip-range
=
"10.0.0.0/24"
\
--service-cluster-ip-range
=
"10.0.0.0/24"
\
--cors_allowed_origins
=
"
${
API_CORS_ALLOWED_ORIGINS
}
"
>
"
${
APISERVER_LOG
}
"
2>&1 &
--cors_allowed_origins
=
"
${
API_CORS_ALLOWED_ORIGINS
}
"
>
"
${
APISERVER_LOG
}
"
2>&1 &
APISERVER_PID
=
$!
APISERVER_PID
=
$!
# Wait for kube-apiserver to come up before launching the rest of the components.
# Wait for kube-apiserver to come up before launching the rest of the components.
echo
"Waiting for apiserver to come up"
echo
"Waiting for apiserver to come up"
kube::util::wait_for_url
"http://
${
API_HOST
}
:
${
API_PORT
}
/api/v1beta3/pods"
"apiserver: "
1 10
||
exit
1
kube::util::wait_for_url
"http://
${
API_HOST
}
:
${
API_PORT
}
/api/v1beta3/pods"
"apiserver: "
1 10
||
exit
1
}
CTLRMGR_LOG
=
/tmp/kube-controller-manager.log
function
start_controller_manager
{
sudo
-E
"
${
GO_OUT
}
/kube-controller-manager"
\
CTLRMGR_LOG
=
/tmp/kube-controller-manager.log
sudo
-E
"
${
GO_OUT
}
/kube-controller-manager"
\
--v
=
${
LOG_LEVEL
}
\
--v
=
${
LOG_LEVEL
}
\
--machines
=
"127.0.0.1"
\
--machines
=
"127.0.0.1"
\
--service_account_private_key_file
=
"
${
SERVICE_ACCOUNT_KEY
}
"
\
--service_account_private_key_file
=
"
${
SERVICE_ACCOUNT_KEY
}
"
\
--master
=
"
${
API_HOST
}
:
${
API_PORT
}
"
>
"
${
CTLRMGR_LOG
}
"
2>&1 &
--master
=
"
${
API_HOST
}
:
${
API_PORT
}
"
>
"
${
CTLRMGR_LOG
}
"
2>&1 &
CTLRMGR_PID
=
$!
CTLRMGR_PID
=
$!
}
KUBELET_LOG
=
/tmp/kubelet.log
function
start_kubelet
{
if
[[
-z
"
${
DOCKERIZE_KUBELET
}
"
]]
;
then
KUBELET_LOG
=
/tmp/kubelet.log
if
[[
-z
"
${
DOCKERIZE_KUBELET
}
"
]]
;
then
sudo
-E
"
${
GO_OUT
}
/kubelet"
${
priv_arg
}
\
sudo
-E
"
${
GO_OUT
}
/kubelet"
${
priv_arg
}
\
--v
=
${
LOG_LEVEL
}
\
--v
=
${
LOG_LEVEL
}
\
--chaos_chance
=
"
${
CHAOS_CHANCE
}
"
\
--chaos_chance
=
"
${
CHAOS_CHANCE
}
"
\
...
@@ -199,7 +213,7 @@ if [[ -z "${DOCKERIZE_KUBELET}" ]]; then
...
@@ -199,7 +213,7 @@ if [[ -z "${DOCKERIZE_KUBELET}" ]]; then
--api_servers
=
"
${
API_HOST
}
:
${
API_PORT
}
"
\
--api_servers
=
"
${
API_HOST
}
:
${
API_PORT
}
"
\
--port
=
"
$KUBELET_PORT
"
>
"
${
KUBELET_LOG
}
"
2>&1 &
--port
=
"
$KUBELET_PORT
"
>
"
${
KUBELET_LOG
}
"
2>&1 &
KUBELET_PID
=
$!
KUBELET_PID
=
$!
else
else
# Docker won't run a container with a cidfile (container id file)
# Docker won't run a container with a cidfile (container id file)
# unless that file does not already exist; clean up an existing
# unless that file does not already exist; clean up an existing
# dockerized kubelet that might be running.
# dockerized kubelet that might be running.
...
@@ -217,20 +231,24 @@ else
...
@@ -217,20 +231,24 @@ else
--cidfile
=
$KUBELET_CIDFILE
\
--cidfile
=
$KUBELET_CIDFILE
\
gcr.io/google_containers/kubelet
\
gcr.io/google_containers/kubelet
\
/kubelet
--v
=
3
--containerized
${
priv_arg
}
--chaos-chance
=
"
${
CHAOS_CHANCE
}
"
--hostname-override
=
"127.0.0.1"
--address
=
"127.0.0.1"
--api-servers
=
"
${
API_HOST
}
:
${
API_PORT
}
"
--port
=
"
$KUBELET_PORT
"
--resource-container
=
""
&>
$KUBELET_LOG
&
/kubelet
--v
=
3
--containerized
${
priv_arg
}
--chaos-chance
=
"
${
CHAOS_CHANCE
}
"
--hostname-override
=
"127.0.0.1"
--address
=
"127.0.0.1"
--api-servers
=
"
${
API_HOST
}
:
${
API_PORT
}
"
--port
=
"
$KUBELET_PORT
"
--resource-container
=
""
&>
$KUBELET_LOG
&
fi
fi
}
PROXY_LOG
=
/tmp/kube-proxy.log
function
start_kubeproxy
{
sudo
-E
"
${
GO_OUT
}
/kube-proxy"
\
PROXY_LOG
=
/tmp/kube-proxy.log
sudo
-E
"
${
GO_OUT
}
/kube-proxy"
\
--v
=
${
LOG_LEVEL
}
\
--v
=
${
LOG_LEVEL
}
\
--master
=
"http://
${
API_HOST
}
:
${
API_PORT
}
"
>
"
${
PROXY_LOG
}
"
2>&1 &
--master
=
"http://
${
API_HOST
}
:
${
API_PORT
}
"
>
"
${
PROXY_LOG
}
"
2>&1 &
PROXY_PID
=
$!
PROXY_PID
=
$!
SCHEDULER_LOG
=
/tmp/kube-scheduler.log
SCHEDULER_LOG
=
/tmp/kube-scheduler.log
sudo
-E
"
${
GO_OUT
}
/kube-scheduler"
\
sudo
-E
"
${
GO_OUT
}
/kube-scheduler"
\
--v
=
${
LOG_LEVEL
}
\
--v
=
${
LOG_LEVEL
}
\
--master
=
"http://
${
API_HOST
}
:
${
API_PORT
}
"
>
"
${
SCHEDULER_LOG
}
"
2>&1 &
--master
=
"http://
${
API_HOST
}
:
${
API_PORT
}
"
>
"
${
SCHEDULER_LOG
}
"
2>&1 &
SCHEDULER_PID
=
$!
SCHEDULER_PID
=
$!
}
function
print_success
{
cat
<<
EOF
cat
<<
EOF
Local Kubernetes cluster is running. Press Ctrl-C to shut it down.
Local Kubernetes cluster is running. Press Ctrl-C to shut it down.
...
@@ -248,5 +266,23 @@ To start using your cluster, open up another terminal/tab and run:
...
@@ -248,5 +266,23 @@ To start using your cluster, open up another terminal/tab and run:
cluster/kubectl.sh config use-context local
cluster/kubectl.sh config use-context local
cluster/kubectl.sh
cluster/kubectl.sh
EOF
EOF
}
test_docker
test_apiserver_off
detect_binary
echo
"Detected host and ready to start services. Doing some housekeeping first..."
GO_OUT
=
"
${
KUBE_ROOT
}
/_output/local/bin/
${
host_os
}
/
${
host_arch
}
"
KUBELET_CIDFILE
=
/tmp/kubelet.cid
trap
cleanup EXIT
echo
"Starting services now!"
startETCD
set_service_accounts
start_apiserver
start_controller_manager
start_kubelet
start_kubeproxy
print_success
while
true
;
do
sleep
1
;
done
while
true
;
do
sleep
1
;
done
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment