pod管理调度约束、与健康状态检查
pod的管理
[root@k8s-master ~]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
创建pod
[root@k8s-master ~]# kubectl create -f pod.yaml
查看pod信息
[root@k8s-master ~]# kubectl get all
po/nginx-pod
1/1 Running 0 1m
查看pod的详细信息
[root@k8s-master ~]# kubectl describe po/nginx-pod
删除创建的pod
[root@k8s-master ~]# kubectl delete -f pod.yaml
POD的资源管理
[root@k8s-master ~]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
[root@k8s-master ~]# kubectl create -f pod.yaml
[root@k8s-master ~]# kubectl describe po/nginx-pod
Limits:
cpu: 500m
memory: 128Mi
pod调度约束与重启策略
[root@k8s-master ~]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
nodeName: 192.168.30.22
nodeSelector:
env_role: dev
containers:
- name: nginx
image: nginx
[root@k8s-master ~]# kubectl create -f pod.yaml
我们指定的是pod在22主机上创建,自然也会分配到这个主机上
[root@k8s-master ~]# kubectl get pod -o wide
nginx-pod 1/1 Running 0 2m 172.17.11.3 192.168.30.22
查看主机名标签
[root@k8s-master ~]# kubectl describe node 192.168.30.22
Name: 192.168.30.22
Roles: <none>
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/hostname=192.168.30.22
添加标签
[root@k8s-master ~]# kubectl label nodes 192.168.30.22 env_role=dev
再次查看主机名标签已经把env_role=dev添加进去
[root@k8s-master ~]# kubectl describe node 192.168.30.22
Name: 192.168.30.22
Roles: <none>
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
env_role=dev
kubernetes.io/hostname=192.168.30.22
根据我们的约束再次创建pod已经又放在22主机上了
[root@k8s-master ~]# kubectl get pod -o wide
nginx-pod2 1/1 Running 0 1m 172.17.11.5 192.168.30.22
pod健康状态检查
提供 Probe 机制,有以下两种类型:
l livenessProbe
如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
l readinessProbe
如果检查失败,Kubernetes会把Pod从service endpoints中剔除。
Probe 支持以下三种检查方法:
l httpGet
发送HTTP请求,返回200-400范围状态码为成功。
l exec
执行Shell命令返回状态码是0为成功。
l tcpSocket
发起TCP Socket建立成功。
[root@k8s-master ~]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /index.html
port: 80
[root@k8s-master ~]# kubectl create -f pod.yaml
查看详细信息,可以看到这里容器访问80端口的信息
[root@k8s-master ~]# kubectl describe po/nginx-pod
Restart Count: 0
Liveness: http-get http://:80/index.html delay=0s timeout=1s period=10s #success=1 #failure=3
Environment: <none>
通过日志可以看到这里使用kube-probe来访问
[root@k8s-master ~]# kubectl logs nginx-pod -f
172.17.80.1 - - [08/Jul/2019:10:08:14 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"
172.17.80.1 - - [08/Jul/2019:10:08:24 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"
再开一个窗口,进入容器删除index.html看看日志的变化
[root@k8s-master ~]# kubectl exec -it nginx-pod bash
root@nginx-pod:/# cd /usr/share/nginx/html/
root@nginx-pod:/usr/share/nginx/html# ls
50x.html index.html
root@nginx-pod:/usr/share/nginx/html# rm index.html
root@nginx-pod:/usr/share/nginx/html# exit
这边10秒后显示404找不到页面了
2019/07/08 10:17:14 [error] 6#6: *55 open() "/usr/share/nginx/html/index.html" failed (2: No such file or directory), client: 172.17.80.1, server: localhost, request: "GET /index.html HTTP/1.1", host: "172.17.80.4:80"
172.17.80.1 - - [08/Jul/2019:10:17:14 +0000] "GET /index.html HTTP/1.1" 404 153 "-" "kube-probe/1.9" "-"
172.17.80.1 - - [08/Jul/2019:10:17:24 +0000] "GET /index.html HTTP/1.1" 404 153 "-" "kube-probe/1.9" "-"
查看pod的详细信息,已经输出404页面,但是它还会再创建一个容器并启动
[root@k8s-master ~]# kubectl describe pod nginx-pod
Warning Unhealthy 22s (x3 over 42s) kubelet, 192.168.30.23 Liveness probe failed: HTTP probe failed with statuscode: 404
Normal Created 5m (x2 over 14m) kubelet, 192.168.30.23 Created container
Normal Started 5m (x2 over 14m) kubelet, 192.168.30.23 Started container
进入容器再看,容器又有了
root@nginx-pod:~# cd /usr/share/nginx/html
root@nginx-pod:/usr/share/nginx/html# ls
50x.html index.html
pod管理调度约束、与健康状态检查的更多相关文章
- 7.5 实现基于探针对pod中的访问的健康状态检查
1.pod的声明周期 取值 描述 Pending Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行.此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间, R ...
- Tengine笔记3:Nginx的反向代理和健康状态检查
通常代理服务器只用于处理内部网络对Intenet的请求,客户端必须通过代理服务器把本来要发送到Web服务器上的请求通过代理服务器分发给Web服务器,Web服务器响应时再通过代理服务器把响应发给客户端: ...
- Varnish后端主机的健康状态检查
author:JevonWei 版权声明:原创作品 配置后端主机的Health Check 环境 Varnish 192.168.198.139 图片服务端 192.168.198.120 程序服务端 ...
- nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查报403错误【转】
在nginx.conf配置文件中 在server添加 location /nstatus { check_status; access_log off; #allow 192.168.2.11; #d ...
- Kubernetes 健康状态检查(九)
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...
- 利用ldirectord实现lvs后端realserver健康状态检查
ldirectord用来实现LVS负载均衡资源在主.备节点间的故障转移.在首次启动时,ldirectord可以自动创建IPVS表.此外,它还可以监控各RealServer的运行状态,一旦发现某Real ...
- http健康状态检查
来自为知笔记(Wiz)
- 如何编写LVS对Real Server的健康状态检测脚本
简介:Linux 虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...
- WEB缓存系统之varnish代理以及健康状态检测配置
前文我们聊了下varnish的缓存项修剪配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12666406.html:今天我来说一下varnish作为代理服务 ...
随机推荐
- Excel优雅导出
流程 原来写过一篇文章,是介绍EasyExcel的,但是现在有些业务需要解决,流程如下 1.需要把导出条件转换成中文并存入数据库 2.需要分页导出 3.需要上传FTP或者以后上传OSS 解决方案 大体 ...
- 初始化CentOS7
安装CentOS7 配置网络 # 修改网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROX ...
- 栈的应用:表达式括号匹配检测(C)
问题说明: 假设数学表达式中允许包含两种括号:圆括号"()"和方括号"[]",嵌套顺序任意. 正确的嵌套模式:( [ ] ( ) ).[ ( [ ] [ ] ) ...
- Eureka部署在阿里云所带来的问题
没有那么多废话,直奔主题... 1.解决查看eureka界面时服务名显示而非ip+端口,以及解决显示ip而非阿里云公网ip问题(个人解决方式,如果和我这样配置还是不行,那就再百度或者谷歌下吧) eur ...
- Linux vmstat 使用说明
摘自 https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat Linux Performanc ...
- angular8 大地老师学习笔记
第一课: angular 创建项目命令: ng new 项目名称 创建组件: ng g 可查看所有创建的对象 ,ng g component components/home 创建组件,后面跟的是 ...
- Promise 之初探
陈旧的知识应该更新一下了,先尝试一下 Promise ,主要参考 https://www.cnblogs.com/whybxy/p/7645578.html 定义一个函数 直接上干货,定义一个函数: ...
- Gradle 是干什么吃的?
Gradle维基解释:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.当前其支 ...
- 看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap
引言 面试官: 小伙子你有点眼熟啊,是不是去年来这面试过啊. 二胖: 啊,没有啊我这是第一次来这. 面试官: 行,那我们开始今天的面试吧,刚开始我们先来点简单的吧,java里面的容器你知道哪些啊,跟我 ...
- 自动化运维工具-Ansible之3-playbook
自动化运维工具-Ansible之3-playbook 目录 自动化运维工具-Ansible之3-playbook PlayBook初识 YAML语法 PlayBook部署httpd PlayBook实 ...