Kubernetes学习笔记-Pod常用命令总结

1. pod基础操作

通过YAML文件创建pod

# kubia.manual.yaml
apiVersion: v1
kind: Pod
metadata:
  name: kubia-manual
spec:
  containers:
  - image: luksa/kubia
    name: kubia
    imagePullPolicy: Never
    ports:
    - containerPort: 8080
      protocol: TCP

kubectl create -f kubia.manual.yaml

得到运行中pod的完整定义(YAML格式)

kubectl get po kubia-manual -o yaml

得到运行中pod的完整定义(JSON格式)

kubectl get po kubia-manual -o json

在pod列表中查看新创建的pod

kubectl get pods

获取pod日志

kubectl logs kubia-manual

获取pod日志时指定容器(-c)

kubectl logs kubia-manual -c kubia

将本地网络端口转发到pod中的端口

以下命令能够将本地机器的端口8888转发到pod的端口8080

kubectl port-forward kubia-manual 8888:8080

2. 标签相关

创建pod时指定标签

apiVersion: v1
kind: Pod
metadata:
  name: kubia-manual-v2
  labels:
    creation_method: manual
    env: prod
spec:
  containers:
  - image: luksa/kubia
    name: kubia
    imagePullPolicy: Never
    ports:
    - containerPort: 8080
      protocol: TCP

kubectl create -f kubia-manual-with-labels.yaml

上述文件中的以下部分将两个标签附加到pod上:

labels:
    creation_method: manual
    env: prod

列出pod时展示标签

kubectl get po --show-labels

列出pod时只展示部分标签(以展示creation_method为例)

kubectl get po -L creation_method,env

给pod添加标签

kubectl label po kubia-manual creation_method=manual

更改pod的现有标签(需要使用 - -overwrite选项)

kubectl label po kubia-manual-v2 env=debug --overwrite

通过标签选择器列出pod

列举creation_method=manual的所有pod

kubectl get po -l creation_method=manual

列举包含env标签的所有pod

kubectl get po -l env

列举没有env标签的所有pod

kubectl get po -l ‘!env’

使用标签分类工作节点

向节点添加标签

kubectl label node xxx gpu=true

通过标签选择器列出节点

kubectl get nodes -l gpu=true

使用标签选择器将pod调度到特定节点

apiVersion: v1
kind: Pod
metadata:
  name: kubia-gpu
spec:
  nodeSelector:
    gpu: "true"
  containers:
  - image: luksa/kubia
    imagePullPolicy: Never
    name: kubia

上述文件中,我们在spec部分添加了一个nodeSelector字段。当我们创建该pod时,调度器将只在包含标签gpu =true的节点中选择。

3. 注解pod

添加注解到pod中

kubectl annotate pod kubia-manual mycompany.com/someannotation=“foo bar”

4. 命名空间

列出集群中的所有命名空间

kubectl get ns

列出指定namespace下的pod

注意当我们使用kubectl命令列出资源时,只是展示default命名空间下的对象。

kubectl get po --namespace kube-system

or

kubectl get po -n kube-system

从YAML文件创建namespace

custom-namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: custom-namespace

kubectl create -f custom-namespace.yaml

直接通过命令创建namespace

kubectl create namespace custom-namespace

创建pod时指定namespace

  1. 在使用 kubectl create 命令创建资源时指定命名空间:

kubectl create -f kubia-manual.yaml -n custom-namespace

  1. 选择在YAML文件中的metadata字段添加 一个namespace: custom-namespace属性。

5. 停止和删除pod

按名称删除pod

kubectl delete po xxx

按标签选择器删除pod

kubectl delete po -l creation_method=manual

通过删除整个命名空间来删除pod

kubectl delete ns custom-namespace

删除命名空间中的(几乎)所有资源

kubectl delete all --all

命令中的第一个 all 指定正在删除所有资源类型, 而 --all 选项指定将删除所有资源实例而不是按名称指定它们。

你可能感兴趣的:(Kubernetes,kubernetes)