pod定义由这么几个部分组成:
首先是yml中使用的Kubeme t e sAPI版本和YAML描述的资源类型;其次是几乎在所有Ku bemete s资源中都可以找到的三大重要部分:
m e t a d a t a包括名称、命名空间、标签和关于该容器的其他信息。
s p e c包含po d内容的实际说明,例如po d的容器、卷和其他数据。
s t a t u s包含运行中的p od的当前信息,例如p od所处的条件、每个容器的描4、「JJ穹3.2以YAML或JSON描述文件创建p o d 61述和状态,以及内部I P和其他基本信息。
kubecl1 create -f kubia-manual.yaml
kubectl get po kubia-manual -o yaml
kubec七l logs kubia-manual -c kubia
端口转发 本地端口 8888
kubect1 port-forward kubia-manual 8888:8080
此时每个pod都标有两个标签:
• app, 它指定pod属于哪个应用、 组件或微服务。
• rel, 它显示在pod中运行的应用程序版本是stable、beta还是canary。
metadata:
name: kubia-manual-v2
labels:
crea七ion method: manual
env: prod
![87d8dcdba985f27913a724db8e426192.png](87d8dcdba985f27913a724db8e426192.png)
kubectl get po --show-labels
kubectl get po -L creation_method,env
创建标签
kubectl label po kubia-manual creation method=manual
kubectl label po kubia-manual-v2 env=debug --overwrite
标签选择器根据资源的以下条件来选择资源:
• 包含(或不包含)使用特定键的标签
• 包含具有特定键和值的标签
• 包含具有特定键的标签, 但其值与我们指定的不同
kubectl get po -1 '!env'
同理, 我们也可以将pod与以下标签选择器进行匹配:
• creation_rnethod!=rnanual选择带有creation_rnethod标签, 并且值不等于manual的pod
• env in (prod, devel)选择带有env标签且值为prod或devel的pod
• env notin (prod, devel)选择带有env标签,但其值不是prod或devel的pod
app = pc, rel = beta
kubectl label node gke-kubia-85f6-node-Orrx gpu=true
spec:
nodeSelec七or.
gpU: II 七rue"
containers:
- image: luksa/kubia
name: kubia
添加注解
kubec七1 annotate pod kubia-manual mycompany.com/someanno七a七ion="foo bar"
名称空间
kubectl get po --namespace kube-system
kubectl create namespace custom-namespace
kind : Namespace
metadata :
kubectl create -fkubia-manual.ya皿1-ncustom-na皿espace
kubectl delete po kubia-gpu
kubectl delete po -1 creation method=manual
kubectl delete ns custom-namespace
kubectl delete po --all
kubectl delete all --all