kubernetes 4 yaml


kubectl explain pods   #详细POD参数

vi pod-demo.yaml

apiVersion: v1

kind: Pod

metadata:

  name: pod-demo

  namespace: default

  labels:

    app: myapp

    tier: frontend

spec:

  containers:

  - name: myapp

    image: ikubernets/myapp:v1

  - name: busybox

    image: busybox:latest

    command:

    - "/bin/sh"

    - "-c"

    - "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5"

kubectl create -f pod-demo.yaml

kubectl describe pods pod-demo

kubectl logs pod-demo myapp

kubectl exec -it pod-demo -c myapp -- /bin/sh

kubectl delete pod pod-demo

kubectl get pods -w

kubectl delete -f pod-demo.yaml        #删除pod,如果控制器控制的删除可以自动创建


命令,配置清单(命令式),配置清单(声明式)


资源配置清单:

自主式Pod资源

资源的清单格式:

      一级字段: apiVersion(group/version) 有稳定版就不用公测版,

        kind,metadata(name,namespace,labels,annotations(都有)),spec

          status(只读)

    spec字段,使用控制器管理POD依然有用

      Pod资源:

spec.containers<[object]>

kubectl explain pods.spec.containers

容器参数:

name <string>

image <string>                    quay.io/coreos/flannel(仓库/用户/镜像)

imagePullPolicy <string>        #镜像获取策略

Always, Never, IfNotPresent(总是下载,总是不下载,本地不存在则下载)

下载完后,有些字段不能改,除非删了重建,如NODEPORT可以改。

imagePullPolicy:  IfNotPresent

ports        暴露端口

args <[]string>      参数

command <[]string>  命令(命令作为参数传递给args)

args和command什么时候生效:

https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/

1: 如果kubernetes没有提供command 和args 则使用docker 的 Entrypoint 和Cmd

2:  command 没有args  只运行command  忽略docker的Entrypint cmd

3:  args 默认使用镜像当中的Entrypoint  把args作为参数传递给Entrypoint,镜像中cmd没用了

4: 如果使用了 args command  完全自定义 命令,忽略Entrypoing cmd



给任何资源使用标签,可以用标签来操作,标签(键值对)

一个资源可以使用多个标签,一个标签可以对应多个资源

可以创建时指定,也可以创建之后使用命令管理

查看POD标签  LABELS

标签: key=value

key: 字母  数字  _  - .

value: 可以为空,只能字母 数字开头及结尾,中间可使用

kubectl get pods --show-labels

kubectl get pods -l app --show-labels      #拥有app标签

kubectl get pods -L app,run

kubectl label --help            #打标签帮助

kubectl label pods pod-demo release=canary        #打标签

已有标签,打标会报错

kubectl label pods pod-demo release=stable --overwrite    #覆盖

kubectl get pods -l app --show-labels        #查看

kubectl get pods -l release,app            #即有release标签,又有app标签

标签选择器:

等值关系: =  ==  !=

集合关系:

key in (value1,value2.......)

key not in (value1,value2,............)

!key

kubectl get pods -l release=stable --show-labels

kubectl label pods nginx-deployment-5cb87c9ddc-z2w7cash=1764375887 release=canary #打标签

kubectl label pods nginx-deployment-5cb87c9ddc-z2w7c release=canary

kubectl get pods -l release=stable --show-labels

kubectl get pods -l release

kubectl get pods -l release=stable,app=myapp

kubectl get pods -l release!=stable,app!=myapp

等值关系

----------------------------------------------------------------------

集合关系

kubectl get pod -l "release in (canary,beta,alpha)"

kubectl get pod -l "release not in (canary,beta,alpha)"

许多资源支持内嵌字段定义其使用的标签选择器 :

matchLabels:          直接给定键值

matchExpressions:  基于给定的表达式来定义使用标签选择器 {key:"KEY",operator:"OPERATOR",

values:[VAL1,VAL2,................]}

操作符: In  NotIn; values字段的值必须为非空列表 

Exists  NotExists: values字段的值必须为空列表

kubectl get nodes --show-labels

kubectl get nodes --show-labels

beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node1

kubectl label nodes node1  disktype=ssd

kubectl get nodes --show-labels

kubectl explain pods.spec

nodeSelector <map[string]string>

节点标签选择器,

kubectl delete -f pod-demo.yaml

kubectl get nodes --show-labels

nodeName: 直接指定node

kubectl describe pods pod-demo



nodeName <string>

annotations:            资源注解

与label不同的地方在于,它不能用于挑选资源对象,仅用于为对象提供“元数据”。



一个容器一个进程

一个POD可以运行多个容器,但一般只运行一个

主容器一退出,POD就结束了,

主程序结束前: pre stop

主程序结束后: post start

对Pod的检测:

存活状态检测: liveness probe

就绪状态检测: readiness probe


Pod的生命周期:

-状态: pending(挂起) - Running,Failed,Succeeded,Unkown

创建Pod: apiserver-->schuelder-->etcd pod-->node 清单-->etcd-->apiserver

直接执行命令  HTTP/tcp  应用请求 

liveness probe: 容器状态存活探测

readiness probe: 容器状态

Pod的生命周期: 状态 容器探测

Pod生命周期中的重要行为:

初始化容器

容器探测:

LIVENESS

readliness

restartPolicy:

Always,OnFailure,Never,Default to Always

300秒不断重启,最长时间

容器一般停止30秒,然后KILL

探针类型有三种:

ExecAction  TCPSockerAction HTTPGetAction

存活性探针

就绪性探针

探的容器,不是POD

kubectl explain pods.spec.containers.livenessProbe

探针,只要定义一个就好了

exec <Object>

httpGet <Object>

tcpSocket <Object>

failureThreshold <integer>  失败几次才算失败 3

每次多长时间:

periodSeconds <integer>  默认10秒

超时多久算没响应:

timeoutSeconds <integer>  默认1秒

initialDelaySeconds <integer>: 初始化延迟探测:

kubectl explain pods.spec.containers.livenessProbe.exec:

command <[]string>    返回成功,就是存活的

vi liveness-exec.yaml



kubectl create -f liveness-exec.yaml

kubectl get pods -w

kubectl descript pods liveness-exec-pod

kubectl explain pods.spec.containers.livenessProbe.tcpSocket  #Socker探测

kubectl explain pods.spec.containers.livenessProbe.httpGet



kubectl create -f liveness-exec.yaml

kubectl get pods -w

kubectl descript pods liveness-exec-pod

kubectl explain pods.spec.containers.livenessProbe.tcpSocket  #Socker探测

kubectl explain pods.spec.containers.livenessProbe.httpGet


vi readiness-httpget.yaml


kubectl exec -it readiness-httpget-pod -- /bin/sh

kubectl describe pods readiness-httpget-pod

kubectl explain pods.spec.containers.lifecycle

vi poststart-pod.yaml


vi poststart-pod.yaml




回顾: Pod

apiVersion kind metadata spec status(只读)

          spec:

                  containers:

                  nodeSelector

                  nodename

                  restartPolicy:

      Always, Nerver Onfailure

          containers:

name

image

imagePullPolicy: Always Nerver IfNotPresent

ports:

      name:

      containerPort:

                livenessProbe

                readinessProbe

                liftcycle

        内嵌探测:

        ExecAction:  exec

        TCPSockerAction: tcpSocker

        HTTPGetAction: httpGet

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

推荐阅读更多精彩内容