[kubernetes in Action实践]pod介绍

pod介绍

  • pod运行在节点上
  • pod含有ip,可运行多个容器
  • 最好的运行方式是每个容器一个进程,pod可以更好的保持所有进程运行、管理它们的日志。
  • pod的所有容器都在相同的linux命名空间(共享相同的主机名和网络接口),还可以共享PID命名空间(不使用则ps只能看到容器自己的进程)。
  • 可使用Volume来共享文件目录
  • 集群里所有pod共享同一个网络地址空间,pod可以通过其他pod的ip实现互相访问。
    在这里插入图片描述

创建pod

apiVersion: v1
kind: Pod
metadata:
  name: kubia-manual
  # 标签
  labels:
    creation_method: manual
    env: prod
spec:
  containers:
      - name: kubia
        image: arrowarcher/kubia
        ports:
        - containerPort: 8080
          protocol: TCP

执行
kubectl create -f kubia-manual.yaml
查看pod
kubectl get po --show-labels
kubectl get po -L env,app 以标签列查看
查看创建pod的信息
kubectl get po kubia-manual -o yaml
查看pod容器日志
kubectl logs kubia-manual -c kubia

标签

pod的标签

增加标签
kubectl label po kubia-manual add_l=xxx
修改标签
kubectl label po kubia-manual env=debug --overwrite
过滤pod
kubectl get po -l creation_method
kubectl get po -l '!creation_method'
kubectl get po -l creation_method=manual
kubectl get po -l 'env in (debug,prod)' --show-labels
kubectl get po -l 'creation_method!=manual' --show-labels

使用标签分类工作节点

给节点增加标签
kubectl label node kind-worker3 gpu=true
过滤节点
kubectl get nodes -l gpu=true
pod创建到制定节点

apiVersion: v1
kind: Pod
metadata:
  name: kubia-gpu
spec:
  nodeSelector:   # 部署到包含标签的节点上去
    gpu: "true"
  containers:
    - name: kubia
      image: arrowarcher/kubia
      ports:
      - containerPort: 8080
        protocol: TCP

注解

添加修改注解
kubectl annotate pod kubia-manual my.com/someannotation="foo bar"
查看注解
kubectl describe pod kubia-manual

kubectl get po kubia-manual -o yaml

命名空间

作用:隔离资源、添加用户访问限制等

查看

查看命名空间
kubectl get ns
查看命名空间下的pod
kubectl get po --namespace(-n) kube-system

创建

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

kubectl create -f custom-namespace.yaml
or
kubectl create namespace custom-namespace

在指定空间里创建pod
kubectl create -f kubia-manual.yaml -n custom-namespace


pod的停止和移除

按名称删除

kubectl delete po kubia-gpu
在删除 pod 的过程中,实际上K8s 会终止该 pod 中的所有容器。它会向进程发送SIGTERM信号并等待一定秒数,使其正常关闭,否则会通过SIGKILL终止该进程。

ps :空格分隔来删除多个pod

使用标签选择器删除

kubectl delete po -l creation_method=manual

注意:删除rc创建的pod后,rc还会重新建pod。

删除整个命名空间

kubectl delete ns custom-namespce

删除(几乎)所有资源

kubectl delete all --all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值