1 获取ymal文件方式

# 通过历史启动的对象获取启动的yaml
kubectl get pod my-nginx -oyaml
# 通过干跑不创建资源的方式获取yaml文件
kubectl run my-tomcat --image=tomcat --dry-run=client -oyaml
# 解释yaml中的字段含义
kubectl explain pod.spec

2 启动一个简单的yaml文件

新建k8s-demo.yaml

apiVersion: v1 #api版本, 同一个资源可以有多个版本, kubectl api-resources可以看到
kind: Pod  #资源类型 kubectl api-resources 可以获取到所有的资源
metadata:
  name: mytomcat-test
spec:
  containers: # 容器的描述
    - image: tomcat
      name: mytomcat
# 应用yaml, 没有就创建, 有就修改
kubectl apply -f k8s-demo.yaml
# 文件发生改动后对比正在运行的资源
kubectl diff -f k8s-demo.yaml
# 删除集群中的资源
kubectl delete -f k8s-demo.yaml

3 名称空间

相同名称空间下的资源可以共享, 不通名称空间下的资源不可以共享, 网络可以互通

# 获取所有的名称空间
kubectl get namespace
# 获取指定的名称空间
kubectl delete namespace hello
# 创建一个名称空间
kubectl create namespace hello
# 查看创建名称空间的yaml
kubectl create namespace hello --dry-run=client -oyaml 

4 标签和选择器

命令行添加标签

# 查看标签的帮助文档
kubectl lable --help

# 展示标签
kubectl get pod --show-labels

# 设置标签
kubectl label pods mytomcat-test aa=bb

# 删除标签
kubectl label pods mytomcat-test aa-

#修改标签
kubectl label pods mytomcat-test aa=cc --overwrite

yaml添加标签

metadata: #元数据信息
  name: nginx 
  labels:  #标签信息
    app: web  #标签 app:web

标签选择器

  1. 基于等值关系的标签选择器

    =、==和 !=
    
  2. 基于集合关系的标签选择器

    KEY in (VALUE1,VALUE2,…) :指定的键名的值存在于给定的列表中即满足条件;
    KEY notin (VALUE1,VALUE2,…) :指定的键名的值不存在于给定列表中即满足条件;
    KEY:所有存在此键名标签的资源;
    !KEY:所有不存在此键名标签的资源
    

kubectl 管理 Secret

# 创建dockerhub的secret
kubectl create secret docker-registry my-dockerhub-secret \\
  --docker-server=registry.cn-hangzhou.aliyuncs.com \\
  --docker-username=1216921425@qq.com \\
  --docker-password=root123@ \\
  --docker-email=your-dockerhub-email

# 获取secret
kubectl get secrets

# 删除secret
kubectl delete secrets <secret-name>

# 编辑secret
kubectl edit secrets <secret-name>