Demo Steps to Create GKE cluster #
login to gcp console #
gcloud auth login
Create gke regional cluster #
gcloud container clusters create demo-regional-cluster \
--region us-central1 \
--node-locations us-central1-a,us-central1-b,us-central1-c \
--enable-master-authorized-networks \
--enable-ip-alias \
--preemptible \
--project <project-id>
Connect to GKE cluster #
gcloud beta container clusters get-credentials demo-regional-cluster --region us-central1 --project <project-id>
kubectl get pods --all-namespaces
Add my IP to master autoized networks #
gcloud container clusters update demo-regional-cluster \
--project <project-id> --region us-central1 \
--enable-master-authorized-networks \
--master-authorized-networks 103.252.202.101/32
Show pods all #
kubectl get pods --all-namespaces
Show available gke nodes #
kubectl get nodes
Delete gke cluster #
gcloud container clusters delete demo-regional-cluster --project <project-id> --region us-central1
Deploy simple hello applicaton #
deployment-hello-dep.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-dep
namespace: default
spec:
replicas: 10
selector:
matchLabels:
app: hello-dep
template:
metadata:
labels:
app: hello-dep
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
imagePullPolicy: Always
name: hello-dep
ports:
- containerPort: 8080
kubectl apply -f deployment-hello-dep.yaml
Expose application using ClusterIP #
apiVersion: "v1"
kind: "Service"
metadata:
name: "service-cluster-ip-hello-dep"
namespace: "default"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
selector:
app: "hello-dep"
type: "ClusterIP"
Expose application using NodePort #
apiVersion: "v1"
kind: "Service"
metadata:
name: "service-node-port-hello-dep"
namespace: "default"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
selector:
app: "hello-dep"
type: "NodePort"
Open firewall for nodeport #
gcloud compute firewall-rules create service-node-port-hello-dep --allow tcp:31358 --project <project-id>
gcloud compute firewall-rules delete service-node-port-hello-dep --project <project-id>
Expose application using LoadBalancer #
apiVersion: "v1"
kind: "Service"
metadata:
name: "service-loadbalancer-hello-dep"
namespace: "default"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
selector:
app: "hello-dep"
type: "LoadBalancer"
loadBalancerIP: ""