launch testing kubernetes cluster in local use Kind
The config for kind cluster settings
the expose port didn’t change when cluster launched, need prepared
1kind: Cluster
2apiVersion: kind.x-k8s.io/v1alpha4
3networking:
4 # WARNING: It is _strongly_ recommended that you keep this the default
5 # (127.0.0.1) for security reasons. However it is possible to change this.
6 apiServerAddress: "127.0.0.1"
7 # This can connect to k8s from external when install kind in virtual host or cloud platform(ec2 of aws)
8 # By default the API server listens on a random open port.
9 # You may choose a specific port but probably don't need to in most cases.
10 # Using a random port makes it easier to spin up multiple clusters.
11 apiServerPort: 6443
12nodes:
13- role: control-plane
14 # port forward 30019 on the host to 30019 on this node
15 extraPortMappings:
16 - containerPort: 30019
17 hostPort: 30019
18 # optional: set the bind address on the host
19 # 0.0.0.0 is the current default
20 listenAddress: "0.0.0.0"
21 # optional: set the protocol to one of TCP, UDP, SCTP.
22 # TCP is the default
23 protocol: TCP
24 - containerPort: 32578
25 hostPort: 32578
26 listenAddress: "0.0.0.0"
27 protocol: TCP
28- role: worker
29- role: worker
Commands
1# create cluster
2kind create cluster --name local-k8s --config config.yaml
3# view clusters
4kind get clusters
5# export the kubectl config to ~/.kube/config
6kind export kubeconfig --name local-k8s
7# load image to cluster
8kind load docker-image quay.io/kubevirt/virt-handler:v1.1.0-alpha.0 -n local-k8s
9
10# attached and exec the kind nodes
11docker exec -it local-k8s-worker bash
12# view all containerd containers
13crictl ps -a
14# prune the images to decrement space
15crictl rmi --prune
16# delete exited containers
17crictl rm $(crictl ps -a | grep Exited | awk '{print $1}')
Writen scripts to launch istio
1#!/usr/bin/env bash
2
3KIND_CLUSTER_NAME="local-k8s"
4IMAGES=('alpine:latest' 'istio/pilot:1.16.1' 'istio/proxyv2:1.16.1' 'istio/examples-bookinfo-details-v1:1.18.0' 'curlimages/curl' 'istio/examples-bookinfo-productpage-v1:1.18.0' 'istio/examples-bookinfo-ratings-v1:1.18.0' 'istio/examples-bookinfo-reviews-v1:1.18.0' 'istio/examples-bookinfo-reviews-v2:1.18.0' 'istio/examples-bookinfo-reviews-v3:1.18.0')
5ACTIONS=('Download images' 'Load images' 'Init istio')
6DEFAULT_ACTION="Load images"
7
8download_images() {
9 for i in "${IMAGES[@]}"
10 do
11 echo $i
12 docker pull $i
13 done
14}
15
16
17
18load_images() {
19 for i in "${IMAGES[@]}"
20 do
21 echo "load the image: $i"
22 kind load docker-image $i -n $KIND_CLUSTER_NAME
23 done
24}
25
26init_istio() {
27 istioctl install --set meshConfig.accessLogFile=/dev/stdout
28 istioctl verify-install
29 kubectl create ns apps
30 kubectl label ns apps istio-injection=enabled
31}
32
33PS3='Please enter your choice:'
34select opt in "${ACTIONS[@]}" "quit";
35do
36 case "$REPLY" in
37 1)
38 echo "You select action $opt"
39 download_images break;;
40 2)
41 load_images break;;
42 3)
43 init_istio break;;
44
45 $((${#ACTIONS[@]}+1)))
46 echo "Goodbye!"; exit 0;;
47 *)
48 echo "Anythins not choice."; continue;;
49 esac
50done
Access to kind cluster from external
1# proxy the api server in localhost, and access to it from other machine
2kubectl proxy --port=8888 --address=0.0.0.0 --accept-hosts=.*