learning kubernetes by minikube, 4
21133 ワード
playing with labels
create helloworld-pod-with-labels.yaml notice the labels part, you can define labels when deploy via yaml file. or you can use kubectl labels to change running object labels.
create sample-infrastructure-with-labels.yaml
create deployment
check labels
add label
change lable data
delete label
Search labels
create deployment
raw data
You can search for labels with the flag
condition search,
labels will also work with
you can delete pods, services or deployments by label as well! For example
clear data
create helloworld-pod-with-labels.yaml notice the labels part, you can define labels when deploy via yaml file. or you can use kubectl labels to change running object labels.
apiVersion: v1
kind: Pod
metadata:
name: helloworld
labels:
env: production
author: karthequian
application_type: ui
release-version: "1.0"
spec:
containers:
- name: helloworld
image: karthequian/helloworld:latest
create sample-infrastructure-with-labels.yaml
apiVersion: v1
kind: Pod
metadata:
name: homepage-dev
labels:
env: development
dev-lead: karthik
team: web
application_type: ui
release-version: "12.0"
spec:
containers:
- name: helloworld
image: karthequian/helloworld:latest
---
apiVersion: v1
kind: Pod
metadata:
name: homepage-staging
labels:
env: staging
team: web
dev-lead: karthik
application_type: ui
release-version: "12.0"
spec:
containers:
- name: helloworld
image: karthequian/helloworld:latest
---
apiVersion: v1
kind: Pod
metadata:
name: homepage-prod
labels:
env: production
team: web
dev-lead: karthik
application_type: ui
release-version: "12.0"
spec:
containers:
- name: helloworld
image: karthequian/helloworld:latest
---
apiVersion: v1
kind: Pod
metadata:
name: login-dev
labels:
env: development
team: auth
dev-lead: jim
application_type: api
release-version: "1.0"
spec:
containers:
- name: login
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: login-staging
labels:
env: staging
team: auth
dev-lead: jim
application_type: api
release-version: "1.0"
spec:
containers:
- name: login
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: login-prod
labels:
env: production
team: auth
dev-lead: jim
application_type: api
release-version: "1.0"
spec:
containers:
- name: login
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: cart-dev
labels:
env: development
team: ecommerce
dev-lead: carisa
application_type: api
release-version: "1.0"
spec:
containers:
- name: cart
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: cart-staging
labels:
env: staging
team: ecommerce
dev-lead: carisa
application_type: api
release-version: "1.0"
spec:
containers:
- name: cart
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: cart-prod
labels:
env: production
team: ecommerce
dev-lead: carisa
application_type: api
release-version: "1.0"
spec:
containers:
- name: cart
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: social-dev
labels:
env: development
team: marketing
dev-lead: carisa
application_type: api
release-version: "2.0"
spec:
containers:
- name: social
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: social-staging
labels:
env: staging
team: marketing
dev-lead: marketing
application_type: api
release-version: "1.0"
spec:
containers:
- name: social
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: social-prod
labels:
env: production
team: marketing
dev-lead: marketing
application_type: api
release-version: "1.0"
spec:
containers:
- name: social
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: catalog-dev
labels:
env: development
team: ecommerce
dev-lead: daniel
application_type: api
release-version: "4.0"
spec:
containers:
- name: catalog
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: catalog-staging
labels:
env: staging
team: ecommerce
dev-lead: daniel
application_type: api
release-version: "4.0"
spec:
containers:
- name: catalog
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: catalog-prod
labels:
env: production
team: ecommerce
dev-lead: daniel
application_type: api
release-version: "4.0"
spec:
containers:
- name: catalog
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: quote-dev
labels:
env: development
team: ecommerce
dev-lead: amy
application_type: api
release-version: "2.0"
spec:
containers:
- name: quote
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: quote-staging
labels:
env: staging
team: ecommerce
dev-lead: amy
application_type: api
release-version: "2.0"
spec:
containers:
- name: quote
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: quote-prod
labels:
env: production
team: ecommerce
dev-lead: amy
application_type: api
release-version: "1.0"
spec:
containers:
- name: quote
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: ordering-dev
labels:
env: development
team: purchasing
dev-lead: chen
application_type: backend
release-version: "2.0"
spec:
containers:
- name: ordering
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: ordering-staging
labels:
env: staging
team: purchasing
dev-lead: chen
application_type: backend
release-version: "2.0"
spec:
containers:
- name: ordering
image: karthequian/ruby:latest
---
apiVersion: v1
kind: Pod
metadata:
name: ordering-prod
labels:
env: production
team: purchasing
dev-lead: chen
application_type: backend
release-version: "2.0"
spec:
containers:
- name: ordering
image: karthequian/ruby:latest
---
create deployment
localhost:~ xunyang$ kubectl create -f helloworld-pod-with-labels.yaml
pod "helloworld" created
localhost:~ xunyang$ kubectl get pod
NAME READY STATUS RESTARTS AGE
helloworld 0/1 ContainerCreating 0 0s
localhost:~ xunyang$ kubectl get pod
NAME READY STATUS RESTARTS AGE
helloworld 1/1 Running 0 2s
check labels
localhost:~ xunyang$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
helloworld 1/1 Running 0 24s application_type=ui,author=karthequian,env=production,release-version=1.0
add label
localhost:~ xunyang$ kubectl label pod/helloworld app=helloworld
pod "helloworld" labeled
localhost:~ xunyang$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
helloworld 1/1 Running 0 7m app=helloworld,application_type=ui,author=karthequian,env=production,release-version=1.0
change lable data
localhost:~ xunyang$ kubectl label pod/helloworld app=helloxunyang
error: 'app' already has a value (helloworld), and --overwrite is false
localhost:~ xunyang$ kubectl label pod/helloworld app=helloxunyang --overwrite
pod "helloworld" labeled
localhost:~ xunyang$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
helloworld 1/1 Running 0 8m app=helloxunyang,application_type=ui,author=karthequian,env=production,release-version=1.0
delete label
localhost:~ xunyang$ kubectl label pod/helloworld app-
pod "helloworld" labeled
localhost:~ xunyang$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
helloworld 1/1 Running 0 8m application_type=ui,author=karthequian,env=production,release-version=1.0
Search labels
create deployment
localhost:~ xunyang$ kubectl create -f sample-infrastructure-with-labels.yaml
pod "homepage-dev" created
pod "homepage-staging" created
pod "homepage-prod" created
pod "login-dev" created
pod "login-staging" created
pod "login-prod" created
pod "cart-dev" created
pod "cart-staging" created
pod "cart-prod" created
pod "social-dev" created
pod "social-staging" created
pod "social-prod" created
pod "catalog-dev" created
pod "catalog-staging" created
pod "catalog-prod" created
pod "quote-dev" created
pod "quote-staging" created
pod "quote-prod" created
pod "ordering-dev" created
pod "ordering-staging" created
pod "ordering-prod" created
raw data
localhost:~ xunyang$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
cart-dev 1/1 Running 0 3m application_type=api,dev-lead=carisa,env=development,release-version=1.0,team=ecommerce
cart-prod 1/1 Running 0 3m application_type=api,dev-lead=carisa,env=production,release-version=1.0,team=ecommerce
cart-staging 1/1 Running 0 3m application_type=api,dev-lead=carisa,env=staging,release-version=1.0,team=ecommerce
catalog-dev 1/1 Running 0 3m application_type=api,dev-lead=daniel,env=development,release-version=4.0,team=ecommerce
catalog-prod 1/1 Running 0 3m application_type=api,dev-lead=daniel,env=production,release-version=4.0,team=ecommerce
catalog-staging 1/1 Running 0 3m application_type=api,dev-lead=daniel,env=staging,release-version=4.0,team=ecommerce
helloworld 1/1 Running 0 18m application_type=ui,author=karthequian,env=production,release-version=1.0
homepage-dev 1/1 Running 0 3m application_type=ui,dev-lead=karthik,env=development,release-version=12.0,team=web
homepage-prod 1/1 Running 0 3m application_type=ui,dev-lead=karthik,env=production,release-version=12.0,team=web
homepage-staging 1/1 Running 0 3m application_type=ui,dev-lead=karthik,env=staging,release-version=12.0,team=web
login-dev 1/1 Running 0 3m application_type=api,dev-lead=jim,env=development,release-version=1.0,team=auth
login-prod 1/1 Running 0 3m application_type=api,dev-lead=jim,env=production,release-version=1.0,team=auth
login-staging 1/1 Running 0 3m application_type=api,dev-lead=jim,env=staging,release-version=1.0,team=auth
ordering-dev 1/1 Running 0 2m application_type=backend,dev-lead=chen,env=development,release-version=2.0,team=purchasing
ordering-prod 1/1 Running 0 2m application_type=backend,dev-lead=chen,env=production,release-version=2.0,team=purchasing
ordering-staging 1/1 Running 0 2m application_type=backend,dev-lead=chen,env=staging,release-version=2.0,team=purchasing
quote-dev 1/1 Running 0 3m application_type=api,dev-lead=amy,env=development,release-version=2.0,team=ecommerce
quote-prod 1/1 Running 0 3m application_type=api,dev-lead=amy,env=production,release-version=1.0,team=ecommerce
quote-staging 1/1 Running 0 3m application_type=api,dev-lead=amy,env=staging,release-version=2.0,team=ecommerce
social-dev 1/1 Running 0 3m application_type=api,dev-lead=carisa,env=development,release-version=2.0,team=marketing
social-prod 1/1 Running 0 3m application_type=api,dev-lead=marketing,env=production,release-version=1.0,team=marketing
social-staging 1/1 Running 0 3m application_type=api,dev-lead=marketing,env=staging,release-version=1.0,team=marketing
You can search for labels with the flag
--selector
(or -l
). localhost:~ xunyang$ kubectl get pods --selector env=production
NAME READY STATUS RESTARTS AGE
cart-prod 1/1 Running 0 3m
catalog-prod 1/1 Running 0 3m
helloworld 1/1 Running 0 18m
homepage-prod 1/1 Running 0 3m
login-prod 1/1 Running 0 3m
ordering-prod 1/1 Running 0 3m
quote-prod 1/1 Running 0 3m
social-prod 1/1 Running 0 3m
localhost:~ xunyang$ kubectl get pods -l env=production
NAME READY STATUS RESTARTS AGE
cart-prod 1/1 Running 0 3m
catalog-prod 1/1 Running 0 3m
helloworld 1/1 Running 0 18m
homepage-prod 1/1 Running 0 3m
login-prod 1/1 Running 0 3m
ordering-prod 1/1 Running 0 3m
quote-prod 1/1 Running 0 3m
social-prod 1/1 Running 0 3m
condition search,
=
!=
in
notin
localhost:~ xunyang$ kubectl get pods -l dev-lead=karthik
NAME READY STATUS RESTARTS AGE
homepage-dev 1/1 Running 0 4m
homepage-prod 1/1 Running 0 4m
homepage-staging 1/1 Running 0 4m
localhost:~ xunyang$ kubectl get pods -l dev-lead=karthik,env=staging
NAME READY STATUS RESTARTS AGE
homepage-staging 1/1 Running 0 4m
localhost:~ xunyang$ kubectl get pods -l dev-lead!=karthik,env=staging
NAME READY STATUS RESTARTS AGE
cart-staging 1/1 Running 0 5m
catalog-staging 1/1 Running 0 5m
login-staging 1/1 Running 0 5m
ordering-staging 1/1 Running 0 5m
quote-staging 1/1 Running 0 5m
social-staging 1/1 Running 0 5m
localhost:~ xunyang$ kubectl get pods -l 'release-version in (1.0,2.0)'
NAME READY STATUS RESTARTS AGE
cart-dev 1/1 Running 0 5m
cart-prod 1/1 Running 0 5m
cart-staging 1/1 Running 0 5m
helloworld 1/1 Running 0 20m
login-dev 1/1 Running 0 5m
login-prod 1/1 Running 0 5m
login-staging 1/1 Running 0 5m
ordering-dev 1/1 Running 0 5m
ordering-prod 1/1 Running 0 5m
ordering-staging 1/1 Running 0 5m
quote-dev 1/1 Running 0 5m
quote-prod 1/1 Running 0 5m
quote-staging 1/1 Running 0 5m
social-dev 1/1 Running 0 5m
social-prod 1/1 Running 0 5m
social-staging 1/1 Running 0 5m
localhost:~ xunyang$ kubectl get pods -l 'release-version in (1.0,4.0)'
NAME READY STATUS RESTARTS AGE
cart-dev 1/1 Running 0 5m
cart-prod 1/1 Running 0 5m
cart-staging 1/1 Running 0 5m
catalog-dev 1/1 Running 0 5m
catalog-prod 1/1 Running 0 5m
catalog-staging 1/1 Running 0 5m
helloworld 1/1 Running 0 20m
login-dev 1/1 Running 0 5m
login-prod 1/1 Running 0 5m
login-staging 1/1 Running 0 5m
quote-prod 1/1 Running 0 5m
social-prod 1/1 Running 0 5m
social-staging 1/1 Running 0 5m
ocalhost:~ xunyang$ kubectl get pods -l "release-version in (1.0,2.0),team in (marketing,ecommerce)"
NAME READY STATUS RESTARTS AGE
cart-dev 1/1 Running 0 6m
cart-prod 1/1 Running 0 6m
cart-staging 1/1 Running 0 6m
quote-dev 1/1 Running 0 6m
quote-prod 1/1 Running 0 6m
quote-staging 1/1 Running 0 6m
social-dev 1/1 Running 0 6m
social-prod 1/1 Running 0 6m
social-staging 1/1 Running 0 6m
localhost:~ xunyang$ kubectl get pods -l 'release-version notin (1.0,2.0)'
NAME READY STATUS RESTARTS AGE
catalog-dev 1/1 Running 1 12m
catalog-prod 1/1 Running 1 12m
catalog-staging 1/1 Running 1 12m
labels will also work with
kubectl get services/deployments/all --show-labels
and will return labels for your services, deployments or all objects. localhost:~ xunyang$ kubectl get all --show-labels
NAME READY STATUS RESTARTS AGE LABELS
cart-dev 1/1 Running 0 8m application_type=api,dev-lead=carisa,env=development,release-version=1.0,team=ecommerce
cart-prod 1/1 Running 0 8m application_type=api,dev-lead=carisa,env=production,release-version=1.0,team=ecommerce
cart-staging 1/1 Running 0 8m application_type=api,dev-lead=carisa,env=staging,release-version=1.0,team=ecommerce
catalog-dev 1/1 Running 0 8m application_type=api,dev-lead=daniel,env=development,release-version=4.0,team=ecommerce
catalog-prod 1/1 Running 0 8m application_type=api,dev-lead=daniel,env=production,release-version=4.0,team=ecommerce
catalog-staging 1/1 Running 0 8m application_type=api,dev-lead=daniel,env=staging,release-version=4.0,team=ecommerce
helloworld 1/1 Running 0 23m application_type=ui,author=karthequian,env=production,release-version=1.0
homepage-dev 1/1 Running 0 8m application_type=ui,dev-lead=karthik,env=development,release-version=12.0,team=web
homepage-prod 1/1 Running 0 8m application_type=ui,dev-lead=karthik,env=production,release-version=12.0,team=web
homepage-staging 1/1 Running 0 8m application_type=ui,dev-lead=karthik,env=staging,release-version=12.0,team=web
login-dev 1/1 Running 0 8m application_type=api,dev-lead=jim,env=development,release-version=1.0,team=auth
login-prod 1/1 Running 0 8m application_type=api,dev-lead=jim,env=production,release-version=1.0,team=auth
login-staging 1/1 Running 0 8m application_type=api,dev-lead=jim,env=staging,release-version=1.0,team=auth
ordering-dev 1/1 Running 0 8m application_type=backend,dev-lead=chen,env=development,release-version=2.0,team=purchasing
ordering-prod 1/1 Running 0 8m application_type=backend,dev-lead=chen,env=production,release-version=2.0,team=purchasing
ordering-staging 1/1 Running 0 8m application_type=backend,dev-lead=chen,env=staging,release-version=2.0,team=purchasing
quote-dev 1/1 Running 0 8m application_type=api,dev-lead=amy,env=development,release-version=2.0,team=ecommerce
quote-prod 1/1 Running 0 8m application_type=api,dev-lead=amy,env=production,release-version=1.0,team=ecommerce
quote-staging 1/1 Running 0 8m application_type=api,dev-lead=amy,env=staging,release-version=2.0,team=ecommerce
social-dev 1/1 Running 0 8m application_type=api,dev-lead=carisa,env=development,release-version=2.0,team=marketing
social-prod 1/1 Running 0 8m application_type=api,dev-lead=marketing,env=production,release-version=1.0,team=marketing
social-staging 1/1 Running 0 8m application_type=api,dev-lead=marketing,env=staging,release-version=1.0,team=marketing
you can delete pods, services or deployments by label as well! For example
kubectl delete pods -l dev-lead=karthik
will delete all pods who's dev-lead was Karthik. localhost:~ xunyang$ kubectl delete pods -l dev-lead=karthik
pod "homepage-dev" deleted
pod "homepage-prod" deleted
pod "homepage-staging" deleted
clear data
kubectl delete pod --all