Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
helm3
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
helm3
Commits
39897eaf
Commit
39897eaf
authored
Apr 11, 2016
by
Adam Reese
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #592 from adamreese/feat/kube-cleanup
feat(scripts): wait for dns pods to be ready
parents
61db9771
c5b617cc
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
43 deletions
+69
-43
docker.sh
scripts/docker.sh
+19
-4
kube-down.sh
scripts/kube-down.sh
+16
-13
kube-up.sh
scripts/kube-up.sh
+34
-26
No files found.
scripts/docker.sh
View file @
39897eaf
...
@@ -15,10 +15,17 @@
...
@@ -15,10 +15,17 @@
set
-eo
pipefail
set
-eo
pipefail
DOCKER_HOST_IP
=
$(
echo
$DOCKER_HOST
|
awk
-F
'[/:]'
'{print $4}'
)
docker_detect_host_ip
()
{
:
${
DOCKER_HOST_IP
:
=
$(
ifconfig docker0
\
if
[
-n
"
$DOCKER_HOST
"
]
;
then
|
grep
-Eo
'inet (addr:)?([0-9]*\.){3}[0-9]*'
\
awk
-F
'[/:]'
'{print $4}'
<<<
"
$DOCKER_HOST
"
|
grep
-Eo
'([0-9]*\.){3}[0-9]*'
)}
else
ifconfig docker0
\
|
grep
-Eo
'inet (addr:)?([0-9]*\.){3}[0-9]*'
\
|
grep
-Eo
'([0-9]*\.){3}[0-9]*'
>
/dev/null 2>&1
||
:
fi
}
DOCKER_HOST_IP
=
$(
docker_detect_host_ip
)
is_docker_machine
()
{
is_docker_machine
()
{
[[
$(
docker-machine active 2>/dev/null
)
]]
[[
$(
docker-machine active 2>/dev/null
)
]]
...
@@ -30,6 +37,14 @@ active_docker_machine() {
...
@@ -30,6 +37,14 @@ active_docker_machine() {
fi
fi
}
}
delete_container
()
{
local
container
=(
"
$@
"
)
docker stop
"
${
container
[@]
}
"
&>/dev/null
||
:
docker
wait
"
${
container
[@]
}
"
&>/dev/null
||
:
docker
rm
--force
--volumes
"
${
container
[@]
}
"
&>/dev/null
||
:
}
dev_registry
()
{
dev_registry
()
{
if
docker inspect registry
>
/dev/null 2>&1
;
then
if
docker inspect registry
>
/dev/null 2>&1
;
then
docker start registry
docker start registry
...
...
scripts/kube-down.sh
View file @
39897eaf
...
@@ -37,27 +37,30 @@ delete_kube_resources() {
...
@@ -37,27 +37,30 @@ delete_kube_resources() {
delete_hyperkube_containers
()
{
delete_hyperkube_containers
()
{
echo
"Stopping kubelet..."
echo
"Stopping kubelet..."
delete_container kubelet
docker stop kubelet
>
/dev/null 2>&1
||
:
docker
wait
kubelet
>
/dev/null 2>&1
||
:
docker
rm
--force
--volumes
kubelet
>
/dev/null 2>&1
||
:
echo
"Stopping remaining kubernetes containers..."
echo
"Stopping remaining kubernetes containers..."
local
kube_containers
=(
$(
docker ps
-aqf
"name=k8s_"
)
)
local
kube_containers
=
$(
docker ps
-aqf
"name=k8s_"
)
if
[[
"
${#
kube_containers
[@]
}
"
-gt
0
]]
;
then
if
[
!
-z
"
$kube_containers
"
]
;
then
delete_container
"
${
kube_containers
[@]
}
"
docker stop
$kube_containers
>
/dev/null 2>&1
docker
wait
$kube_containers
>
/dev/null 2>&1
docker
rm
--force
--volumes
$kube_containers
>
/dev/null 2>&1
fi
fi
echo
"Stopping etcd..."
echo
"Stopping etcd..."
docker stop etcd
>
/dev/null 2>&1
||
:
delete_container etcd
docker
wait
etcd
>
/dev/null 2>&1
||
:
}
docker
rm
--force
--volumes
etcd
>
/dev/null 2>&1
||
:
detect_master
()
{
local
cc
=
$(
kubectl config view
-o
jsonpath
=
"{.current-context}"
)
local
cluster
=
$(
kubectl config view
-o
jsonpath
=
"{.contexts[?(@.name ==
\"
${
cc
}
\"
)].context.cluster}"
)
kubectl config view
-o
jsonpath
=
"{.clusters[?(@.name ==
\"
${
cluster
}
\"
)].cluster.server}"
}
}
main
()
{
main
()
{
if
[
"
$1
"
!=
"--force"
]
;
then
echo
"WARNING: You are about to destroy kubernetes on
$(
detect_master
)
"
read
-p
"Press [Enter] key to continue..."
fi
echo
"Bringing down the kube..."
echo
"Bringing down the kube..."
delete_kube_resources
delete_kube_resources
...
...
scripts/kube-up.sh
View file @
39897eaf
...
@@ -70,7 +70,7 @@ setup_iptables() {
...
@@ -70,7 +70,7 @@ setup_iptables() {
local
machine_ip
=
$(
docker-machine ip
"
$machine
"
)
local
machine_ip
=
$(
docker-machine ip
"
$machine
"
)
local
iptables_rule
=
"PREROUTING -p tcp -d
${
machine_ip
}
--dport
${
KUBE_PORT
}
-j DNAT --to-destination 127.0.0.1:
${
KUBE_PORT
}
"
local
iptables_rule
=
"PREROUTING -p tcp -d
${
machine_ip
}
--dport
${
KUBE_PORT
}
-j DNAT --to-destination 127.0.0.1:
${
KUBE_PORT
}
"
if
!
docker-machine ssh
"
${
machine
}
"
"sudo /usr/local/sbin/iptables -t nat -C
${
iptables_rule
}
"
;
then
if
!
docker-machine ssh
"
${
machine
}
"
"sudo /usr/local/sbin/iptables -t nat -C
${
iptables_rule
}
"
&> /dev/null
;
then
docker-machine ssh
"
${
machine
}
"
"sudo /usr/local/sbin/iptables -t nat -I
${
iptables_rule
}
"
docker-machine ssh
"
${
machine
}
"
"sudo /usr/local/sbin/iptables -t nat -I
${
iptables_rule
}
"
fi
fi
}
}
...
@@ -86,7 +86,7 @@ start_kubernetes() {
...
@@ -86,7 +86,7 @@ start_kubernetes() {
gcr.io/google_containers/etcd:2.2.1
\
gcr.io/google_containers/etcd:2.2.1
\
/usr/local/bin/etcd
\
/usr/local/bin/etcd
\
--listen-client-urls
=
http://127.0.0.1:4001
\
--listen-client-urls
=
http://127.0.0.1:4001
\
--advertise-client-urls
=
http://127.0.0.1:4001
>
/dev/null
2>&1
--advertise-client-urls
=
http://127.0.0.1:4001
>
/dev/null
echo
"Starting kubelet"
echo
"Starting kubelet"
docker run
\
docker run
\
...
@@ -108,27 +108,38 @@ start_kubernetes() {
...
@@ -108,27 +108,38 @@ start_kubernetes() {
--config
=
/etc/kubernetes/manifests-multi
\
--config
=
/etc/kubernetes/manifests-multi
\
--cluster-dns
=
10.0.0.10
\
--cluster-dns
=
10.0.0.10
\
--cluster-domain
=
cluster.local
\
--cluster-domain
=
cluster.local
\
--allow-privileged
=
true
--v
=
2
>
/dev/null
2>&1
--allow-privileged
=
true
--v
=
2
>
/dev/null
}
}
wait_for_kubernetes
()
{
wait_for_kubernetes
_cluster
()
{
echo
"Waiting for Kubernetes cluster to become available..."
echo
"Waiting for Kubernetes cluster to become available..."
while
true
;
do
local
running_count
=
$(
$KUBECTL
get pods
--all-namespaces
--no-headers
2>/dev/null |
grep
"Running"
|
wc
-l
)
# We expect to have 3 running pods - master, kube-proxy, and dns
if
[
"
$running_count
"
-ge
3
]
;
then
break
fi
sleep
1
done
}
wait_for_kubernetes_master
()
{
echo
"Waiting for Kubernetes master to become available..."
until
$(
$KUBECTL
cluster-info &> /dev/null
)
;
do
until
$(
$KUBECTL
cluster-info &> /dev/null
)
;
do
sleep
1
sleep
1
done
done
echo
"Kubernetes cluster is up."
}
}
create_kube_system_namespace
()
{
create_kube_system_namespace
()
{
echo
"Creating kube-system namespace..."
echo
"Creating kube-system namespace..."
$KUBECTL
create
-f
"
${
HELM_ROOT
}
/scripts/cluster/kube-system.yaml"
$KUBECTL
create
-f
"
${
HELM_ROOT
}
/scripts/cluster/kube-system.yaml"
>
/dev/null
}
}
create_kube_dns
()
{
create_kube_dns
()
{
echo
"Setting up internal dns..."
echo
"Setting up internal dns..."
$KUBECTL
create
-f
"
${
HELM_ROOT
}
/scripts/cluster/skydns.yaml"
$KUBECTL
create
-f
"
${
HELM_ROOT
}
/scripts/cluster/skydns.yaml"
>
/dev/null
}
}
# Generate kubeconfig data for the created cluster.
# Generate kubeconfig data for the created cluster.
...
@@ -138,11 +149,11 @@ create_kubeconfig() {
...
@@ -138,11 +149,11 @@ create_kubeconfig() {
"--insecure-skip-tls-verify=true"
"--insecure-skip-tls-verify=true"
)
)
kubectl config set-cluster
"
${
KUBE_CONTEXT
}
"
"
${
cluster_args
[@]
}
"
kubectl config set-cluster
"
${
KUBE_CONTEXT
}
"
"
${
cluster_args
[@]
}
"
>
/dev/null
kubectl config set-context
"
${
KUBE_CONTEXT
}
"
--cluster
=
"
${
KUBE_CONTEXT
}
"
kubectl config set-context
"
${
KUBE_CONTEXT
}
"
--cluster
=
"
${
KUBE_CONTEXT
}
"
>
/dev/null
kubectl config use-context
"
${
KUBE_CONTEXT
}
"
kubectl config use-context
"
${
KUBE_CONTEXT
}
"
>
/dev/null
echo
"Wrote config for
${
KUBE_CONTEXT
}
"
echo
"Wrote config for
kubeconfig using context: '
${
KUBE_CONTEXT
}
'
"
}
}
# https://github.com/kubernetes/kubernetes/issues/23197
# https://github.com/kubernetes/kubernetes/issues/23197
...
@@ -164,24 +175,21 @@ cleanup_volumes() {
...
@@ -164,24 +175,21 @@ cleanup_volumes() {
fi
fi
}
}
main
()
{
verify_prereqs
verify_prereqs
cleanup_volumes
cleanup_volumes
if
is_docker_machine
;
then
if
is_docker_machine
;
then
setup_iptables
setup_iptables
fi
fi
start_kubernetes
start_kubernetes
wait_for_kubernetes
wait_for_kubernetes_master
create_kube_system_namespace
create_kube_system_namespace
create_kube_dns
create_kube_dns
create_kubeconfig
wait_for_kubernetes_cluster
$KUBECTL
cluster-info
create_kubeconfig
}
main
"
$@
"
exit
0
$KUBECTL
cluster-info
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