创建一个pod的yaml
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual
spec:
containers:
- image: luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
# 从yaml中创建pod
kubectl create -f kubia-manual.yaml
# 指定名称空间
kubectl create -f kubia-manual.yaml -n custom-namespace
# 使用kubectl explain发现可能的api对象字段
kubectl explain pods
kubectl explain pod.spec
# 当启动不起来的时候,描述一下当前pod的信息
kubectl describe pod kubia-manual
#查看运行时pod的完整描述文件
kubectl get po kubia-manual -o yaml
# 查看所有的pod列表
kubectl get pods
# 查看pod日志(-c指定容器)
kubectl logs kubia-manual
kubectl logs kubia-manual -c kubia
# 将本地端口转发到pod中的端口
kubectl port-forward kubia-manual 8888:8080
curl localhost:8888
(1)本地端口转发图

标签是可以附加到资源的任意键值对,⽤以选择具有该确切标签的资源(通过标签选择器完成)
<aside> 💡 pod都标有两个标签
app,它指定pod属于哪个应⽤、组件或微服务。(基于应用的横向维度) rel,它显⽰在pod中运⾏的应⽤程序版本是stable、beta还是canary。(基于版本的纵向维度)
</aside>
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual-v2
labels:
creation_method: manual
env: prod
spec:
containers:
- image: luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
# 启动pod
kubectl create -f kubia-mannal-with-labels.yaml
# 展示标签(-L选项指定分别展示在自己的列中)
kubectl get po --show-labels
kubectl get po -L creation_method,env
# 修改标签
kubectl label po kubia-manual creation_method=mannual
kubectl label po kubia-manual-v2 env=debug --overwrite
<aside> 💡 包含(或不包含)使⽤特定键的标签 包含具有特定键和值的标签 包含具有特定键的标签,但其值与我们指定的不同
</aside>
# 根据k v筛选
kubectl get po -l creation_method=mannual
#根据key筛选
kubectl get po -l env
#筛选出不包含的
kubectl get po -l '!env'
# 组合使用标签
kubectl get po -l app=pc,rel=beta
# node添加标签
kubectl lable nade node名称 gpu = ture
# 选择器筛选标签
kubectl get nodes -l gpu=true
指定pod到特定的节点
apiVersion: v1
kind: Pod
metadata:
name: kubia-gpu
spec:
nodeSelector:
gpu: "true"
containers:
- name: kubia
image: luksa/kubia
# 查看注解
kubectl get po pod名 -o yaml
#添加注解
kubectl annotate pod pod名 注解key="注解值"
# 查看注解
kubectl describe pod pod名