VARIS VONGUEA-AREE

🔥🇹🇭 Bangkok Thailand

High level experience in web design and development knowledge, producing quality work.

Kubernetes🔗

//kubectl
kubectl apply -f <filename>
kubectl delete -f <filename>

//Config
kubectl config get-contexts                     //list context
kubectl config use-context context_name
kubectl config delete-context  context_name

//Services
kubectl get services
kubectl config set-context --current --namespace=
kubectl describe service

//Nodes
kubectl get nodes

//Pods 
kubectl get pods
kubectl delete pod <name>
kubectl -n <namespace> delete pod <name>
kubectl exec -n apisix deploy/apisix -- curl -s http://127.0.0.1:9180/apisix/admin/routes -H 'X-API-Key: edd1c9'

kubectl exec -it -n <namespace> <pod_name> -- /bin/sh
wget -O - http://localhost:9080/apisix/admin/routes


//Namespace
kubectl create namespace <name>
kubectl config set-context --current --namespace=<namespace>

//Ingress
kubectl describe ingress single-ingress

//Event
kubectl get events -n default

//Endpoint
kubectl get endpoints service apisix-dashboard


Kustomize🔗

Helm🔗

  helm repo update
  helm repo list
  helm install
  helm uninstall <name>

Kubernetes Hub🔗

https://artifacthub.io/

https://operatorhub.io/?keyword=postg&category=Database

Dashboard for Kubernetes🔗

https://github.com/kdash-rs/kdash

ใน kubernetest ประกอบไปด้วย

Overview

Master ทำหน้าที่ให้บริการ Kubernetes API (เป็น REST)
Node ทำหน้าที่ run container

Container🔗

เมื่อทำไฟล์ docker ได้แล้ว ก็จะได้ container

Pod🔗

เมื่อได้ไฟล์ container มาแล้ว สามารถรวมกันหลายๆ ไฟล์แล้วรวมเป็น pod

Replication Controller (Replica)🔗

API objects in Kubernetes that refers to pod replicas. The idea is to be able to control a set of pods’ behaviors.

YAML (.yaml)🔗

แบ่งโครงสร้างเป็น 2 ประเภท Lists , Maps

YAML Lists เป็นรายละเอียดแบบ json

YAML Maps🔗

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web

หลังเพิ่ม container

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88

Kind (ประเภท)🔗

pod: your running containerized application with environment variables, disk, etc. together, pods born and die quickly, like at deploys,

kubectl get pods                   /* คำสั่งในการแสดง pod */
kubectl get pods --output=wide     /* แสดง pod ละเอียด    */
kubectl describe pod ชื่อ pod /* รายละเอียด pod */ 
kubectl apply -f ชื่อไฟล์.yaml /* อัพเดตไฟล์ */ 
kubectl logs ชื่อ pod /* แสดงการทำงาน pod */
kubectl delete pods ชื่อ pod         /* ลบ pod */

deployment: configuration of your application that describes what state do you need (CPU, memory, env. vars, docker image version, disks, number of running instances, deploy strategy, etc.):

kubectl delete deployment ชื่อ pod // ลบ pod ที่เป็น deployment

secret: you can separate your credentials from environment variables,

service: exposes your running pods by label(s) to other apps or to the outside world on the desired IP and port

$ kubectl get endpoints ${SERVICE_NAME}      /* เช็คปลายทาง service*/

ตัวอย่าง image

id: my-pod
kind: Pod
apiVersion: v1
desiredState:
  manifest:
    containers:
    - name: <container-name>
      image: gcr.io/<your-project>/<your-image>

Service🔗

ถ้าอยากให้ภายนอกต่อได้ Internet <-> k8s ingress <-> k8s service <-> k8s pods

สามารถทำได้

Port Forward
Node Port
Load Balancer

Load Balance🔗

apiVersion: v1
kind: Service
metadata:
  name: nginx
  annotations:
    kubernetes.digitalocean.com/load-balancer-id: "ad6541"
    service.beta.kubernetes.io/do-loadbalancer-size-unit: "1"
    service.beta.kubernetes.io/do-loadbalancer-disable-lets-encrypt-dns-records: "false"
spec:
  type: LoadBalancer
  selector:
    app: nginx-example
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80 

kubectl apply -f loadbalance.yml

Port Forward🔗

kubectl port-forward -n apisix service/apisix-gateway 8080:80

Ingress🔗

is a Kubernetes resource that encapsulates a collection of rules and configuration for routing external HTTP(S) traffic to internal services.

ต้องทำ IP เป็น static ก่อน ถ้าใช้ Google Container

ถ้าจะหา external IP address ใน load balancer

$ kubectl get ingress basic-ingress    // ดึงรายละเอียด ingress มาแสดง
$ kubectl delete ingress basic-ingress  //ลบ ingress load balance

Describe Information🔗

kubectl describe service apisix-loadbalancer -n apisix

Kustomize🔗