kubectl
Create a deployment and expose service port
kubectl create deployment json-server --image=hieuvpn/lap:8 -r 2
kubectl expose deployment json-server --type=LoadBalancer --name=json-server --port=8092
#allow pods run on master-node
kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
#kubectl taint node master-node node-role.kubernetes.io/master=:NoSchedule
expose port 8080
‘ name: json-server
‘ ports:
‘ - containerPort: 80
‘ protocol: TCP
‘ resources: {}
Limit resouce
‘ resources:
‘ limits:
‘ cpu: 200m
‘ memory: 300M
‘ requests:
‘ cpu: 50m
‘ memory: 200M
Volume mount
‘ resources: {}
‘ volumeMounts:
‘ - mountPath: /data
‘ name: jsrv
‘ subPath: json-server
‘ terminationGracePeriodSeconds: 30
‘ volumes:
‘ - name: jsrv
‘ persistentVolumeClaim:
‘ claimName: json-server
Liveness Probe
‘ resources: {}
‘ livenessProbe:
‘ failureThreshold: 3
‘ httpGet:
‘ path: /livez
‘ port: https
‘ scheme: HTTPS
‘ periodSeconds: 10
‘ successThreshold: 1
‘ timeoutSeconds: 1
‘ readinessProbe:
‘ failureThreshold: 3
‘ exec:
‘ command:
‘ - /bin/bash
‘ - c
‘ - /ready.sh
‘ initialDelaySeconds: 20
‘ periodSeconds: 10
‘ successThreshold: 1
‘ timeoutSeconds: 1
Public IP
clusterIPs:
- 10.110.15.54
externalIPs:
- 69.30.241.22
Longhorn
curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.4.0/scripts/environment_check.sh | bash
#kernel version (uname -r) must be the same on all nodes
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.4.0/deploy/prerequisite/longhorn-iscsi-installation.yaml kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.4.0/deploy/prerequisite/longhorn-nfs-installation.yaml
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.4.0/deploy/longhorn.yaml
web portal = service longhorn-frontend Create Volume, PV/PVC, mount /dev/sdb /mnt/longhorn
MetricServer
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml -O metrics-server-ha.yaml kubectl apply -f metrics-server-ha.yaml edit the deployment, add - --kubelet-insecure-tlsExecute pod command
kubectl exec mysql-set-0 -- sh -c "mysql --defaults-extra-file=/etc/mysql/conf.d/my.key < /etc/mysql/conf.d/init.sql"
kubectl exec mysql-set-0 -i -- bash < mysql-set0.cmdRestart Pod
kubectl delete pod mysql-set-0
Restart Deployment
kubectl rollout restart deployment json-server
Docker rmi --prune
crictl -r /run/containerd/containerd.sock rmi --prune
docker system prune --volumes
Copy file from host to pods
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar