热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

三.k8s基本操作以及pod存活以及可用性验证钩子

目录kubectl常用命令资源清单配置lable使用Pod存活性和可用性验证liveness存活验证钩子exechttpGetliveness可用性验证钩子httpGetlifec

目录
  • kubectl常用命令
  • 资源清单配置
  • lable使用
  • Pod存活性和可用性验证
    • liveness存活验证钩子
      • exec
      • httpGet
    • liveness可用性验证钩子
      • httpGet
      • lifecycle-poststart错误示例
  • service, deployment, replicaset和pod之间的关系

命令 作用
kubectl cluster-info 查看集群信息
kubectl describe pod -n kube-system kube-flannel-ds-amd64-trpqq 查看kube-system名称空间里pod的描述信息
kubectl get pods -n NAME_SPACE #查看指定命名空间的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名字为nginx的描述信息
kubectl get pods --show-labels 查看pod的标签
kubectl scale deployment nginx-deploy --replicas=3 扩容或缩容, --replicas为数量
kubectl run -it test --image=busybox -- sh; wget -O - -q nginx-deploy nginx-deploy是svc名字, 验证svc是不是好用
kubectl rollout undo deployment myapp-deploy --to-revision=1 回滚到指定版本, 默认回滚到上一版本
资源清单配置
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  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
lable使用

过滤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: v1
kind: Pod
metadata:
  name: pod-demo   #name必须小写
  namespace: default
  labels:
    app: myapp
    tier: frontend
  annotations:
    create-by: tianpei.wang
spec:
  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
Pod存活性和可用性验证

三. k8s基本操作以及pod存活以及可用性验证钩子

liveness存活验证钩子

exec

apiVersion: v1
kind: Pod
metadata:
    name: liveness-exec-pod
    namespace: default
spec:
    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         #三秒为一个探测周期

httpGet

apiVersion: v1
kind: Pod
metadata:
    name: liveness-httpget-pod
    namespace: default
spec:
    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

liveness可用性验证钩子

httpGet

apiVersion: v1
kind: Pod
metadata:
    name: readiness-httpget-pod
    namespace: default
spec:
    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: v1
kind: Pod
metadata:
    name: poststart-pod
    namespace: default
spec:
    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目录还未创建

service, deployment, replicaset和pod之间的关系

三. k8s基本操作以及pod存活以及可用性验证钩子

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


推荐阅读
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
  • 深入探讨配置文件的管理与优化
    尽管配置文件的重要性不言而喻,但其管理和安全性问题却常被忽视。本文将详细讨论配置文件的不同管理策略及其优缺点。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • k8s之Service介绍
    1、Service是什么?​Service是一种k8s集群中访问pod的一种策略。k8s中的pod具有生命周期,且不可复活。每个pod有着自己的IP地址,pod的销毁与创建都会创新 ... [详细]
  • 本文深入探讨了企业级开发框架NHibernate和Spring.NET的关键特性之一——面向方面编程(AOP)。文章不仅介绍了AOP的基本概念及其如何增强面向对象编程(OOP),还详细说明了Spring.NET中AOP的具体应用,包括事务管理和自定义方面的实现。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • prometheus09-k8s部署grafana
    1.部署grafana?apiVersion:?appsv1?kind:?StatefulSet?metadata:??name:?grafana??namespace:?kube-systemspec:??serviceName:?grafana??repl ... [详细]
  • 本文详细介绍了如何在VMware环境下安装CentOS 7 Minimal,并成功配置GNOME桌面环境的过程。包括解决网络连接问题和设置默认图形界面等关键步骤。 ... [详细]
  • databasesync适配openGauss使用指导书
    一、database-sync简介database-sync作为一种开源辅助工具,用于数据库之间的表同步,更确切的说法是复制,可以从一个数据库复制表到另一个数据库该工具支持的功能如 ... [详细]
  • 本文探讨了如何在Django中创建一个能够根据需求选择不同模板的包含标签。通过自定义逻辑,开发者可以在多个模板选项中灵活切换,以适应不同的显示需求。 ... [详细]
  • 本文将详细介绍如何使用ViewPager实现多页面滑动切换,并探讨如何去掉其默认的左右切换动画效果。ViewPager是Android开发中常用的组件之一,用于实现屏幕间的内容切换。 ... [详细]
  • Kubernetes 1.9.0 Alpha.1 发布公告 [Kubernetes 最新动态]
    近日,Kubernetes 社区发布了两个新版本:1.8.0 RC.1 和 1.9.0 Alpha.1。这是 k8s 1.9.0 的首次发布,自 v1.8.0 Alpha.3 以来进行了大量更新,共提交了 279 次。 ... [详细]
author-avatar
色花君子fds_181
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有