Junior
Ի՞նչ է սելեկտորը։
sobes.tech AI
Պատասխան AI-ից
Կոնտեքստում Kubernetes (եւ ոչ միայն) սելեկտորն է նշան (կամ նշանների հավաքածու), որը օգտագործվում է որոշակի ռեսուրսների ընտրության (ֆիլտրացման) համար: Այն թույլ է տալիս կապել ռեսուրսները մետադատների հիման վրա:
Kubernetes-ում սելեկտորների կիրառումը՝
- Pod Selector՝ որոշում է, թե որ պոդերը կառավարում է տվյալ կոնտրոլերը:
- Service Selector՝ նշում է, թե որ պոդերը կստանան ծառայության ուղղված տրաֆիկը:
- Node Selector՝ որոշում է, թե որ հանգույցներում կարող է գործարկել պոդը:
- NetworkPolicy Selector՝ օգտագործվում է որոշակի պոդների կամ անունների տարածքների ցանցային քաղաքականությունների կիրառման համար:
- ResourceQuota Scope Selector՝ կարող է սահմանափակել ռեսուրսների քվոտաները որոշակի օբյեկտների համար:
Օրինակ՝ Pod Selector YAML-ում ծառայության համար՝
// Ծառայության սահմանում
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Սելեկտոր՝ ծառայությունը ուղղորդում է տրաֆիկը `app: my-app` նշան ունեցող պոդերին
ports:
- protocol: TCP
port: 80
targetPort: 8080
Նշված պոդերի օրինակ՝ նշաններով՝
// Պոդի սահմանում 1
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-1
labels: // Պոդերը նշաններով, որոնք ընտրվում են ծառայության կողմից
app: my-app
version: v1
spec:
containers:
- name: my-container
image: my-image
// Պոդի սահմանում 2 (նույնպես ընտրվում է)
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-2
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: my-image
Սելեկտորների երկու տեսակ կա՝
- Հավասարություն (Equality-based): հիմնված է կլավիչի և/կամ արժեքի ճշգրիտ համընկնումին: Օպերատորների օրինակներ՝
=,==,!= - Մեծածախ (Set-based): օգտագործում է արժեքների հավաքածուներ: Օպերատորների օրինակներ՝
in,notin,exists(կլավիչի առկայության ստուգում),!exists(կլավիչի բացակայության ստուգում):
Օրինակ՝ Set-based սելեկտոր՝
// Ընտրել պոդեր, որոնք ունեն `environment` նշանը և արժեքը `production` կամ `staging`
selector:
matchLabels:
app: frontend
matchExpressions: // Set-based արտահայտություն
- key: environment
operator: In
values:
- production
- staging
// Ընտրել պոդեր, որոնք չունեն `beta` նշանը
selector:
matchExpressions:
- key: beta
operator: DoesNotExist
Այսպիսով՝ սելեկտորները հիմք են հանդիսանում Kubernetes-ում կապեր ապահովելու և ռեսուրսների կառավարման համար՝ մետադատների հիման վրա: