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