ืืขืจื. ืชืจืืื: ืืืืจ ืื ืืื ืืืง ืืืืืจื ืืคืจืืืงื ืืืชืคืจืกืืื ืืจืฉืืช ืืฆืืืืจ
TL;DR: ืื ื ืชืจืฉืื ืฉืืขืืืจ ืื ืื ืคืืช ืืืืื ืืคืจืืกื ื-Kubernetes:
ืชืจืฉืื ืืจืืื ืืืืชืืจ ืืชืืงืื ืฉืืืืืช ืืืฉืืื. ืืืงืืจ (ืืื ืืืืช) ืืืื ื
ืืขืช ืคืจืืกืช ืืืฉืื ื-Kubernetes, ืืฉ ืืืจื ืืื ืฉืืืฉื ืจืืืืื ืฉืขืืื ืืืืืืจ:
- ืคึผึฐืจึดืืกึธื - ืืื ืกืื ืฉื ืืชืืื ืืืฆืืจืช ืขืืชืงืื ืฉื ืืืคืืืงืฆืื, ืื ืงืจื ืชืจืืืืื;
- ืฉืึตืจืึผืช - ืืืื ืขืืืกืื ืคื ืืื ืืืืืง ืชื ืืขื ืืื ืชืจืืืืื;
- Ingress - ืชืืืืจ ืฉื ืืืืคื ืฉืื ืชืขืืืจ ืชื ืืขื ืืืขืืื ืืืืฆืื ืืฉืืจืืช.
ืืืื ืชืงืฆืืจ ืืจืคื ืืืืจ:
1) ื-Kubernetes, ืืืฉืืืื ืืงืืืื ืชืขืืืจื ืืืขืืื ืืืืฆืื ืืจื ืฉืชื ืฉืืืืช ืฉื ืืืื ื ืขืืืกืื: ืคื ืืื ืืืืฆืื ื.
2) ืืืืื ืืคื ืืื ื ืงืจื ืฉืืจืืช, ืืืืฆืื ื ื ืงืจื Ingress.
3) ืืคืจืืกื ืืืฆืจืช ืคืืืื ืืื ืืจืช ืืืชื (ืื ืื ื ืืฆืจืื ืืืืคื ืืื ื).
ื ื ืื ืฉืืชื ืจืืฆื ืืคืจืืก ืืืฉืื ืคืฉืื ื-ืื ืฉืืื ืขืืื. ืชืฆืืจืช YAML ืขืืืจื ืชืืจืื ืื:
apiVersion: apps/v1
kind: Deployment # <<<
metadata:
name: my-deployment
labels:
track: canary
spec:
selector:
matchLabels:
any-name: my-app
template:
metadata:
labels:
any-name: my-app
spec:
containers:
- name: cont1
image: learnk8s/app:1.0.0
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service # <<<
metadata:
name: my-service
spec:
ports:
- port: 80
targetPort: 8080
selector:
name: app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress # <<<
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
serviceName: app
servicePort: 80
path: /
ืืืืืจื ืื ืืจืืื ืืงื ืืืชืืืื ืืืื ืืืืคื ืฉืื ืืจืืืืื ืงืฉืืจืื ืื ืืื.
ืืืืืื:
- ืืชื ืืืื ืืืฉืชืืฉ ืืืฆืืื 80 ืืืชื ืืืื ืืืฉืชืืฉ ื-8080?
- ืืื ืขืื ืืืฆืืจ ืืฆืืื ืืืฉื ืขืืืจ ืื ืฉืืจืืช ืืื ืฉืื ืื ืืชื ืืฉื?
- ืืื ืฉืืืช ืืชืืืืืช ืืฉืืืื? ืืื ืื ืฆืจืืืื ืืืืืช ืืืื ืืื ืืงืื?
ืืคื ื ืฉื ืชืืงื ืื ืืคืื ืืืืื, ืืืื ื ืืืืจ ืืืฆื ืฉืืืฉืช ืืจืืืืื ืงืฉืืจืื ืื ืืื. ืืืื ื ืชืืื ืขื ืคืจืืกื ืืฉืืจืืช.
ืืงืฉืจ ืืื ืคืจืืกื ืืฉืืจืืช
ืชืชืคืืื, ืืื ืคืจืืกื ืืฉืืจืืช ืื ืงืฉืืจืื ืืฉืื ืฆืืจื. ืืืงืื ืืืช, ืฉืืจืืช ืืฆืืืข ืืฉืืจืืช ืขื Pods, ืขืืงืฃ ืืช ืืคืจืืกื.
ืืคืืื, ืื ื ืืชืขื ืืื ืื ืืืฆื ืคืืืื ืืฉืืจืืชืื ืงืฉืืจืื ืื ืืื. ืฉืืืฉื ืืืจืื ืฉืืืื ืืืืืจ:
- ืืืืจ (
selector
) ืขืืืจ ืืฉืืจืืช ืืืื ืืืชืืื ืืคืืืช ืชืืืืช Pod ืืืช. -
targetPort
ืืืื ืืืชืืื ืขืcontainerPort
ืืืื ืืชืื ืืคืื. -
port
ืฉืืจืืช ืืืื ืืืืืช ืื ืืืจ. ืฉืืจืืชืื ืฉืื ืื ืืืืืื ืืืฉืชืืฉ ืืืืชื ืืฆืืื ืืืืืื ืฉืืฉ ืืื ืืชืืืืช IP ืฉืื ืืช.
ืืชืจืฉืื ืืื ืืืืฆื ืืช ืื ืืืืืจ ืืขืื ืืฆืืจื ืืจืคืืช:
1) ืืืืื ื ืฉืืฉืืจืืช ืืคื ื ืชื ืืขื ืืคืื ืืกืืื:
2) ืืขืช ืืฆืืจืช ืคืื, ืขืืื ืืฆืืื containerPort
ืขืืืจ ืื ืืืื ืืชืจืืืืื:
3) ืืขืช ืืฆืืจืช ืฉืืจืืช, ืขืืื ืืฆืืื port
ะธ targetPort
. ืืื ืืืืื ืืื ืืฉืชืืฉืื ืืื ืืืชืืืจ ืืืืื?
4) ืืจื targetPort
. ืื ืืืื ืืืชืืื containerPort
.
5) ื ื ืื ืฉืคืืจื 3000 ืคืชืื ืืืืื ืืื ืืขืจื targetPort
ืฆืจืื ืืืืืช ืืื.
ืืงืืืฅ YAML, ืชืืืืืช ื ports
/ targetPort
ืืืื ืืืชืืื:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
track: canary
spec:
selector:
matchLabels:
any-name: my-app
template:
metadata:
labels: # <<<
any-name: my-app # <<<
spec:
containers:
- name: cont1
image: learnk8s/app:1.0.0
ports:
- containerPort: 8080 # <<<
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- port: 80
targetPort: 8080 # <<<
selector: # <<<
any-name: my-app # <<<
ืื ืืืื ืืชืืืืช track: canary
ืืืืง ืืขืืืื ืฉื ืงืืข ืืคืจืืกื? ืื ืฆืจืื ืืืชืืื?
ืชืืืืช ืื ืืื ืกืคืฆืืคืืช ืืคืจืืกื ืืืื ื ืืฉืืฉืช ืืช ืืฉืืจืืช ืื ืืชืื ืชื ืืขื. ืืืืืื ืืืจืืช, ื ืืชื ืืืกืืจ ืืืชื ืื ืืืงืฆืืช ืื ืขืจื ืืืจ.
ืื ืขื ืืืืจืจ matchLabels
?
ืื ืืืื ืชืืื ืืืชืืื ืืชืืืืืช ืฉื ืืคืื, ืืืืืื ืฉืืื ืืฉืืฉ ืืช Deployment ืืืขืงื ืืืจ ืชืจืืืืื.
ื ื ืื ืฉืืืฆืขืช ืืช ืืขืจืืืืช ืื ืืื ืืช. ืืื ืืืืงืื ืืืชื?
ืืชื ืืืื ืืืืืง ืืช ืชืืืืช ืืคืื ืขื ืืคืงืืื ืืืื:
kubectl get pods --show-labels
ืืืืืคืื, ืื ืชืจืืืืื ืฉืืืืื ืืืกืคืจ ืืืฉืืืื:
kubectl get pods --selector any-name=my-app --show-labels
ืฉื any-name=my-app
ืืื ืชืืืืช any-name: my-app
.
ื ืฉืืจื ืงืฉืืื?
ืืชื ืืืื ืืืชืืืจ ืืคืื! ืืฉื ืื ืขืืื ืืืฉืชืืฉ ืืคืงืืื port-forward
ื- kubectl. ืืื ืืืคืฉืจ ืืืชืืืจ ืืฉืืจืืช ืืืืืืง ืืช ืืืืืืจ.
kubectl port-forward service/<service name> 3000:80
ะะดะตัั:
-
service/<service name>
- ืฉื ืืฉืืจืืช; ืืืงืจื ืฉืื ื ืื ืืmy-service
; - 3000 ืืื ืืืฆืืื ืฉืฆืจืื ืืคืชืื ืืืืฉื;
- 80 - ืืฆืืื ืฉืฆืืื ื ืืฉืื
port
ืฉืืจืืช.
ืื ืืืืืืจ ื ืืฆืจ, ืื ืืืืืจืืช ื ืืื ืืช.
ืื ืืืืืืจ ื ืืฉื, ืืฉ ืืขืื ืขื ืืชืืืืืช ืื ืฉืืืฆืืืืช ืืื ื ืชืืืืืช.
ืืงืฉืจ ืืื ืฉืืจืืช ื-Ingress
ืืฉืื ืืื ืืืชื ืืืฉื ืืืคืืืงืฆืื ืืืื ืืืืจืช Ingress. Ingress ืฆืจืื ืืืขืช ืืื ืืืฆืื ืฉืืจืืช, ืืื ืืืฆืื ืคืืืื ืืืืคื ืืช ืืืืื ืชื ืืขื. Ingress ืืืฆื ืืช ืืฉืืจืืช ืื ืืจืฉ ืืคื ืฉื ืืืฆืืื ืคืชืืื.
ืืชืืืืจ ืฉื Ingress ื-Service ืืืืืื ืืืชืืื ืฉื ื ืคืจืืืจืื:
-
servicePort
ื-Ingress ืืืื ืืืชืืื ืืคืจืืืจport
ืืฉืืจืืช; -
serviceName
ื-Ingress ืืืื ืืืชืืื ืืฉืืname
ืืฉืืจืืช.
ืืชืจืฉืื ืืื ืืกืื ืืช ืืืืืจื ืืืฆืืื:
1) ืืคื ืฉืืชื ืืืจ ืืืืข, ืฉืืจืืช ืืงืฉืื ืืืฉืื ืืกืืื port
:
2) ื-Ingress ืืฉ ืคืจืืืจ ืฉื ืงืจื servicePort
:
3) ืคืจืืืจ ืื (servicePort
) ืืืื ืชืืื ืืืชืืื port
ืืืืืจืช ืืฉืืจืืช:
4) ืื ืคืืจื 80 ืืฆืืื ืืฉืืจืืช, ืื ืื ืืืจืื servicePort
ืืื ืฉืืื ืื ื-80:
ืืคืืขื, ืืชื ืฆืจืื ืืฉืื ืื ืืฉืืจืืช ืืืืืช:
apiVersion: v1
kind: Service
metadata:
name: my-service # <<<
spec:
ports:
- port: 80 # <<<
targetPort: 8080
selector:
any-name: my-app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
serviceName: my-service # <<<
servicePort: 80 # <<<
path: /
ืืื ืืืืงืื ืื Ingress ืคืืขื?
ืืชื ืืืื ืืืฉืชืืฉ ืืฉืืื ืขื kubectl port-forward
, ืืื ืืืงืื ืืฉืืจืืช ืืชื ืฆืจืื ืืืชืืืจ ืืืงืจ Ingress.
ืจืืฉืืช ืขืืื ืืืจืจ ืืช ืฉื ืืคืื ืขื ืืงืจ Ingress:
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS
kube-system coredns-5644d7b6d9-jn7cq 1/1 Running
kube-system etcd-minikube 1/1 Running
kube-system kube-apiserver-minikube 1/1 Running
kube-system kube-controller-manager-minikube 1/1 Running
kube-system kube-proxy-zvf2h 1/1 Running
kube-system kube-scheduler-minikube 1/1 Running
kube-system nginx-ingress-controller-6fc5bcc 1/1 Running
ืืฆื ืืช ืืคืื ืฉื Ingress (ืืืชืื ืฉืืื ื ืืฆื ืืืจืื ืฉืืืช ืืืจ) ืืืคืขื ืืช ืืคืงืืื describe
ืืื ืืืืืช ืืช ืืกืคืจื ืืืฆืืื:
kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system
| grep Ports
Ports: 80/TCP, 443/TCP, 18080/TCP
ืืืกืืฃ, ืืชืืืจ ืืชืจืืื:
kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system
ืืขืช ืืื ืคืขื ืฉืืชื ืฉืืื ืืงืฉื ืืืฆืืื 3000 ืืืืฉื ืฉืื, ืืื ืชืืขืืจ ืืืฆืืื 80 ืฉื ืืคืื ืขื ืืงืจ Ingress. ืืื ืฉืชืื ื
ืกืืืื ืืฆืืืืช
ืืืื ื ืืืืจ ืฉืื ืืืื ืืฆืืืืช ืืชืืืืืช ืืืืืืช ืืืชืืื:
- ืืืืจืจ ืืืืืจืช ืืฉืืจืืช ืืืื ืืืชืืื ืืชืืืืช ืืชืจืืื;
-
targetPort
ืืืืืจื ืืฉืืจืืช ืืืื ืืืชืืืcontainerPort
ืืืื ืืชืื ืชืจืืื; -
port
ืืืืืจื ืฉืืจืืช ืืืื ืืืืืช ืื ืืืจ. ืฉืืจืืชืื ืฉืื ืื ืืืืืื ืืืฉืชืืฉ ืืืืชื ืืฆืืื ืืืืืื ืฉืืฉ ืืื ืืชืืืืช IP ืฉืื ืืช; -
servicePort
ืืื ืืกื ืืืืืช ืืืชืืืport
ืืืืืจืช ืฉืืจืืช; - ืฉื ืืฉืืจืืช ืืืื ืืืชืืื ืืฉืื
serviceName
ื-Ingress.
ืืืจืื ืืฆืขืจ, ืื ืื ืืกืคืืง ืืืขืช ืืื ืืื ืืช ื ืืื ืชืฆืืจืช YAML.
ืื ืงืืจื ืืฉืืืจืื ืืฉืชืืฉืื?
ืืืชืื ืฉืืคืื ืื ืืชืืื ืื ืฉืืื ืขืืื ืืงืจืืก.
3 ืฉืืืื ืืืืืื ืืขืืืช ืืืฉืืืื ื-Kubernetes
ืืคื ื ืฉืชืชืืื ืื ืคืืช ืืืืื ืืคืจืืกื ืฉืื, ืืชื ืฆืจืื ืืืืื ืืื ืืื Kubernetes ืขืืื.
ืืืืืื ืฉืืื ืืคืืืงืฆืื ืฉืืืจืื ื-K8s ืืฉ ืฉืืืฉื ืจืืืืื, ืืฉ ืืืฆืข ื ืืคืื ืืืืื ืืกืืจ ืืกืืื, ืืื ืืืืื.
- ืจืืฉืืช ืขืืื ืืืืื ืฉืืชืจืืืืื ืคืืขืืื, ืืื...
- ืืืืง ืื ืืฉืืจืืช ืืกืคืง ืชืขืืืจื ืืชืจืืืืื, ืืืืืจ ืืื...
- ืืืืง ืื Ingress ืืืืืจ ืืืืื.
ืืืฆืื ืืืืืืื:
1) ืืืื ืืืชืืื ืืืคืฉ ืืขืืืช ืืืืื. ืชืืืื ืืืืง ืฉืืคืืืื ืืฉ ืกืืืืกืื Ready
ะธ Running
:
2) ืื ืืชืจืืืืื ืืืื ืื (Ready
), ืขืืื ืืืจืจ ืื ืืฉืืจืืช ืืคืืฅ ืชืขืืืจื ืืื ืชืจืืืืื:
3) ืืืกืืฃ, ืขืืื ืื ืชื ืืช ืืงืฉืจ ืืื ืืฉืืจืืช ื-Ingress:
1. ืืืืื ืชืจืืืืื
ืืจืื ืืืงืจืื ืืืขืื ืงืฉืืจื ืืชืจืืื. ืืื ืื ืชืจืืืืื ืืืคืืขืื ืืชืืจ Ready
ะธ Running
. ืืชื ืืืื ืืืืืง ืืืช ืืืืฆืขืืช ืืคืงืืื:
kubectl get pods
NAME READY STATUS RESTARTS AGE
app1 0/1 ImagePullBackOff 0 47h
app2 0/1 Error 0 47h
app3-76f9fcd46b-xbv4k 1/1 Running 1 47h
ืืคืื ืืคืงืืื ืืืขืื, ืืคืื ืืืืจืื ืจืฉืื ืืชืืจ Running
ะธ Ready
ืขื ืืืช, ืื ืื ืืืงืจื ืขืืืจ ืืฉื ืืื ืืืืจืื.
ืืื ืืืืื ืื ืืฉืชืืฉ?
ืืฉื ื ืืจืืข ืคืงืืืืช ืฉืืืืฉืืืช ืืืืืื ืชืจืืืืื:
-
kubectl logs <ะธะผั pod'ะฐ>
ืืืคืฉืจ ืื ืืืืฅ ืืืื ืื ืืืืืืื ืืชืจืืื; -
kubectl describe pod <ะธะผั pod'ะฐ>
ืืืคืฉืจ ืื ืืืฆืื ืจืฉืืื ืฉื ืืืจืืขืื ืืงืฉืืจืื ืืชืจืืื; -
kubectl get pod <ะธะผั pod'ะฐ>
ืืืคืฉืจ ืื ืืงืื ืืช ืชืฆืืจืช YAML ืฉื ืคืื ืืืืืืกื ื-Kubernetes; -
kubectl exec -ti <ะธะผั pod'ะฐ> bash
ืืืคืฉืจ ืื ืืืคืขืื ืืขืืคืช ืคืงืืื ืืื ืืจืืงืืืืืช ืืืื ืืืืืื ืืคืื
ืืืืื ืืื ืืืื ืืืืืจ?
ืืขืืืื ืืื ืฉืืื ืคืงืืื ืืื ืืืจืกืืืช. ืืฉ ืืืฉืชืืฉ ืืฉืืืื ืฉื ืืื.
ืืขืืืช ืชืจืืืืื ืืืคืืื ืืืช
ืืฉื ื ืฉื ื ืกืืืื ืขืืงืจืืื ืฉื ืฉืืืืืช ืคืื: ืฉืืืืืช ืืคืขืื ืืฉืืืืืช ืืื ืจืืฆื.
ืฉืืืืืช ืืคืขืื:
-
ImagePullBackoff
-
ImageInspectError
-
ErrImagePull
-
ErrImageNeverPull
-
RegistryUnavailable
-
InvalidImageName
ืฉืืืืืช ืืื ืจืืฆื:
-
CrashLoopBackOff
-
RunContainerError
-
KillContainerError
-
VerifyNonRootError
-
RunInitContainerError
-
CreatePodSandboxError
-
ConfigPodSandboxError
-
KillPodSandboxError
-
SetupNetworkError
-
TeardownNetworkError
ืฉืืืืืช ืืกืืืืืช ืฉืืืืืช ืืืชืจ ืืืืจืืช. ืืืื ืืื ืืืฉืืืืืช ืื ืคืืฆืืช ืืืืชืจ ืืืืฆื ืืชืงื ืืืชื.
ImagePullBackOff
ืฉืืืื ืื ืืชืจืืฉืช ืืืฉืจ Kubernetes ืืื ื ืืฆืืื ืืืฉืื ืชืืื ื ืขืืืจ ืืื ืืืืืื ืืคืื. ืืืื ืฉืืืฉ ืืกืืืืช ืื ืคืืฆืืช ืืืืชืจ ืืื:
- ืฉื ืืชืืื ื ืฉืืื - ืืืฉื, ืืขืืช ืื, ืื ืฉืืชืืื ื ืื ืงืืืืช;
- ืฆืืื ืชื ืื ืงืืื ืขืืืจ ืืชืืื ื;
- ืืชืืื ื ืืืืืกื ืช ืืจืืฉืื ืคืจืื ืื-Kubernetes ืืื ืืจืฉืื ืืืฉืช ืืืื.
ืงื ืืืื ืืช ืฉืชื ืืกืืืืช ืืจืืฉืื ืืช - ืคืฉืื ืชืงื ืืช ืฉื ืืชืืื ื ืืืชื. ืืืงืจื ืฉื ืืืืจืื, ืขืืื ืืืืื ืืืฉืืจืื ืขืืืจ ืืจืืฉืื ืืกืืืจ ื-Secret ืืืืืกืืฃ ืงืืฉืืจืื ืืืื ืืคืืืื. ืืชืืขืื ืฉื Kubernetes
Crash Loop Back Off
Kubenetes ืืืจืง ืฉืืืื CrashLoopBackOff
, ืื ืืืืื ืืื ื ืืืื ืืืชืืื. ืื ืงืืจื ืืืจื ืืื ืืืฉืจ:
- ืืฉ ืืื ืืืคืืืงืฆืื ืฉืืื ืข ืืื ื ืืืคืขืื;
- ืืืืื
ืืืืืจ ืืฆืืจื ืฉืืืื ; - ืืืื Liveness ื ืืฉื ืืืชืจ ืืื ืคืขืืื.
ืขืืื ืื ืกืืช ืืืืืข ืื ืืืืื ืื ืืืืืื ืืื ืืืืืช ืืช ืืกืืื ืืืืฉืืื ืฉืื. ืื ืงืฉื ืืืฉืช ืืืืื ืื ืืืื ืฉืืืืืื ืืืคืขื ืืืืฉ ืืืจ ืืื, ืืชื ืืืื ืืืฉืชืืฉ ืืคืงืืื ืืืื:
kubectl logs <pod-name> --previous
ืืื ืืฆืื ืืืืขืืช ืฉืืืื ืืืืืืื ืืงืืื ืฉื ืืืืืื.
RunContainerError
ืฉืืืื ืื ืืชืจืืฉืช ืืืฉืจ ืืืืื ืื ืืฆืืื ืืืชืืื. ืื ืืชืืื ืืจืืข ืฉืืคื ื ืืคืขืืช ืืืคืืืงืฆืื. ืื ื ืืจื ืืืจื ืืื ืขื ืืื ืืืืจืืช ืฉืืืืืช, ืืืฉื:
- ื ืืกืืื ืืืขืืืช ืืืฆืขื ืืืกืื ืื ืงืืื ืืืื ConfigMap ืื Secrets;
- ื ืืกืืื ืืืขืืืช ืืืฆืขื ืืืกืื ืืงืจืืื ืืืื ืืงืจืืื-ืืชืืื.
ืืฆืืืช ืืชืืื ืืืื ืื ืืชืื ืืขืืืืช ืืืื kubectl describe pod <pod-name>
.
ืืชืจืืืืื ื ืืฆืืื ืืืฆื ืืืชื ื
ืืืืจ ืืืฆืืจื, ืืชืจืืื ื ืฉืืจ ืืืฆื Pending
.
ืืื ืื ืงืืจื?
ืืืื ืืกืืืืช ืืืคืฉืจืืืช (ืื ื ืื ืื ืฉืืืชืืื ืขืืื ืืกืืจ):
- ืืืฉืืื ืืื ืืกืคืืง ืืฉืืืื, ืืืื ืืื ืขืืืื ืืืืืจืื, ืืื ืืืคืขืื ืืช ืืคืื.
- ืืืืืืืงื ืืืชืงื ืืืจืื ืืฉืืืช ืืืชืืื
ResourceQuota
ืืืฆืืจืช ืคืื ืชืืจืื ืืืจืื ืืฉืืืช ืืืจืื ืืืืืกื. - ืืคืื ืืืื ืืืืชื ื
PersistentVolumeClaim
.
ืืืงืจื ืื, ืืืืืฅ ืืืฉืชืืฉ ืืคืงืืื kubectl describe
ืืชืืืืง ืืช ืืกืขืืฃ Events
:
kubectl describe pod <pod name>
ืืืงืจื ืฉื ืฉืืืืืช ืืงืฉืืจืืช ื ResourceQuotas
, ืืืืืฅ ืืืฆืื ืืช ืืืื ื ืืืฉืืื ืืืืฆืขืืช ืืคืงืืื
kubectl get events --sort-by=.metadata.creationTimestamp
ืืชืจืืืืื ืืื ื ืืืื ืื
ืื ืืคืื ืืืคืืข ืืชืืจ Running
, ืืื ืืื ืื ืืืฆื Ready
, ืคืืจืืฉื ืืืืงืช ืืืื ืืชื (ืืืืงืช ืืืื ืืช) ื ืืฉื.
ืืืฉืจ ืื ืงืืจื, ืืคืื ืื ืืชืืืจ ืืฉืืจืืช ืืื ืืืจืืช ืืืื ืชืขืืืจื. ืืืฉืืื ืืืืงืช ืืืืื ืืช ื ืืจื ืืืขืืืช ืืืคืืืงืฆืื. ืืืงืจื ืื, ืืื ืืืฆืื ืืช ืืฉืืืื, ืขืืื ืื ืชื ืืช ืืกืขืืฃ Events
ืืคืื ืืคืงืืื kubectl describe
.
2. ืืืืื ืฉืืจืืช
ืื ืชืจืืืืื ืืืคืืขืื ืืชืืจ Running
ะธ Ready
, ืื ืขืืืื ืืื ืชืืืื ืืืืคืืืงืฆืื, ืขืืื ืืืืืง ืืช ืืืืจืืช ืืฉืืจืืช.
ืืฉืืจืืชืื ืืืจืืื ืื ืืชืื ืชื ืืขื ืืชืจืืืืื ืืืชืื ืืชืืืืืช ืฉืืื. ืืื, ืืืืจ ืืจืืฉืื ืฉืขืืื ืืขืฉืืช ืืื ืืืืืง ืืื ืคืืืื ืขืืืืื ืขื ืืฉืืจืืช. ืืฉื ืื, ืชืืื ืืืืืง ืืช ื ืงืืืืช ืืงืฆื ืืฉืืจืืช:
kubectl describe service <service-name> | grep Endpoints
ื ืงืืืช ืงืฆื ืืื ืฆืื ืขืจืืื ืฉื ืืืืคืก <IP-ะฐะดัะตั:ะฟะพัั>
, ืืืคืืืช ืืื ืืื ืืื ืืืื ืืืืืช ืงืืื ืืคืื (ืืืืืจ, ืืคืืืช ืคืื ืืื ืขืืื ืขื ืืฉืืจืืช).
ืื ืกืขืืฃ Endpoins
ืจืืง, ืฉืชื ืืคืฉืจืืืืช ืืคืฉืจืืืช:
- ืืื ืชืจืืืืื ืขื ืืชืืืืช ืื ืืื ื (ืจืื: ืืืืง ืื ืืจืื ืืฉืืืช ื ืืืจ ืืืืื);
- ืืฉื ื ืฉืืืื ืืชืืืืืช ืืฉืืจืืช ืืืืจืจ.
ืื ืืชื ืจืืื ืจืฉืืื ืฉื ื ืงืืืืช ืงืฆื ืืื ืขืืืื ืื ืืืื ืืืฉืช ืืืืฉืื, ืืืฉื ืืกืืืจ ืืื ืืื ื targetPort
ืืชืืืืจ ืืฉืืจืืช.
ืืื ืืืืงืื ืืช ืืคืื ืงืฆืืื ืืืืช ืฉื ืืฉืืจืืช?
ืืื ืงืฉืจ ืืกืื ืืฉืืจืืช, ืืชื ืืืื ืืืฉืชืืฉ ืืคืงืืื kubectl port-forward
ืืื ืืืชืืืจ ืืืื:
kubectl port-forward service/<service-name> 3000:80
ะะดะตัั:
-
<service-name>
- ืฉื ืืฉืืจืืช; - 3000 ืืื ืืืฆืืื ืฉืืชื ืคืืชื ืืืืฉื;
- 80 - ืืฆืืื ืืฆื ืืฉืืจืืช.
3. ืืืืื ืื ืืกื
ืื ืงืจืืช ืขื ืืื, ืื:
- ืชืจืืืืื ืืืคืืขืื ืืชืืจ
Running
ะธReady
; - ืืฉืืจืืช ืืคืืฅ ืืืฆืืื ืชืขืืืจื ืืื ืคืืืื.
ืขื ืืืช, ืืชื ืขืืืื ืื ืืืื ืืืืืข ืืืคืืืงืฆืื.
ืืฉืืขืืช ืืืืจ ืืื ืฉืกืืืจ ืืื ืื ืฉืืงืจ Ingress ืืื ื ืืืืืจ ืืืืื. ืืืืืื ืฉืืงืจ Ingress ืืื ืจืืื ืฉื ืฆื ืฉืืืฉื ืืืฉืืื, ืงืืืืืช ืฉืืืืช ื ืืคืื ืืืืื ืฉืื ืืช ืืืชืื ืืกืื ืฉืื.
ืืื ืืคื ื ืฉืชืคื ื ืืืฉืชืืฉ ืืืืื ืืืืืืื ืืื ืืืืืืจ ืืช Ingress, ืืชื ืืืื ืืขืฉืืช ืืฉืื ืืืื ืคืฉืื. ืฉืืืืฉืื ื-Ingress serviceName
ะธ servicePort
ืืื ืืืชืืืจ ืืฉืืจืืช. ืืชื ืฆืจืื ืืืืืง ืื ืื ืืืืืจืื ืืืืื. ืืชื ืืืื ืืขืฉืืช ืืืช ืืืืฆืขืืช ืืคืงืืื:
kubectl describe ingress <ingress-name>
ืื ืขืืืื Backend
ืจืืง, ืืฉ ืกืืืจืืช ืืืืื ืืฉืืืืช ืชืฆืืจื. ืื ืืงืฆื ืืืืืจื ื ืืฆื ืืืงืื, ืื ืืืืฉืื ืขืืืื ืืื ื ื ืืืฉ, ืืืชืื ืฉืืืขืื ืงืฉืืจื ื:
- ืืืืจืืช ื ืืืฉืืช ืื ืืกื ืืืืื ืืจื ื ืืฆืืืืจื;
- ืืืืจืืช ื ืืืฉืืช ืืืฉืืื ืืืืื ืืจื ื ืืฆืืืืจื.
ืืชื ืืืื ืืืืืช ืืขืืืช ืืชืฉืชืืช ืขื ืืื ืืืืืจ ืืฉืืจืืช ืืคืื Ingress. ืืื ืืขืฉืืช ืืืช, ืืฆื ืชืืืื ืืช ืืคืื ืฉื Ingress Controller (ืืืชืื ืฉืืื ื ืืฆื ืืืจืื ืฉืืืช ืืืจ):
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS
kube-system coredns-5644d7b6d9-jn7cq 1/1 Running
kube-system etcd-minikube 1/1 Running
kube-system kube-apiserver-minikube 1/1 Running
kube-system kube-controller-manager-minikube 1/1 Running
kube-system kube-proxy-zvf2h 1/1 Running
kube-system kube-scheduler-minikube 1/1 Running
kube-system nginx-ingress-controller-6fc5bcc 1/1 Running
ืืฉืชืืฉ ืืคืงืืื describe
ืืื ืืืืืืจ ืืช ืืืฆืืื:
kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system
| grep Ports
ืืืกืืฃ, ืืชืืืจ ืืชืจืืื:
kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system
ืืขืช ืื ืืืงืฉืืช ืืืฆืืื 3000 ืืืืฉื ืืืคื ื ืืืฆืืื 80 ืฉื ืืคืื.
ืื ืขืืื ืขืืฉืื?
- ืื ืื, ืื ืืืขืื ืืื ืืชืฉืชืืช. ืืฉ ืฆืืจื ืืืจืจ ืืืฆื ืืืืืง ืืชื ืืขื ืื ืืชืืช ืืืฉืืื.
- ืื ืื, ืื ืืืขืื ืืื ืืืงืจ Ingress.
ืื ืืื ื ืืฆืืื ืืืจืื ืืืงืจ Ingress ืืขืืื, ืชืฆืืจื ืืืฆืข ื ืืคืื ืืืืื.
ืืฉื ื ืกืืืื ืจืืื ืฉื ืืงืจื Ingress. ืืคืืคืืืจืืื ืืืืชืจ ืื Nginx, HAProxy, Traefik ืืื'. (ืืืืืข ื ืืกืฃ ืขื ืคืชืจืื ืืช ืงืืืืื, ืจืื
ืืืชืืจ ืืืืื ืืืงืจ Ingress Nginx
ืืคืจืืืงื Ingress-nginx ืืฉ ืืืจื ืจืฉืื kubectl ingress-nginx
ืืืื ืืฉืืฉ ืขืืืจ:
- ื ืืชืื ืฉื ืืืื ืื, backends, ืืืฉืืจืื ืืื';
- ืงืฉืจืื ื-Ingress;
- ืืืื ืืช ืืชืฆืืจื ืื ืืืืืช.
ืฉืืืฉ ืืคืงืืืืช ืืืืืช ืืขืืจื ืื ืืื:
-
kubectl ingress-nginx lint
- ืฆ'ืงืืnginx.conf
; -
kubectl ingress-nginx backend
- ืืืงืจ ืืช ืืงืฆื ืืืืืจื (ืืืืื ืkubectl describe ingress <ingress-name>
); -
kubectl ingress-nginx logs
- ืืืืง ืืช ืืืืื ืื.
ืฉืื ืื ืฉืืืงืจืื ืืกืืืืื ืืืชืื ืฉืืืื ืขืืื ืืฆืืื ืืช ืืจืื ืืฉืืืช ืื ืืื ืขืืืจ ืืงืจ Ingress ืืืืฆืขืืช ืืืื --namespace <name>
.
ืชืงืฆืืจ
ืคืชืจืื ืืขืืืช ืฉื Kubernetes ืืืื ืืืืืช ืืืชืืจ ืื ืืื ื ืืืืข ืืืืคื ืืืชืืื. ืชืืื ืืืื ืืืฉืช ืืืขืื ืืืืื ืืืขืื: ืืชืื ืขื ืชืจืืืืื, ืืืืืจ ืืื ืืืฉื ืืฉืืจืืช ืื-Ingress. ื ืืชื ืืืืฉื ืืช ืืื ืืงืืช ื ืืคืื ืืืืืื ืืืชืืืจืืช ืืืืืจ ืื ืขื ืืืืืืงืืื ืืืจืื, ืืืื:
- ืืฉืจืืช ืกืจืง ื-CronJobs;
- StatefulSets ื-DaemonSets.
ืื ื ืืืืข ืืช ืชืืืชื
ื .ื ืืืืชืจืื
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
ืชืืกืฃ kubectl-debug ืื ืืคืื ืืืืื ืืชืจืืืืื ืฉื Kubernetes "; - ยซ
6 ืืืื ืืขืจืืช ืืฉืขืฉืขืื ืืชืคืขืื ืฉื Kubernetes [ืืืคืชืจืื ืฉืืื] "; - ยซ
ืืืื ืืืคืชืื ืืคืืืงืฆืืืช ืืคืืขืืืช ืขื Kubernetes "; - ยซ
6 ืกืืคืืจืื ืืขืฉืืื ืืืื ืืืืืืื ืฉืื ื ื-SRE ".
ืืงืืจ: www.habr.com