1. Command cơ bản

# use config k3s
export KUBECONFIG=./kubeconfig-kc-dev-001.yaml

# add / edit 1 service
kubectl apply -f service.yaml
# re run service, download new image
kubectl rollout restart deployment <service>

kubectl get node -o wide
kubectl get pod
kubectl get svc
kubectl get svc nginx (-o yaml)
kubectl get pods -l app=nginx -o wide
kubectl describe pod <pod-name>
kubectl logs <pod-name> -c <container>

# stop container, not delete service
kubectl scale deployment <service-name> --replicas=0

kubectl delete service <service-name>
kubectl delete deployment <service-name>
kubectl delete pod <pod-name>

kubectl delete pod myapp -n default --grace-period=0 --force

########### other:
docker tag soda-app 10.10.10.15:30500/soda

2. Ví dụ file

1. k3s.config.yaml

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: authority-data-key
    server: <https://10.10.10.10:6443>
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    client-certificate-data: certificate-data-key
    client-key-data: client-data-key

2. service.yaml

Service chứa nhiều pod, giao tiếp giữa node và pod, tự tìm các node phù hợp để triển khai pod

apiVersion: v1
kind: Service
metadata:
  name: soda
spec:
  selector:
    app: soda
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080

3. development.yaml

Triển khai pod, tương tự container của docker, chú ý mục: containers, khai báo docker image, khá giống trong file docker-compose.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: soda
spec:
  replicas: 1
  selector:
    matchLabels:
      app: soda
  template:
    metadata:
      labels:
        app: soda
    spec:
      containers:
      - name: soda
        image: regitry.com/soda:latest
        imagePullPolicy: Always
        ports:
          - containerPort: 8080

        env:
          - name: MYSQL_HOST
            value: mysql
          - name: MYSQL_PORT
            value: "3306"
          - name: MYSQL_DATABASE
            value: db
          - name: MYSQL_USER
            value: root
          - name: MYSQL_PASSWORD
            value: password

4. registries.yaml

Nếu dùng registry nội bộ, ko có https, thì download image bị chặn, phải vào tất cả node (master và worker) để thêm file này: /etc/rancher/k3s/registries.yaml. Host là địa chỉ IP của server registry

mirrors:
  "10.10.10.15:30500":
    endpoint:
      - "<http://10.10.10.15:30500>"

Sau đó dùng lệnh bash

sudo systemctl restart k3s-agent
sudo systemctl restart k3s