การใช้ งาน Kubernetes เบือ- งต้ นบน Nutanix Calm
02-09-2564
1
Module 1 : Kubernetes Introduction
Module 2 : Kubernetes Cluster Architecture
Module 3 : Pod/Service/Deployment/Namespaces
Module 4 : Persistent Volumes and Persistent Volume Cliams
Module 5 : Deploy/Manage Kubernetes with Nutanix Calm
2
Module 1
Kubernetes Introduction
3
Getting Started
Virtual Machines and Containers
Getting Started
Why use “Containers”?
Getting Started
Containers : Packages to get software to run reliably
Getting Started
Container Orchestration Tool
Getting Started
Container Orchestration - Kubernetes
Getting Started
Kubernetes Features
Provisioning& Service Discovery&
Self-Healing Storage Orchestrator Auto-Scaling Run Anywhere
Deployment Load Balancing
Automatic Rollout Secret & Configuration
REST API Security Cluster Scale
& Rollback Management
Kubernetes Benefits
Kubernetes (k8s) – Key Benefits
Kubernetes Benefits
Portability – Cloud Agnostic
Kubernetes Benefits
Portability – Focus on building key product
Kubernetes Benefits
Portability – Faster speed to market
Kubernetes Benefits
Portability – Faster speed to market
Developer pushes to git repository
GitHub Webhook Jenkins copies GitHub Repo
Triggers Jenkins • Dockerfile
• App code
• Test code
Jenkins has Docker build
an image based on the
Dockerfile
Jenkins Deploys the container
with the application code
and desired tests are executed
14
Kubernetes Benefits
Scalability– Manual scaling is inconsistent
Kubernetes Benefits
Scalability– Monolithic scaling is expensive
Kubernetes Benefits
Scalability– Autoscaling
Kubernetes Benefits
High Availability – Self-healing
Kubernetes Benefits
High Availability – Load Balancing
Module 2
Kubernetes Cluster Architecture
20
Kubernetes Cluster Architecture
Kubernetes Clusters
Kubernetes Cluster Architecture
Kubernetes Clusters
Kubernetes Cluster Architecture
High Level Architecture
Kubernetes Cluster Architecture
Master Node : API Server
Kubernetes Cluster Architecture
Master Node : Scheduler
Kubernetes Cluster Architecture
Master Node : Scheduler
Kubernetes Cluster Architecture
Master Node : Scheduler
Kubernetes Cluster Architecture
Master Node : Controller Manager
Kubernetes Cluster Architecture
Master Node : Controller Manager
https://medium.com/@chaiwat.dec/kubernetes-basic-%E0%B8%95%E0%B8%AD%E0%B8%99%E0%B8%97%E0%B8%B5%E0%B9%88-1-architecture-de11b509eceb
Kubernetes Cluster Architecture
Master Node : Controller Manager
Kubernetes Cluster Architecture
Master Node : etcd
Kubernetes Cluster Architecture
Worker Nodes
Kubernetes Cluster Architecture
Worker Nodes : Kubelet
Kubernetes Cluster Architecture
Worker Nodes : Kube-Proxy
Kubernetes Cluster Architecture
Worker Nodes : Container Runtime
Kubernetes Cluster Architecture
High Level Architecture
Design Cluster
Resources Requirement in the Pod
Design Cluster
Number of Worker Nodes in the Cluster
Design Cluster
Application Pod in the Cluster
Design Cluster
Size of Master Nodes
Troubleshoot Cluster
Listing Cluster
Troubleshoot Cluster
Looking at Logs
https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/
Module 3
Pod/Service/Deployment/Namespaces
43
Kubernetes Cluster Architecture
Pods
• The smallest object that you can create in Kubernetes
Kubernetes Cluster Architecture
Pods
• The smallest object that you can create in Kubernetes
• One Pod may have multiple Containers eg. Side Car Agent
Kubernetes Cluster Architecture
Pods -Declarative
• Declarative configurations are defined using YAML file
Kubernetes Cluster Architecture
Pods -Declarative
Kubernetes Cluster Architecture
Pods -Declarative
Kubernetes Cluster Architecture
Pods -Declarative
Kubernetes Cluster Architecture
Pods -Declarative
Kubernetes Cluster Architecture
Pods -Declarative
Kubernetes Cluster Architecture
Pods – Output to YAML
Kubernetes Cluster Architecture
ReplicaSet
• Construct that runs multiple instances of the same Pod
Kubernetes Cluster Architecture
ReplicaSet : Self-healing
Kubernetes Cluster Architecture
ReplicaSet : Self-healing
Kubernetes Cluster Architecture
ReplicaSet - Autoscaling
Kubernetes Cluster Architecture
Deployment
Kubernetes Cluster Architecture
Deployment – Rolling Update
Updating
Completed
Services
Services
Services
ClusterIP – Internal Communication
Services
ClusterIP – Internal Communication
Services
NodePort – External Access
Services
NodePort – External Access
Services
NodePort – External Access
Services
Microservice Architecture Example
Management
Namespaces
Management
Namespaces
Management
Namespaces
Management
Namespaces
Management
Namespaces
Management
Namespaces : Resource Quota
Module 4
Persistent Volumes and Persistent Volume Claims
75
Persistent Volumes and Persistent Volume Claims
Pods are ephemeral
- Required storage for store persistent data
Persistent Volumes and Persistent Volume Claims
How do you store data?
- Each Pod has own data
Persistent Volumes and Persistent Volume Claims
How do you store data?
- The Pod can access own data from every nodes
Persistent Volumes and Persistent Volume Claims
Persistent Volumes
- Persistent Volume (PV) is interface to actual storage
Persistent Volumes and Persistent Volume Claims
Persistent Volume Claims
Persistent Volumes and Persistent Volume Claims
K8s Admin and K8s User
Persistent Volumes and Persistent Volume Claims
K8s Admin and K8s User
Persistent Volumes and Persistent Volume Claims
Nutanix ABS – Storage Class
Persistent Volumes and Persistent Volume Claims
Nutanix ABS
- Provide Storage Class (Dynamic PV)
Persistent Volumes and Persistent Volume Claims
Nutanix ABS
Persistent Volumes and Persistent Volume Claims
Nutanix ABS
Persistent Volumes and Persistent Volume Claims
Nutanix ABS – Deploy by Calm
- Deploy K8s Cluster by Calm K8s blueprint, also provide Nutanix Storage Class
Persistent Volumes and Persistent Volume Claims
Nutanix ABS – Deploy by Calm
- Deploy K8s Cluster by Calm K8s blueprint, also provide Nutanix Storage Class
Persistent Volumes and Persistent Volume Claims
Nutanix ABS – Deploy by Calm
Module 5
Deploy/Manage Kubernetes Cluster
with Nutanix Calm
90
Deploy Kubernetes Cluster with Nutanix Calm
Deployment Steps
1. Select Blueprint from Market place
2. Generate SSH Key Pair
3. Launch deployment
4. Create Service Account
5. Kubernetes web UI dashboard
6. Create namespace
7. Create deployment
8. Create service
Deploy Kubernetes Cluster with Nutanix Calm
Select K8S Blueprint on Calm
• Login to prism central
• Go to Services > Calm > Marketplace
• Select K8S-DGT Blueprint
Deploy Kubernetes Cluster with Nutanix Calm
Generating an SSH Key Pair each Nodes Credential
• Generate SSH Key on a Linux VM
Deploy Kubernetes Cluster with Nutanix Calm
Generating an SSH Key Pair each Nodes Credential
• Generate SSH Key on Windows VM
Deploy Kubernetes Cluster with Nutanix Calm
Required Inputs for K8S Blueprint
• Click Get to see blueprint detail
• Click Lunch to deploy blueprint
• Prepare input variable
1. Application Name
2. id_rsa_pub
3. KUBE_CLUSTER_NAME
4. SSH User, private key
• Click Deploy button
Deploy Kubernetes Cluster with Nutanix Calm
Required Inputs for K8S Blueprint
• Click Get to see blueprint detail
• Click Lunch to deploy blueprint
• Prepare input variable
1. Application Name
2. id_rsa_pub
3. KUBE_CLUSTER_NAME
4. SSH User, private key
• Click Deploy button
4
Deploy Kubernetes Cluster with Nutanix Calm
Completed Deployment K8S Cluster
97
Deploy Kubernetes Cluster with Nutanix Calm
Completed Deployment K8S Cluster
When deploy completed
Manage Kubernetes Cluster with Nutanix Calm
Manage K8s Cluster
Manage Kubernetes Cluster with Nutanix Calm
Upgrade K8s Cluster
- Input target version of K8s
Manage Kubernetes Cluster with Nutanix Calm
Scale Out (Worker Node)
- Input number of worker nodes which will be added
101
Manage Kubernetes Cluster with Nutanix Calm
Scale In (Worker Node)
- Input number of worker nodes which will be removed
102
Manage Kubernetes Cluster with Nutanix Calm
Delete Cluster
- Delete both VM and Application in Calm
103
Manage Kubernetes Cluster with Nutanix Calm
Soft Delete Cluster
- Delete only Application in Calm, VM need manual remove
104
Deploy Kubernetes Cluster with Nutanix Calm
Access K8s Web UI
Verify K8s Web UI Service
Deploy Kubernetes Cluster with Nutanix Calm
Access K8s Web UI
• Create service account name admin-user , namespace default
• Create cluster role binding to admin-user as cluster-admin, namespace default
Deploy Kubernetes Cluster with Nutanix Calm
Access K8s Web UI
• Check user
• kubectl get serviceaccounts -n default
• Get secret
• kubectl -n default describe secret $(kubectl -n default get secret | grep admin-user | awk '{print $1}’)
Deploy Kubernetes Cluster with Nutanix Calm
Access K8s Web UI
• Open Kubernetes Dashboard select Token and paste token here then sign in
dashboard.
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create namespace with Kubernetes dashboard
• Click CREATE
• Input YAML Code or JSON
• Click UPLOAD
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create namespace with Kubernetes dashboard
• After upload code go to Menu Cluster > Namespaces
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create deployment in demoapp
namespace
• Prepare file deployment
• Create nginx 2 pods
• Kind : Deployment
• Name : nginx-deployment
• Replicas : 2
• Labels : nginx
• Image : nignx:1.15.4
• Ports : 80
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create deployment in demoapp namespace
• Select namespace demoapp
• Click Create > CREATE FROM FILE
• Brose file YAML to create deployment
• Click UPLOAD
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create deployment in demoapp namespace
• Deployments : nginx-deployment and Pods will create on demoapp namespace
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Click at pod name to see detail or exec console
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Scale a deployment
• Menu Deployment > Select deployment > SCALE
• Input Desire number of pods then click OK
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create Node pod service
• Prepare file to deployment
• Kind : Service
• Name: nginx-service
• App: nginx **match app label pod
• Type : NodePort
• targetPort : 80 ** container port
• nodePort : 30081
** Since this is a NodePort service,
you should be able to access it using port 30081
on any of your cluster's servers
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create Node pod service
• Select namespace demoapp
• Click Create > CREATE FROM FILE
• Brose file YAML to create deployment
• Click UPLOAD
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create Node pod service
Deploy Kubernetes Cluster with Nutanix Calm
Example Deploy Simple Service
• Create Node pod service
you should be able to access it using port 30081 on any of your cluster's servers
1