pod学习2

pod资源标签使用技巧

在k8s之上,每一种资源都可以有一个标签,现实中用到的pod数量可能越来越多,我们期望能够分类进行管理,最简单和直接的效果就是把pod分成很多不同的小组,无论对于开发还是运维来讲都能显著提高管理效率,更何况我们控制器,我们service资源也需要使用标签来识别它们所管控或关联到的资源,当我们给pod或者任何资源设定标签时,都可以使用标签查看,删除等对其执行相应的管理操作;简单来说所谓的标签就是附加在我们所对应的对象之上的键值对,一个资源之上可以存在多个标签,每个标签都是键值对,而且每个标签都可以被标签选择器进行匹配度检查从而完成资源挑选,通常情况下一个资源对象可使用多个标签,反之,一个标签也可以被添加到多个资源对像上;标签既可以在资源对象创建的时候指定,也可以在资源对象创建之后使用命令来进行管理,这个管理既包括添加,也包括删除,还包括修改;实践中我们通常给资源附加不同维度的标签,来进行不同维度的管理,比方说labels下面的标签app: myapp 用来指明当前的应用程序(可能是nginx,tomcat,http,mysql,redis等)是什么,我们也可以分层打标签,如前端frontend,后端backend,开发环境dev等;也可以对版本打标签。

labels:

app: myapp

tier: frontend


标签:

key: value (key和value最多63个字符,key只能使用字母,数字,下划线组成,只能以字母或数字开头,不能为空值;value可以为空,也是只能以字母或数字开头和结尾,中间可使用字母,数字,下划线)

#通过 pod 创建一个 tomcat 服务


#更新资源清单文件

kubectl apply -f pod.yaml

# 查看pod启动

kubectl get pods

NAME READY STATUS RESTARTS AGE

tomcat-pod  1/1    Running  0          78s

#再创建一个nginx 的yaml文件

apiVersion: v1

kind: Pod

metadata:

  name: my-nginx

  labels:

    run: my-nginx

spec:

  containers:

  - name: my-nginx

    image: nginx

    ports:

    - containerPort: 80

    imagePullPolicy: IfNotPresent

#更新yaml文件

kubectl apply -f nginx.yaml

kubectl get pods -o wide


#查看所有 pod 资源对象的标签

kubectl get pods --show-labels

查看所有资源对象下拥有 run 这个标签的标签值

 kubectl get pods -L run

my-nginx 1/1 Running 0 4m47s my-nginx

tomcat-pod  1/1    Running  0          17m   

#只显示带run的标签 kubectl get pods -l run

my-nginx 1/1 Running 0 6m41s


#查看拥有 run 这个标签的资源对象,并且把标签显示出来

kubectl get pods -l run --show-labels

NAME      READY  STATUS    RESTARTS  AGE    LABELS

my-nginx  1/1    Running  0          8m49s  run=my-nginx


#想修改资源的标签,比方说想给 my-nginx 加上个 release 标签

kubectl label pod my-nginx release=canary

#查询有release标签的pod

kubectl get pods -l release --show-labels

#修改标签,把 release=canary 改成 release=stable

kubectl label pods my-nginx release=stable --overwrite

kubectl get pods -l release --show-labels

#查看既有 release 标签,又有 run 标签的 pod 资源有哪些

kubectl get pods -l release,run

#给工作节点node加god=it标签

kubectl label nodes god62 god=IT

kubectl get nodes --show-labels

名称空间 namespace

#查看默认名称空间

kubectl get ns

NAME              STATUS  AGE

default          Active  7d19h

kube-node-lease  Active  7d19h

kube-public      Active  7d19h

kube-system      Active  7d19h


管理 namespace 资源

namespace 是 k8s api 的标准资源类型之一,namespace 资源属性较少,通常只需要指定名称

即可创建,如“kubectl create namespace qa”。namespace 资源的名称仅能由字母、数字、

下划线、连接线等字符组成。删除 namespace 资源会级联删除其包含的所有其他资源对象:

命令格式 功能kubectl delete TYPE RESOURCE -n NS 删除指定名称空间内的指定资源

kubectl delete TYPE --all -n NS

kubectl delete all -n -NS

kubectl delete all --all

删除指定名称空间内的指定类型的所有资源

删除指定名称空间内的所有资源

删除所有名称空间中的所有资源

注意:namespace 对象仅用于资源对象名称的隔离,它自身并不能隔绝跨名称空间的 pod 间通

信,那是网络策略资源的功能

# 查询默认名称空间

kubectl describe ns default

Name:        default

Labels:      <none>

Annotations:  <none>

Status:      Active

No resource quota.        #没有资源配额。

No LimitRange resource.    #没有LimitRange资源。

# 创建qa的名称空间

kubectl get ns

NAME              STATUS  AGE

default          Active  7d19h

kube-node-lease  Active  7d19h

kube-public      Active  7d19h

kube-system      Active  7d19h

qa                Active  55s

kubectl describe ns qa 

#删除 my-nginx 可以指定-n default 也可以不指定

kubectl get pods

NAME        READY  STATUS    RESTARTS  AGE

my-nginx    1/1    Running  0          96m

tomcat-pod  1/1    Running  0          108m

[root@xuegod63 ~]# kubectl delete pods -n default my-nginx


pod 资源清单详细解读

apiVersion: v1

kind: Pod

metadata:

name: string

namespace: string # Pod

所属的命名空间labels: #自定义标签

- name: string #自定义标签名字annotations: #自定义注释列表

- name: string

spec: # Pod

中容器的详细定义

containers:

- name: string

image: string

# Pod 中容器列表#容器名称#容器的镜像名称

#版本号,例如 v1

#资源类型,如 Pod

#元数据

# Pod 名字

imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略 Alawys 表示下载

镜像 IfnotPresent 表示优先使用本地镜像,否则下载镜像,Nerver 表示仅使用本地镜像

command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令args: [string] #容器的启动命令参数列表

workingDir: stringvolumeMounts:

- name: string

#容器的工作目录#挂载到容器内部的存储卷配置

#引用 pod 定义的共享存储卷的名称,需用 volumes[]部分定义的的卷

mountPath: string #存储卷在容器内 mount 的绝对路径,应少于 512 字符readOnly: boolean #是否为只读模式

ports: #需要暴露的端口库号- name: string #端口号名称

containerPort: int #容器需要监听的端口号

hostPort: int #容器所在主机需要监听的端口号,默认与 Container 相同

protocol: string #端口协议,支持 TCP 和 UDP,默认 TCP

env: #容器运行前需设置的环境变量列表

- name: string

value: string

#环境变量名称#环境变量的值

resources:

limits: #

资源限制的设置

#资源限制和请求的设置

cpu: string #cpu 的限制,单位为 core 数

memory: string #内存限制,单位可以为 Mib/Gib

requests: #资源请求的设置

cpu: string #cpu 请求,容器启动的初始可用数量

memory: string #内存请求,容器启动的初始可用内存

livenessProbe: #对 Pod 内个容器健康检查的设置,当探测无响应几次后将自动重启该

容器,检查方法有 exec、httpGet 和 tcpSocket,对一个容器只需设置其中一种方法即可exec: #对 Pod 容器内检查方式设置为 exec 方式

command: [string] #exec 方式需要制定的命令或脚本

httpGet: #对 Pod 内个容器健康检查方法设置为 HttpGet,需要制定 Path、port

path: string

port: number

host: string

scheme: string

HttpHeaders:

- name: string

value: string

tcpSocket: #对 Pod 内个容器健康检查方式设置为 tcpSocket 方式port: number

initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒

timeoutSeconds: 0

periodSeconds: 0

successThreshold: 0

failureThreshold: 0

securityContext:

#对容器健康检查探测等待响应的超时时间,单位秒,默认 1 秒#对容器监控检查的定期探测时间设置,单位秒,默认 10 秒一次

privileged:false

restartPolicy: [Always | Never | OnFailure]#Pod

的重启策略,Always 表示一旦不管以

何种方式终止运行,kubelet 都将重启,OnFailure 表示只有 Pod 以非 0 退出码退出才重启,Nerver 表示不再重启该 Pod

nodeSelector: obeject #设置 NodeSelector 表示将该 Pod 调度到包含这个 label 的node 上,以 key:value 的格式指定

imagePullSecrets: #Pull 镜像时使用的 secret 名称,以 key:secretkey 格式指定

- name: string

hostNetwork:false #

是否使用主机网络模式,默认为 false,如果设置为 true,表示

使用宿主机网络volumes:

- name: string

emptyDir: {}

#在该 pod 上定义共享存储卷列表

#共享存储卷名称 (volumes 类型有很多种)

#类型为 emtyDir 的存储卷,与 Pod 同生命周期的一个临时目录。为空值

hostPath: string #类型为 hostPath 的存储卷,表示挂载 Pod 所在宿主机的目录

path: string #Pod 所在宿主机的目录,将被用于同期中 mount 的目录secret: #类型为 secret 的存储卷,挂载集群与定义的 secre 对象到容器内部

scretname: stringitems:

- key: string

path: string

configMap:

内部

name: string

items:

- key: string

path: string

#类型为 configMap 的存储卷,挂载预定义的 configMap 对象到容器

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容