博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三. k8s基本操作以及pod存活以及可用性验证钩子
阅读量:4322 次
发布时间:2019-06-06

本文共 4494 字,大约阅读时间需要 14 分钟。

目录

development service pod关系

kubectl常用命令

kubectl cluster-info #查看集群信息

kubectl describe pod -n kube-system kube-flannel-ds-amd64-trpqq #查看pod的描述信息

kubectl get pods -n kube-system #查看指定命名空间的pod

kubectl create deployment NAME --image=image [--dry-run] [options] #创建deployment, dry-run为true就是测试不执行

kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP

#为deployment创建service, --name为service的名字, --port为暴露端口, --target-port为目标pod端口

dig -t A nginx.default.svc.cluster.local @10.96.0.10 #验证是否能正确解析service, @后边的ip为k8s的dns地址

kubectl describe svc nginx #描述service

kubectl get pods --show-labels #查看pod的标签

kubectl scale deployment nginx-deploy --replicas=3 #扩容或缩容, --replicas为数量

wget -O - -q nginx-deploy

kubectl rollout undo deployment myapp-deploy --to-revision=1 #回滚到指定版本, 默认回滚到上一版本

kubectl explain pod

资源清单配置

apiVersion: v1kind: Podmetadata:  name: pod-demo  namespace: default  labels:    app: myapp    tier: frontendspec:  containers:  - name: myapp    image: ikubernetes/myapp:v1  - name: busybox    image: busybox    command:    - "/bin/sh"    - "-c"    - "sleep 5"

kubectl create -f test.yaml

kubectl delete -f test.yaml

kubectl describe pod pod-demo

kubectl describe pod pod-demo

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

https://blog.csdn.net/ucsheep/article/details/81781509

过滤lable

kubectl get pods -l app --show-labels

给pod打标签

kubectl label pods http-7f8cbdf584-dbmkn release=canary

根据label过滤pod

kubectl get pods -l release, app

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

kubectl get pods -l release!=canary

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

apiVersion: v1kind: Podmetadata:  name: pod-demo   #name必须小写  namespace: default  labels:    app: myapp    tier: frontend  annotations:    create-by: tianpei.wangspec:  containers:  - name: myapp    image: nginx    ports:    - name: http      containerPort: 80    - name: https      containerPort: 443  - name: busybox    image: busybox    imagePullPolicy: IfNotPresent    command: ["/bin/sh", "-c", "sleep 60"]  nodeSelector:    kubernetes.io/hostname: node01

liveness存活验证钩子, exec

apiVersion: v1kind: Podmetadata:    name: liveness-exec-pod    namespace: defaultspec:    containers:    - name: liveness-exec-containers      image: busybox:latest      imagePullPolicy: IfNotPresent      command: ["/bin/sh","-c","touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 3600"]      livenessProbe:          exec:              command: ["test", "-e", "/tmp/healthy"]          initialDelaySeconds: 1   #延迟一秒探测          periodSeconds: 3         #三秒为一个探测周期

liveness存活验证钩子: httpGet

apiVersion: v1kind: Podmetadata:    name: liveness-httpget-pod    namespace: defaultspec:    containers:    - name: liveness-httpget-containers      image: ikubernetes/myapp:v1      imagePullPolicy: IfNotPresent      ports:      - name: http        containerPort: 80      livenessProbe:          httpGet:              port: http              path: /index.html          initialDelaySeconds: 1          periodSeconds: 3

readiness可用性钩子: httpGet

apiVersion: v1kind: Podmetadata:    name: readiness-httpget-pod    namespace: defaultspec:    containers:    - name: readiness-httpget-containers      image: ikubernetes/myapp:v1      imagePullPolicy: IfNotPresent      ports:      - name: http        containerPort: 80      readinessProbe:          httpGet:              port: http              path: /index.html          initialDelaySeconds: 1          periodSeconds: 3

lifecycle-poststart错误示例

apiVersion: v1kind: Podmetadata:    name: poststart-pod    namespace: defaultspec:    containers:    - name: busybox-httpd      image: busybox:latest      imagePullPolicy: IfNotPresent      lifecycle:        postStart:          exec:            command: ["/bin/sh", "-c", "mkdir -p /data/web/html; echo 'Home Page' >>/data/web/html/index.html"]      command: ["/bin/httpd"]      args: ["-f", "-h /data/web/html"]

使用上述yaml创建pod会报错

Warning  FailedPostStartHook  8s (x2 over 26s)  kubelet, node01    Exec lifecycle hook ([/bin/sh -c mkdir -p /data/web/html; echo 'Home Page' >>/data/web/html/index.html]) for Container "busybox-httpd" in Pod "poststart-pod_default(92846bc9-ca3f-11e9-9c47-0242ac110046)" failed - error: command '/bin/sh -c mkdir -p /data/web/html; echo 'Home Page' >>/data/web/html/index.html' exited with 126: , message: "cannot exec in a stopped state: unknown\r\n"

原因是由于,优先去执行containers下的command, 然后才会去执行lifecycle下的command, 所以导致/data/web/html目录还未创建

转载于:https://www.cnblogs.com/peitianwang/p/11409889.html

你可能感兴趣的文章
C语言实现UrlEncode编码/UrlDecode解码
查看>>
返回用户提交的图像工具类
查看>>
树链剖分 BZOJ3589 动态树
查看>>
挑战程序设计竞赛 P131 区间DP
查看>>
【例9.9】最长公共子序列
查看>>
NSFileManager打印目录下的文件的函数
查看>>
Selenium自动化-调用Mysql数据库
查看>>
项目一
查看>>
[转载]AAF灵便应用框架简介系列(6):休息一下,泛谈面向对象 Why OO+多层结构?...
查看>>
android EditView ime
查看>>
javascript 学习随笔7
查看>>
<P>标签小细节
查看>>
Linux 命令 - netstat
查看>>
mac 关闭&&显示隐藏文件命令
查看>>
JavaScript 循环绑定之变量污染
查看>>
poj 1038 Bugs Integrated, Inc. 三进制状态压缩 DFS 滚动数组
查看>>
zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
查看>>
Wordpress解析系列之PHP编写hook钩子原理简单实例
查看>>
怎样看待个体经济
查看>>
不明觉厉的数据结构题2
查看>>