Skip to content
This repository was archived by the owner on Jul 4, 2023. It is now read-only.

Commit 102eb88

Browse files
author
Riaan Nolan
committed
Merge branch 'feature/minikube-memory' into 'master'
make minikube dynamically use all memory and update the helpful hints See merge request all-staff/hashiqube!132
1 parent c4b63fb commit 102eb88

File tree

1 file changed

+104
-24
lines changed

1 file changed

+104
-24
lines changed

minikube/minikube.sh

+104-24
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,29 @@ function minikube-install() {
1515
# https://github.com/kubernetes/minikube/issues/11107
1616
HELLO_MINIKUBE_IMAGE="preslavmihaylov/kubehelloworld:latest"
1717
fi
18-
echo -e '\e[38;5;198m'"CPU is $ARCH"
18+
echo -e '\e[38;5;198m'"++++ "
19+
echo -e '\e[38;5;198m'"++++ CPU is $ARCH"
20+
echo -e '\e[38;5;198m'"++++ "
1921

2022
if [ -f /usr/local/bin/minikube ]; then
23+
echo -e '\e[38;5;198m'"++++ "
2124
echo -e '\e[38;5;198m'"++++ Minikube found at /usr/local/bin/minikube"
25+
echo -e '\e[38;5;198m'"++++ "
2226
else
2327
curl -sLo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-$ARCH
2428
sudo chmod +x minikube
2529
sudo mkdir -p /usr/local/bin/
2630
sudo install minikube /usr/local/bin/
2731
fi
2832

33+
echo -e '\e[38;5;198m'"++++ "
2934
echo -e '\e[38;5;198m'"++++ Delete Minikube"
35+
echo -e '\e[38;5;198m'"++++ "
3036
for mkd in $(ps aux | grep -e dashboard -e kubectl | grep -v grep | grep -v nomad | tr -s " " | cut -d " " -f2); do bash -c "sudo kill -9 $mkd || true"; done
3137
sleep 10;
38+
echo -e '\e[38;5;198m'"++++ "
3239
echo -e '\e[38;5;198m'"++++ Check minikube proccesses"
40+
echo -e '\e[38;5;198m'"++++ "
3341
bash -c "ps aux | grep -e dashboard -e kubectl || true"
3442
sleep 5;
3543

@@ -42,43 +50,59 @@ function minikube-install() {
4250
# sudo --preserve-env=PATH -u vagrant mkdir /home/vagrant/.kube
4351
# sudo chmod -R 777 /home/vagrant/.kube
4452

53+
echo -e '\e[38;5;198m'"++++ "
4554
echo -e '\e[38;5;198m'"++++ docker system prune -a"
55+
echo -e '\e[38;5;198m'"++++ "
4656
yes | sudo docker system prune -a
4757
yes | sudo docker system prune --volumes
4858
sudo docker volume prune -f
4959

5060
# BUG: https://github.com/kubernetes/minikube/issues/7179
61+
echo -e '\e[38;5;198m'"++++ "
5162
echo -e '\e[38;5;198m'"++++ Installing Contrack"
63+
echo -e '\e[38;5;198m'"++++ "
5264
sudo apt-get install --assume-yes conntrack ethtool socat
5365

66+
echo -e '\e[38;5;198m'"++++ "
5467
echo -e '\e[38;5;198m'"++++ Launching Minikube"
68+
echo -e '\e[38;5;198m'"++++ "
5569
# https://minikube.sigs.k8s.io/docs/commands/start/
5670
# https://unofficial-kubernetes.readthedocs.io/en/latest/admin/admission-controllers/
5771
# https://github.com/kubernetes/minikube/issues/604
58-
sudo --preserve-env=PATH -u vagrant CHANGE_MINIKUBE_NONE_USER=true minikube start --driver=docker --force-systemd=true --insecure-registry="10.9.99.0/24" --cpus 4 --memory 8192 --disk-size=2g --mount-string="/vagrant:/vagrant" --mount --extra-config=apiserver.enable-admission-plugins="DefaultStorageClass"
72+
sudo --preserve-env=PATH -u vagrant CHANGE_MINIKUBE_NONE_USER=true minikube start --driver=docker --force-systemd=true --insecure-registry="10.9.99.0/24" --cpus 4 --memory $(free -m | tr -s " " | grep Mem | cut -d " " -f2) --disk-size=2g --mount-string="/vagrant:/vagrant" --mount --extra-config=apiserver.enable-admission-plugins="DefaultStorageClass"
5973
# --extra-config=apiserver.enable-admission-plugins="LimitRanger,NamespaceExists,NamespaceLifecycle,ResourceQuota,ServiceAccount,DefaultStorageClass,MutatingAdmissionWebhook"
6074
# "ResourceQuota,ServiceAccount,MutatingAdmissionWebhook,LimitRanger,NamespaceExists,NamespaceLifecycle," --kubelet.node-ip=10.9.99.10 --apiserver-name=0.0.0.0 --apiserver-ips=0.0.0.0
6175

6276
sudo --preserve-env=PATH -u vagrant curl -sLO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/$ARCH/kubectl
6377
sudo --preserve-env=PATH -u vagrant chmod +x kubectl
6478
sudo install kubectl /usr/local/bin/
6579

66-
echo "installing k9s"
80+
echo -e '\e[38;5;198m'"++++ "
81+
echo -e '\e[38;5;198m'"++++ Installing k8s CLI"
82+
echo -e '\e[38;5;198m'"++++ "
6783
sudo curl -sS https://webinstall.dev/k9s | bash
6884

85+
echo -e '\e[38;5;198m'"++++ "
6986
echo -e '\e[38;5;198m'"++++ Initially, some services such as the storage-provisioner, may not yet be in a Running state. This is a normal condition during cluster bring-up, and will resolve itself momentarily. For additional insight into your cluster state, minikube bundles the Kubernetes Dashboard, allowing you to get easily acclimated to your new environment:\nSleep 30s.."
87+
echo -e '\e[38;5;198m'"++++ "
7088
sleep 30;
7189

90+
echo -e '\e[38;5;198m'"++++ "
7291
echo -e '\e[38;5;198m'"++++ Get minikube IP"
92+
echo -e '\e[38;5;198m'"++++ "
7393
MINIKUBE_IP=$(sudo --preserve-env=PATH -u vagrant minikube ip)
7494
sudo --preserve-env=PATH -u vagrant minikube ip
7595

96+
echo -e '\e[38;5;198m'"++++ "
7697
echo -e '\e[38;5;198m'"++++ Enable Minikube Ingress Addon"
98+
echo -e '\e[38;5;198m'"++++ "
7799
sudo --preserve-env=PATH -u vagrant minikube addons enable ingress
78100

79101
# Docker Registry via Minikube
80102
# https://minikube.sigs.k8s.io/docs/handbook/registry/
103+
echo -e '\e[38;5;198m'"++++ "
81104
echo -e '\e[38;5;198m'"++++ Enable Minikube Docker Registry Addon"
105+
echo -e '\e[38;5;198m'"++++ "
82106
sudo --preserve-env=PATH -u vagrant minikube addons enable registry
83107
sleep 30;
84108

@@ -87,15 +111,21 @@ function minikube-install() {
87111
while ! ( sudo netstat -nlp | grep 5001 ) && (( $attempts < $max_attempts )); do
88112
attempts=$((attempts+1))
89113
sleep 10;
114+
echo -e '\e[38;5;198m'"++++ "
90115
echo -e '\e[38;5;198m'"++++ kubectl port-forward -n kube-system service/registry 5001:80 --address=\"0.0.0.0\", (${attempts}/${max_attempts}) sleep 10s"
116+
echo -e '\e[38;5;198m'"++++ "
91117
sudo --preserve-env=PATH -u vagrant kubectl port-forward -n kube-system service/registry 5001:80 --address="0.0.0.0" > /dev/null 2>&1 &
92118
done
93119

120+
echo -e '\e[38;5;198m'"++++ "
94121
echo -e '\e[38;5;198m'"++++ Enable Minikube Default Storage Class Addon"
122+
echo -e '\e[38;5;198m'"++++ "
95123
sudo --preserve-env=PATH -u vagrant minikube addons enable default-storageclass
96124

97125
# https://minikube.sigs.k8s.io/docs/commands/dashboard/
126+
echo -e '\e[38;5;198m'"++++ "
98127
echo -e '\e[38;5;198m'"++++ Starting Minikube dashboard"
128+
echo -e '\e[38;5;198m'"++++ "
99129
sudo --preserve-env=PATH -u vagrant nohup minikube dashboard --url &
100130
sleep 30;
101131

@@ -105,66 +135,94 @@ function minikube-install() {
105135
while ! ( sudo netstat -nlp | grep 10888 ) && (( $attempts < $max_attempts )); do
106136
attempts=$((attempts+1))
107137
sleep 10;
138+
echo -e '\e[38;5;198m'"++++ "
108139
echo -e '\e[38;5;198m'"++++ kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 10888:80 --address=\"0.0.0.0\", (${attempts}/${max_attempts}) sleep 10s"
140+
echo -e '\e[38;5;198m'"++++ "
109141
sudo --preserve-env=PATH -u vagrant kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 10888:80 --address="0.0.0.0" > /dev/null 2>&1 &
110142
done
111143

112144
# via kube proxy
113145
#sudo --preserve-env=PATH -u vagrant nohup kubectl proxy --address="0.0.0.0" -p 10888 --disable-filter=true --accept-hosts='^*$' &
114-
echo -e '\e[38;5;198m'"Tada! Minikube Dashboard is now available at http://localhost:10888"
146+
echo -e '\e[38;5;198m'"++++ "
147+
echo -e '\e[38;5;198m'"++++ Tada! Minikube Dashboard is now available at http://localhost:10888"
148+
echo -e '\e[38;5;198m'"++++ "
115149
sleep 10;
116150

151+
echo -e '\e[38;5;198m'"++++ "
117152
echo -e '\e[38;5;198m'"++++ sudo minikube status"
153+
echo -e '\e[38;5;198m'"++++ "
118154
sudo --preserve-env=PATH -u vagrant minikube status
119155

156+
echo -e '\e[38;5;198m'"++++ "
120157
echo -e '\e[38;5;198m'"++++ sudo minikube service list"
158+
echo -e '\e[38;5;198m'"++++ "
121159
sudo --preserve-env=PATH -u vagrant minikube service list
122160

161+
echo -e '\e[38;5;198m'"++++ "
123162
echo -e '\e[38;5;198m'"++++ sudo kubectl get nodes"
163+
echo -e '\e[38;5;198m'"++++ "
124164
sudo --preserve-env=PATH -u vagrant kubectl get nodes
125165

166+
echo -e '\e[38;5;198m'"++++ "
126167
echo -e '\e[38;5;198m'"++++ Interact with Minikube"
127-
echo -e '\e[38;5;198m'"vagrant kubectl get po -A"
168+
echo -e '\e[38;5;198m'"++++ "
169+
echo -e '\e[38;5;198m'"++++ vagrant kubectl get po -A"
170+
echo -e '\e[38;5;198m'"++++ "
128171
sudo --preserve-env=PATH -u vagrant kubectl get po -A
129172

130-
echo -e '\e[38;5;198m'"minikube kubectl -- get po -A"
173+
echo -e '\e[38;5;198m'"++++ "
174+
echo -e '\e[38;5;198m'"++++ minikube kubectl -- get po -A"
175+
echo -e '\e[38;5;198m'"++++ "
131176
sudo --preserve-env=PATH -u vagrant minikube kubectl -- get po -A
132177

133-
echo -e '\e[38;5;198m'"Start Minikube Tunnel"
178+
echo -e '\e[38;5;198m'"++++ "
179+
echo -e '\e[38;5;198m'"++++ Start Minikube Tunnel"
180+
echo -e '\e[38;5;198m'"++++ "
134181
sudo --preserve-env=PATH -u vagrant minikube tunnel > /dev/null 2>&1 &
135182

136183
# https://kubernetes.io/docs/tutorials/hello-minikube/
137-
echo -e '\e[38;5;198m'"Deploy hello-minikube application"
138-
echo -e '\e[38;5;198m'"Create a sample deployment and expose it on port 3000:"
139-
echo -e '\e[38;5;198m'"kubectl create deployment hello-minikube --image=$HELLO_MINIKUBE_IMAGE"
140-
echo -e '\e[38;5;198m'"kubectl expose deployment hello-minikube --type=NodePort --port=3000"
184+
echo -e '\e[38;5;198m'"++++ "
185+
echo -e '\e[38;5;198m'"++++ Deploy hello-minikube application"
186+
echo -e '\e[38;5;198m'"++++ Create a sample deployment and expose it on port 3000:"
187+
echo -e '\e[38;5;198m'"++++ kubectl create deployment hello-minikube --image=$HELLO_MINIKUBE_IMAGE"
188+
echo -e '\e[38;5;198m'"++++ kubectl expose deployment hello-minikube --type=NodePort --port=3000"
189+
echo -e '\e[38;5;198m'"++++ "
141190
sudo --preserve-env=PATH -u vagrant kubectl create deployment hello-minikube --image=$HELLO_MINIKUBE_IMAGE
142191
sudo --preserve-env=PATH -u vagrant kubectl expose deployment hello-minikube --type=NodePort --port=3000
143-
echo -e '\e[38;5;198m'"It may take a moment, but your deployment will soon show up when you run:"
144-
echo -e '\e[38;5;198m'"kubectl get services hello-minikube"
192+
echo -e '\e[38;5;198m'"++++ "
193+
echo -e '\e[38;5;198m'"++++ It may take a moment, but your deployment will soon show up when you run:"
194+
echo -e '\e[38;5;198m'"++++ kubectl get services hello-minikube"
195+
echo -e '\e[38;5;198m'"++++ "
145196
sleep 15;
146197
sudo --preserve-env=PATH -u vagrant kubectl get services hello-minikube
147198

148-
echo -e '\e[38;5;198m'"The easiest way to access this service is to let kubectl to forward the port:"
149-
echo -e '\e[38;5;198m'"kubectl port-forward service/hello-minikube 18888:3000"
199+
echo -e '\e[38;5;198m'"++++ "
200+
echo -e '\e[38;5;198m'"++++ The easiest way to access this service is to let kubectl to forward the port:"
201+
echo -e '\e[38;5;198m'"++++ kubectl port-forward service/hello-minikube 18888:3000"
202+
echo -e '\e[38;5;198m'"++++ "
150203
sleep 25;
151204

152205
attempts=0
153206
max_attempts=15
154207
while ! ( sudo netstat -nlp | grep 18888 ) && (( $attempts < $max_attempts )); do
155208
attempts=$((attempts+1))
156209
sleep 10;
210+
echo -e '\e[38;5;198m'"++++ "
157211
echo -e '\e[38;5;198m'"++++ kubectl port-forward -n default service/hello-minikube 18888:3000 --address=\"0.0.0.0\", (${attempts}/${max_attempts}) sleep 10s"
212+
echo -e '\e[38;5;198m'"++++ "
158213
sudo --preserve-env=PATH -u vagrant kubectl port-forward -n default service/hello-minikube 18888:3000 --address="0.0.0.0" > /dev/null 2>&1 &
159214
done
160-
echo -e '\e[38;5;198m'"Tada! Your application is now available at http://localhost:18888/"
161-
162-
echo -e '\e[38;5;198m'"Browse the catalog of easily installed Kubernetes services:"
163-
echo -e '\e[38;5;198m'"minikube addons list"
215+
echo -e '\e[38;5;198m'"++++ "
216+
echo -e '\e[38;5;198m'"++++ Tada! Your application is now available at http://localhost:18888/"
217+
echo -e '\e[38;5;198m'"++++ Browse the catalog of easily installed Kubernetes services:"
218+
echo -e '\e[38;5;198m'"++++ minikube addons list"
219+
echo -e '\e[38;5;198m'"++++ "
164220
sudo --preserve-env=PATH -u vagrant minikube addons list
165221

166-
echo -e '\e[38;5;198m'"Get all Pods and Services"
167-
echo -e '\e[38;5;198m'"kubectl get pod,svc -A"
222+
echo -e '\e[38;5;198m'"++++ "
223+
echo -e '\e[38;5;198m'"++++ Get all Pods and Services"
224+
echo -e '\e[38;5;198m'"++++ kubectl get pod,svc -A"
225+
echo -e '\e[38;5;198m'"++++ "
168226
sudo --preserve-env=PATH -u vagrant kubectl get pod,svc -A
169227

170228
# echo -e '\e[38;5;198m'"View Minikube Config"
@@ -173,48 +231,70 @@ function minikube-install() {
173231

174232
# TODO: uplift below, see issues in hashiqube
175233
# https://helm.sh/docs/intro/install/#from-script
234+
echo -e '\e[38;5;198m'"++++ "
176235
echo -e '\e[38;5;198m'"++++ Helm not installed, installing.."
236+
echo -e '\e[38;5;198m'"++++ "
177237
cd /tmp
178238
sudo curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
179239
sudo chmod 700 get_helm.sh
180240
sudo /tmp/get_helm.sh
181241
cd ~/
242+
echo -e '\e[38;5;198m'"++++ "
182243
echo -e '\e[38;5;198m'"++++ helm version"
244+
echo -e '\e[38;5;198m'"++++ "
183245
sudo --preserve-env=PATH -u vagrant helm version
184246
#https://helm.sh/docs/intro/quickstart/#initialize-a-helm-chart-repository
185247
echo -e '\e[38;5;198m'"++++ Helm add Bitnami repo"
186248
echo -e '\e[38;5;198m'"++++ helm repo add bitnami https://charts.bitnami.com/bitnami"
249+
echo -e '\e[38;5;198m'"++++ "
187250
sudo --preserve-env=PATH -u vagrant helm repo add bitnami https://charts.bitnami.com/bitnami
251+
echo -e '\e[38;5;198m'"++++ "
188252
echo -e '\e[38;5;198m'"++++ helm repo update"
253+
echo -e '\e[38;5;198m'"++++ "
189254
sudo --preserve-env=PATH -u vagrant helm repo update
255+
echo -e '\e[38;5;198m'"++++ "
190256
echo -e '\e[38;5;198m'"++++ helm search repo bitnami"
257+
echo -e '\e[38;5;198m'"++++ "
191258
sudo --preserve-env=PATH -u vagrant helm search repo bitnami
192259

193260
# https://doc.traefik.io/traefik/getting-started/install-traefik/
261+
echo -e '\e[38;5;198m'"++++ "
194262
echo -e '\e[38;5;198m'"++++ Installing Traefik using Helm Chart"
195263
echo -e '\e[38;5;198m'"++++ helm repo add traefik https://helm.traefik.io/traefik"
264+
echo -e '\e[38;5;198m'"++++ "
196265
sudo --preserve-env=PATH -u vagrant helm repo add traefik https://helm.traefik.io/traefik
197266
sudo --preserve-env=PATH -u vagrant helm repo update
267+
echo -e '\e[38;5;198m'"++++ "
198268
echo -e '\e[38;5;198m'"++++ helm install traefik traefik/traefik"
269+
echo -e '\e[38;5;198m'"++++ "
199270
sudo --preserve-env=PATH -u vagrant helm install traefik traefik/traefik
200271
sleep 30;
272+
echo -e '\e[38;5;198m'"++++ "
201273
echo -e '\e[38;5;198m'"++++ kubectl port-forward 18181:9000"
274+
echo -e '\e[38;5;198m'"++++ "
202275
sudo --preserve-env=PATH -u vagrant kubectl port-forward $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 18181:9000 --address="0.0.0.0" > /dev/null 2>&1 &
276+
echo -e '\e[38;5;198m'"++++ "
203277
echo -e '\e[38;5;198m'"++++ kubectl port-forward 18080:9000"
278+
echo -e '\e[38;5;198m'"++++ "
204279
sudo --preserve-env=PATH -u vagrant kubectl port-forward $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 18080:9000 --address="0.0.0.0" > /dev/null 2>&1 &
205-
echo -e '\e[38;5;198m'"Get all Pods and Services"
206-
echo -e '\e[38;5;198m'"kubectl get pod,svc -A"
280+
echo -e '\e[38;5;198m'"++++ "
281+
echo -e '\e[38;5;198m'"++++ Get all Pods and Services"
282+
echo -e '\e[38;5;198m'"++++ kubectl get pod,svc -A"
283+
echo -e '\e[38;5;198m'"++++ "
207284
sudo --preserve-env=PATH -u vagrant kubectl get pod,svc -A
208-
285+
echo -e '\e[38;5;198m'"++++ "
209286
echo -e '\e[38;5;198m'"++++ Docker stats"
287+
echo -e '\e[38;5;198m'"++++ "
210288
sudo --preserve-env=PATH -u vagrant docker stats --no-stream -a
211289

290+
echo -e '\e[38;5;198m'"++++ "
212291
echo -e '\e[38;5;198m'"++++ Minikube Dashboard: http://localhost:10888"
213292
echo -e '\e[38;5;198m'"++++ Minikube Documentation: http://localhost:3333/#/minikube/README"
214293
echo -e '\e[38;5;198m'"++++ Hello Minikube application: http://localhost:18888"
215294
echo -e '\e[38;5;198m'"++++ Traefik Dashboard: http://localhost:18181/dashboard/"
216295
echo -e '\e[38;5;198m'"++++ Traefik Loadbalancer: http://localhost:18080"
217296
echo -e '\e[38;5;198m'"++++ Traefik Documentation: http://localhost:3333/#/minikube/README?id=traefik-on-minikube"
297+
echo -e '\e[38;5;198m'"++++ "
218298
}
219299

220300
minikube-install

0 commit comments

Comments
 (0)