рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: рдпреЛ рд▓реЗрдЦ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрдирдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВрдХреЛ рдЕрдВрд╢ рд╣реЛ
TL; DR: рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ Kubernetes рдорд╛ рдбрд┐рдмрдЧ рдбрд┐рдмрдЧ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ:
рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд░ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдлреНрд▓реЛрдЪрд╛рд░реНрдЯред рдореВрд▓ (рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛) рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ
Kubernetes рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рддреАрдирд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЫрдиреН:
- рддреИрдирд╛рде - рдпреЛ рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдиреБрд╕реНрдЦрд╛ рд╣реЛ рдЬреБрди рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреЛрдб рднрдирд┐рдиреНрдЫ;
- рд╕реЗрд╡рд╛ - рдкреЛрдбрд╣рд░реВ рдмреАрдЪ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрдиреЗ рдЖрдиреНрддрд░рд┐рдХ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░;
- рдЖрдХреНрд░рд╛рдордХ - рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рд╕реЗрд╡рд╛рдорд╛ рдХрд╕рд░реА рдЯреНрд░рд╛рдлрд┐рдХ рдЖрдЙрдБрдЫ рднрдиреНрдиреЗ рд╡рд┐рд╡рд░рдгред
рдпрд╣рд╛рдБ рдПрдХ рджреНрд░реБрдд рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╕рд╛рд░рд╛рдВрд╢ рдЫ:
1) Kubernetes рдорд╛, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВрдХреЛ рджреБрдИ рддрд╣рд╣рд░реВ рдорд╛рд░реНрдлрдд рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ: рдЖрдиреНрддрд░рд┐рдХ рд░ рдмрд╛рд╣реНрдпред
реи) рдЖрдиреНрддрд░рд┐рдХ рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд▓рд╛рдИ рд╕реЗрд╡рд╛ рднрдирд┐рдиреНрдЫ, рдмрд╛рд╣рд┐рд░реАрд▓рд╛рдИ рдЗрдиреНрдЧреНрд░реЗрд╕ рднрдирд┐рдиреНрдЫред
3) рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд▓реЗ рдкреЛрдбрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрджрдЫ (рддрд┐рдиреАрд╣рд░реВ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдЫреИрдирдиреН)ред
рдорд╛рдиреМрдВ рдХрд┐ рддрдкрд╛рдЗрдБ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ a la рд▓рд╛рдЧреВ рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ рдирдорд╕реНрддреЗ рд╕рдВрд╕рд╛рд░ред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ 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 рдХрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ?
- рдХреЗ рдореИрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдкреЛрд░реНрдЯ рдмрдирд╛рдЙрдиреБ рдкрд░реНрдЫ рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╡рд┐рд╡рд╛рдж рдЧрд░реНрджреИрдирдиреН?
- рдХреЗ рд▓реЗрдмрд▓ рдирд╛рдорд╣рд░реВ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫрдиреН? рдХреЗ рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рд╕рдорд╛рди рд╣реБрдиреБрдкрд░реНрдЫ?
рдбрд┐рдмрдЧрд┐рдЩрдорд╛ рдлреЛрдХрд╕ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддреАрдирд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдХрд╕рд░реА рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН рднрдиреЗрд░ рд╕рдореНрдЭреМрдВред рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд░ рд╕реЗрд╡рд╛рдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реМрдВред
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд░ рд╕реЗрд╡рд╛ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдз
рддрдкрд╛рдИрдВ рдЫрдХреНрдХ рдкрд░реНрдиреБрд╣реБрдиреЗрдЫ, рддрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд░ рд╕реЗрд╡рд╛рд╣рд░реВ рдХреБрдиреИ рдкрдирд┐ рд╣рд┐рд╕рд╛рдмрд▓реЗ рдЬреЛрдбрд┐рдПрдХрд╛ рдЫреИрдирдиреНред рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛, рд╕реЗрд╡рд╛ рдкреЛрдбрд╣рд░реВрдорд╛ рд╕рд┐рдзреИ рдкреЛрдЗрдиреНрдЯ рдЧрд░реНрджрдЫ, рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрджреИред
рдпрд╕реИрд▓реЗ, рд╣рд╛рдореА рдкреЛрдб рд░ рд╕реЗрд╡рд╛рд╣рд░реВ рдХрд╕рд░реА рдПрдХ рдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН рднрдиреНрдиреЗрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдЫреМрдВред рдпрд╛рдж рд░рд╛рдЦреНрдиреБ рдкрд░реНрдиреЗ рддреАрди рдХреБрд░рд╛рд╣рд░реБ:
- рдЪрдпрдирдХрд░реНрддрд╛ (
selector
) рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрддрд┐рдорд╛ рдПрдЙрдЯрд╛ рдкреЛрдб рд▓реЗрдмрд▓ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫред -
targetPort
рдорд┐рд▓реНрдиреБ рдкрд░реНрдЫcontainerPort
рдкреЛрдб рднрд┐рддреНрд░ рдХрдиреНрдЯреЗрдирд░ред -
port
рд╕реЗрд╡рд╛ рдЬреЗ рдкрдирд┐ рд╣реБрди рд╕рдХреНрдЫред рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рд╕рдорд╛рди рдкреЛрд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдлрд░рдХ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЫрдиреНред
рдирд┐рдореНрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд░реВрдкрдорд╛ рдорд╛рдерд┐рдХрд╛ рд╕рдмреИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрджрдЫ:
1) рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдирд┐рд╢реНрдЪрд┐рдд рдкреЛрдбрдорд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрджрдЫ:
2) рдкреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ containerPort
рдкреЛрдбрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐:
3) рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ port
╨╕ targetPort
. рддрд░ рдХреБрди рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ?
4) рдорд╛рд░реНрдлрдд targetPort
ред рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ containerPort
.
рел) рдорд╛рдиреМрдВ рдкреЛрд░реНрдЯ рейрежрежреж рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЦреБрд▓рд╛ рдЫред рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рди 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
?
рдпреЛ рд╕рдБрдзреИ рдкреЛрдбрдХреЛ рд▓реЗрдмрд▓рд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреБрдкрд░реНрдЫ, рдХрд┐рдирдХрд┐ рдпреЛ рдкреЛрдб рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╣реА рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрднрдпреЛред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ?
рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдкреЛрдб рд▓реЗрдмрд▓ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
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 рдирд╛рдо рд░ рдЦреБрд▓рд╛ рдкреЛрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред
рдкреНрд░рд╡реЗрд╢ рд░ рд╕реЗрд╡рд╛рдХреЛ рд╡рд┐рд╡рд░рдгрдорд╛ рджреБрдИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ:
-
servicePort
Ingress рдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫport
рд╕реЗрд╡рд╛рдорд╛; -
serviceName
Ingress рдорд╛ рдХреНрд╖реЗрддреНрд░ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫname
рд╕реЗрд╡рд╛рдорд╛ред
рдирд┐рдореНрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рдкреЛрд░реНрдЯ рдЬрдбрд╛рдирд╣рд░реВ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реНрджрдЫ:
1) рддрдкрд╛рдИрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдЫ, рд╕реЗрд╡рд╛рд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрд░рд╛ рд╕реБрдиреНрдЫ port
:
2) Ingress рднрдирд┐рдиреЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЫ servicePort
:
рей) рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ (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 рдирд┐рдпрдиреНрддреНрд░рдХрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдЗрдиреНрдЧреНрд░реЗрд╕ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд╕рд╛рде рдкреЛрдбрдХреЛ рдирд╛рдо рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
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
Ports: 80/TCP, 443/TCP, 18080/TCP
рдЕрдиреНрддрдорд╛, рдкреЛрдбрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system
рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдкреЛрд░реНрдЯ 3000 рдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреБрд╣реБрдиреНрдЫ, рдпреЛ рдЗрдиреНрдЧреНрд░реЗрд╕ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд╕рд╛рде рдкреЛрдбрдХреЛ рдкреЛрд░реНрдЯ 80 рдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдиреЗрдЫред рдорд╛ рдЧрдПрд░
рдкреЛрд░реНрдЯрд╣рд░реВрдХреЛ рд╕рд╛рд░рд╛рдВрд╢
рдЖрдЙрдиреБрд╣реЛрд╕реН рдПрдХ рдкрдЯрдХ рдлреЗрд░рд┐ рдпрд╛рдж рдЧрд░реМрдВ рдХреБрди рдкреЛрд░реНрдЯрд╣рд░реВ рд░ рд▓реЗрдмрд▓рд╣рд░реВ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ:
- рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рдЪрдпрдирдХрд░реНрддрд╛ рдкреЛрдбрдХреЛ рд▓реЗрдмрд▓рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреБрдкрд░реНрдЫ;
-
targetPort
рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рд╕реЗрд╡рд╛ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫcontainerPort
рдкреЛрдб рднрд┐рддреНрд░ рдХрдиреНрдЯреЗрдирд░; -
port
рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рд╕реЗрд╡рд╛ рдЬреЗ рдкрдирд┐ рд╣реБрди рд╕рдХреНрдЫред рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рдПрдЙрдЯреИ рдкреЛрд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдлрд░рдХ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЫрдиреН; -
servicePort
рдкреНрд░рд╡реЗрд╢ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫport
рд╕реЗрд╡рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдорд╛; - рд╕реЗрд╡рд╛рдХреЛ рдирд╛рдо рдлрд┐рд▓реНрдбрд╕рдБрдЧ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫ
serviceName
рдкреНрд░рд╡реЗрд╢ рдорд╛ред
рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, YAML рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдХрд╕рд░реА рдареАрдХрд╕рдБрдЧ рд╕рдВрд░рдЪрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрдиред
рдЪреАрдЬрд╣рд░реВ рдЧрд▓рдд рд╣реБрдБрджрд╛ рдХреЗ рд╣реБрдиреНрдЫ?
рдкреЛрдб рд╕реБрд░реБ рдирд╣реБрди рд╕рдХреНрдЫ рд╡рд╛ рдпреЛ рдХреНрд░реНрдпрд╛рд╕ рд╣реБрди рд╕рдХреНрдЫред
Kubernetes рдорд╛ рдЖрд╡реЗрджрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдирд┐рджрд╛рди рдЧрд░реНрди 3 рдЪрд░рдгрд╣рд░реВ
рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдбрд┐рдмрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ Kubernetes рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭреНрдиреБрдкрд░реНрдЫред
K8s рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдорд╛ рддреАрдирд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рддрд┐рдиреАрд╣рд░реВ рддрд▓рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реА рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдордорд╛ рдбрд┐рдмрдЧ рдЧрд░рд┐рдиреБрдкрд░реНрдЫред
- рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдкреЛрдбрд╣рд░реВ рдХрд╛рдо рдЧрд░реНрджреИ рдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ ...
- рдпрджрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдкреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдЖрдкреВрд░реНрддрд┐ рдЧрд░реНрджрдЫ рднрдиреЗ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐...
- Ingress рд╕рд╣реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
1) рддрдкрд╛рдИрдВрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рддрд▓рдмрд╛рдЯ рдЦреЛрдЬреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдкрд╣рд┐рд▓реЗ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рдЫ Ready
╨╕ Running
:
2) рдпрджрд┐ рдкреЛрдбрд╣рд░реВ рддрдпрд╛рд░ рдЫрдиреН (Ready
), рддрдкрд╛рдИрдВрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБ рдкрд░реНрдЫ рдХрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдкреЛрдбрд╣рд░реВ рдмреАрдЪ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрдЫ рдХрд┐ рдЧрд░реНрджреИрди:
3) рдЕрдиреНрддрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рд╕реЗрд╡рд╛ рд░ рдкреНрд░рд╡реЗрд╢ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдзрд▓рд╛рдИ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
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'╨░>
рддрдкрд╛рдИрдВрд▓рд╛рдИ Kubernetes рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбрдХреЛ YAML рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ; -
kubectl exec -ti <╨╕╨╝╤П pod'╨░> bash
рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреЛрдб рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдорд╛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЖрджреЗрд╢ рд╢реЗрд▓ рд╕реБрд░реБ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ
рддрдкрд╛рдИрдВрд▓реЗ рдХреБрди рд░реЛрдЬреНрдиреБрдкрд░реНрдЫ?
рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЖрджреЗрд╢ рдЫреИрдиред рдпреА рдХреЛ рд╕рдВрдпреЛрдЬрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред
рд╕рд╛рдорд╛рдиреНрдп рдкреЛрдб рд╕рдорд╕реНрдпрд╛рд╣рд░реВ
рддреНрдпрд╣рд╛рдБ рджреБрдИ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░рдХрд╛ рдкреЛрдб рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреН: рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддреНрд░реБрдЯрд┐рд╣рд░реВ рд░ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рд╣рд░реВред
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддреНрд░реБрдЯрд┐рд╣рд░реВ:
-
ImagePullBackoff
-
ImageInspectError
-
ErrImagePull
-
ErrImageNeverPull
-
RegistryUnavailable
-
InvalidImageName
рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рд╣рд░реВ:
-
CrashLoopBackOff
-
RunContainerError
-
KillContainerError
-
VerifyNonRootError
-
RunInitContainerError
-
CreatePodSandboxError
-
ConfigPodSandboxError
-
KillPodSandboxError
-
SetupNetworkError
-
TeardownNetworkError
рдХреЗрд╣реА рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЕрд░реВ рднрдиреНрджрд╛ рдмрдвреА рд╕рд╛рдорд╛рдиреНрдп рдЫрдиреНред рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗред
ImagePullBackOff
Kubernetes рдкреЛрдб рдХрдиреНрдЯреЗрдирд░ рдордзреНрдпреЗ рдПрдХ рдХреЛ рд▓рд╛рдЧреА рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрд╕рдорд░реНрде рд╣реБрдБрджрд╛ рдпреЛ рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛ рдкрд░реНрджрдЫред рдпрд╣рд╛рдБ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рддреАрди рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдгрд╣рд░реВ рдЫрдиреН:
- рдЫрд╡рд┐рдХреЛ рдирд╛рдо рдЧрд▓рдд рдЫ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рдЧрд▓реНрддреА рдЧрд░реНрдиреБрднрдпреЛ, рд╡рд╛ рдЫрд╡рд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди;
- рдЫрд╡рд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╡рд╕реНрдерд┐рдд рдирднрдПрдХреЛ рдЯреНрдпрд╛рдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ;
- рдЫрд╡рд┐ рдПрдХ рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ Kubernetes рдпрд╕рд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рдЫреИрдиред
рдкрд╣рд┐рд▓реЛ рджреБрдИ рдХрд╛рд░рдгрд╣рд░реВ рд╣рдЯрд╛рдЙрди рд╕рдЬрд┐рд▓реЛ рдЫ - рдХреЗрд╡рд▓ рдЫрд╡рд┐рдХреЛ рдирд╛рдо рд░ рдЯреНрдпрд╛рдЧ рд╕рдЪреНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред рдкрдЫрд┐рд▓реНрд▓реЛ рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛, рддрдкрд╛рдИрдВ рдЧреЛрдкреНрдп рдорд╛ рдмрдиреНрдж рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдорд╛рдгрд╣рд░реБ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рд░ рдкреЛрдб рдорд╛ рд▓рд┐рдВрдХ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред Kubernetes рдХрд╛рдЧрдЬрд╛рддрдорд╛
рдХреНрд░реНрдпрд╛рд╕ рд▓реВрдк рдмреНрдпрд╛рдХ рдЕрдл
Kubenetes рд▓реЗ рдПрдЙрдЯрд╛ рддреНрд░реБрдЯрд┐ рдлреНрдпрд╛рдБрдХреНрдпреЛ CrashLoopBackOff
, рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрджреИрдиред рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╣реБрдиреНрдЫ рдЬрдм:
- рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдПрдЙрдЯрд╛ рдмрдЧ рдЫ рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рд╣реБрдирдмрд╛рдЯ рд░реЛрдХреНрдЫ;
- рдХрдВрдЯреЗрдирд░
рдЧрд▓рдд рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдпреЛ ; - Liveness рдкрд░реАрдХреНрд╖рдг рдзреЗрд░реИ рдкрдЯрдХ рдЕрд╕рдлрд▓ рднрдПрдХреЛ рдЫред
рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рд╡рд┐рдлрд▓рддрд╛рдХреЛ рдХрд╛рд░рдг рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдХрдиреНрдЯреЗрдирд░рдмрд╛рдЯ рд▓рдЧрд╣рд░реВрдорд╛ рдкреБрдЧреНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рдзреЗрд░реИ рдЪрд╛рдБрдбреИ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреЗ рдХрд╛рд░рдг рд▓рдЧрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
kubectl logs <pod-name> --previous
рдпрд╕рд▓реЗ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдЕрд╡рддрд╛рд░рдмрд╛рдЯ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫред
рд░рди рдХрдиреНрдЯреЗрдирд░ рддреНрд░реБрдЯрд┐
рдпреЛ рддреНрд░реБрдЯрд┐ рддрдм рд╣реБрдиреНрдЫ рдЬрдм рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрди рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫред рдпреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рд╣реБрдиреБ рдЕрдШрд┐ рдХреНрд╖рдг рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЧрд▓рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХрд╛рд░рдг рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА:
- 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. рдкреНрд░рд╡реЗрд╢ рдирд┐рджрд╛рди
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЯрд╛рдврд╛ рдкрдвреНрдиреБрднрдпреЛ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐:
- pods рдХреЛ рд░реВрдкрдорд╛ рд╕реВрдЪреАрдмрджреНрдз рдЫрдиреН
Running
╨╕Ready
; - рд╕реЗрд╡рд╛рд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрджрдЫред
рдпрджреНрдпрдкрд┐, рддрдкрд╛рдИрдВ рдЕрдЭреИ рдкрдирд┐ рдПрдкрдорд╛ рдкреБрдЧреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред
рдпрд╕рдХреЛ рдорддрд▓рдм рдЗрдиреНрдЧреНрд░реЗрд╕ рдирд┐рдпрдиреНрддреНрд░рдХ рд╕рдореНрднрд╡рддрдГ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдпрд╕рдХреЛ рдкреНрд░рдХрд╛рд░рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдмрдЧрд┐рдЩ рд╡рд┐рдзрд┐рд╣рд░реВ рдЫрдиреНред
рддрд░ рддрдкрд╛рдИрдВрд▓реЗ Ingress рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдзреЗрд░реИ рд╕рд░рд▓ рдХреБрд░рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреНрд░рд╡реЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ serviceName
╨╕ servicePort
рд╕реЗрд╡рд╛рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиред рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рддрдкрд╛рдИрдВ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
kubectl describe ingress <ingress-name>
рдпрджрд┐ рд╕реНрддрдореНрдн Backend
рдЦрд╛рд▓реА, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рддреНрд░реБрдЯрд┐рдХреЛ рдЙрдЪреНрдЪ рд╕рдореНрднрд╛рд╡рдирд╛ рдЫред рдпрджрд┐ рдмреНрдпрд╛рдХрдПрдиреНрдбрд╣рд░реВ рдард╛рдЙрдБрдорд╛ рдЫрдиреН, рддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдЭреИ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫреИрди, рддрдм рд╕рдорд╕реНрдпрд╛ рдирд┐рдореНрдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╣реБрди рд╕рдХреНрдЫ:
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ рдкрд╣реБрдБрдЪ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ рдХреНрд▓рд╕реНрдЯрд░ рдкрд╣реБрдБрдЪ рд╕реЗрдЯрд┐рдЩрд╣рд░реВред
рддрдкрд╛рдИрд▓реЗ рдЗрдиреНрдЧреНрд░реЗрд╕ рдкреЛрдбрдорд╛ рд╕рд┐рдзреИ рдЬрдбрд╛рди рдЧрд░реЗрд░ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдкрд╣рд┐рд▓реЗ рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдкреЛрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН (рдпреЛ рдлрд░рдХ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рд╣реБрди рд╕рдХреНрдЫ):
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 рдирд┐рдпрдиреНрддреНрд░рдХрд▓рд╛рдИ рдХрд╛рдо рдЧрд░реНрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдбрд┐рдмрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред
рддреНрдпрд╣рд╛рдБ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдХреЛ рдзреЗрд░реИ рдХрд┐рд╕реНрдорд╣рд░реВ рдЫрдиреНред рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп Nginx, HAProxy, Traefik, рдЖрджрд┐ рд╣реБрдиреНред (рдЕрд╡рд╕реНрдерд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН
Ingress Nginx рдирд┐рдпрдиреНрддреНрд░рдХ рдбрд┐рдмрдЧ рдЧрд░реНрджреИ
Ingress-nginx рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдПрдХ рдЕрдзрд┐рдХрд╛рд░реА рдЫ kubectl ingress-nginx
рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:
- рд▓рдЧ, рдмреНрдпрд╛рдХрдЗрдиреНрдб, рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдЖрджрд┐ рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг;
- рдкреНрд░рд╡реЗрд╢ рд╕рдВрдЧ рдЬрдбрд╛рди;
- рд╣рд╛рд▓рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдзреНрдпрдпрди рдЧрд░реНрджреИред
рдирд┐рдореНрди рддреАрди рдЖрджреЗрд╢рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕рдорд╛ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ:
-
kubectl ingress-nginx lint
- рдЪреЗрдХnginx.conf
; -
kubectl ingress-nginx backend
- рдмреНрдпрд╛рдХрдЗрдиреНрдб рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрджрдЫ (рд╕рдорд╛рдиkubectl describe ingress <ingress-name>
); -
kubectl ingress-nginx logs
- рд▓рдЧрд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫред
рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛ рддрдкрд╛рдИрд▓реЗ рдЭрдгреНрдбрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ --namespace <name>
.
рд╕рд╛рд░рд╛рдВрд╢
рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрд╣рд╛рдБ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдерд╛рд╣рд╛ рдЫреИрди рднрдиреЗ Kubernetes рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реБрди рд╕рдХреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╣рд┐рд▓реЗ рдкрдирд┐ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рддрд▓-рдорд╛рдерд┐рдХреЛ рддрд░рд┐рдХрд╛рдорд╛ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдиреБрдкрд░реНрдЫ: рдкреЛрдбрд╣рд░реВрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╕реЗрд╡рд╛ рд░ рдкреНрд░рд╡реЗрд╢рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред рдпрд╕ рд▓реЗрдЦрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдбрд┐рдмрдЧрд┐рдЩ рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рдЕрдиреНрдп рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕реНрддреИ:
- рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд╛рдо рд░ рдХреНрд░реЛрдирдЬрдмреНрд╕;
- StatefulSets рд░ DaemonSetsред
рдХреГрддрдЬреНрдЮрддрд╛ рд╡реНрдпрдХреНрдд рдЧрд░реНрджрдЫреБ
рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS
рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:
- ┬л
Kubernetes pods рдорд╛ рдбрд┐рдмрдЧ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА kubectl-debug рдкреНрд▓рдЧрдЗрди ┬╗; - ┬л
Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди] ┬╗; - ┬л
Kubernetes рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдХрд░рдг ┬╗; - ┬л
рд╣рд╛рдореНрд░реЛ SRE рджреИрдирд┐рдХ рдЬреАрд╡рдирдмрд╛рдЯ 6 рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрдерд╛рд╣рд░реВ "ред
рд╕реНрд░реЛрдд: www.habr.com