Kubernetes的pod管理

这篇具有很好参考价值的文章主要介绍了Kubernetes的pod管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、应用部署

二、编写yaml文件

三、init容器

四、探针

1、存活探针

2、就绪探针


一、应用部署

下载测试镜像

docker pull yakexi007/myapp:v1
docker pull yakexi007/myapp:v2
docker tag yakexi007/myapp:v1  reg.westos.org/library/myapp:v1
docker tag yakexi007/myapp:v2 reg.westos.org/library/myapp:v2
docker push reg.westos.org/library/myapp:v1
docker push reg.westos.org/library/myapp:v2

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

创建自主式pod (生产不推荐)

kubectl run demo --image=myapp:v1
kubectl get pod -o wide

Kubernetes的pod管理,kubernetes,linux,运维,服务器

查看pod详情 及删除

kubectl describe  pod demo
kubectl delete  pod demo

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

创建控制器(推荐)

kubectl create deployment myapp --image=myapp:v1 --replicas=3

Kubernetes的pod管理,kubernetes,linux,运维,服务器

控制器自动维护pod副本数

kubectl get pod
kubectl get deployments.apps
kubectl delete  pod myapp-67984c8646-kgxl5
kubectl get deployments.apps
kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

在远程pod中执行命令

kubectl exec myapp-67984c8646-98zh4 -- ls /usr/share/nginx/html

Kubernetes的pod管理,kubernetes,linux,运维,服务器

扩容pod数量

kubectl  scale deployment myapp --replicas=6
kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

缩容

kubectl  scale deployment myapp --replicas=3
kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

通过service暴露pod

kubectl expose deployment myapp --port=80 --target-port=80

Kubernetes的pod管理,kubernetes,linux,运维,服务器

查看svc详情

kubectl describe  svc myapp

Kubernetes的pod管理,kubernetes,linux,运维,服务器

curl 10.98.121.24
curl 10.98.121.24/hostname.html

Kubernetes的pod管理,kubernetes,linux,运维,服务器

service自动发现pod扩容与缩容,自动更新endpoints,实现对应用的负载均衡

service默认使用clusterip类型,只能在集群中访问

nodeport类型,可以在集群外部访问

kubectl edit svc myapp
kubectl get svc

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

访问集群任意节点+端口

curl 192.168.67.11:32209/hostname.html
curl 192.168.67.12:32209/hostname.html
curl 192.168.67.13:32209/hostname.html

Kubernetes的pod管理,kubernetes,linux,运维,服务器

更新应用版本

kubectl set image deployment/myapp myapp=myapp:v2
curl 192.168.67.13:32209

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

查看应用历史版本

kubectl rollout history deployment myapp

Kubernetes的pod管理,kubernetes,linux,运维,服务器

回滚

kubectl rollout undo deployment myapp --to-revision=1
curl 192.168.67.11:32209

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

删除应用

kubectl delete  deployments.apps myapp
kubectl delete svc myapp
kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

集群通过namespace来做资源隔离,默认操作的资源都指向default

kubectl get ns

Kubernetes的pod管理,kubernetes,linux,运维,服务器

二、编写yaml文件

随着微服务的使用,在linux上使用vim或者vi命令编辑yml文件的时候,会自动缩进,导致文件根本 无法使用。

解决办法
粘贴前先执行如下命令: 再粘贴的时候,里面的内容就不再缩进了,完美解决。

:set paste
mkdir pod
cd pod/

Kubernetes的pod管理,kubernetes,linux,运维,服务器

获取帮助

kubectl explain pod.spec.containers

Kubernetes的pod管理,kubernetes,linux,运维,服务器

获取yaml模板

kubectl run demo --image nginx --dry-run=client  -o yaml > pod.yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
    imagePullPolicy: IfNotPresent

Kubernetes的pod管理,kubernetes,linux,运维,服务器

创建pod

kubectl create -f pod.yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

查看详情

kubectl get pod -o wide
kubectl describe  pod demo
kubectl get pod demo -o yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器
上传redis
Kubernetes的pod管理,kubernetes,linux,运维,服务器
示例:
1.  定义多个容器
vim pod.yml
cat pod.yml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
  - image: redis:6.2.4
    name: redis

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f pod.yml
kubectl describe pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器
删除
kubectl delete  -f pod.yml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

2.定义拉取策略
vim pod.yml
cat pod.yml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
    imagePullPolicy: IfNotPresent

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f pod.yml
kubectl get pod demo -o yaml
kubectl delete -f pod.yml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

资源限制

vim pod.yml
cat pod.yml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
    imagePullPolicy: IfNotPresent
    resources:
      limits:
        cpu: 1
        memory: 200M
      requests:
        cpu: 0.5
        memory: 100M

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f pod.yml
kubectl get pod demo -o yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Guaranteed,保证级别:Pod 中的容器都设置了 CPU 和 Memory 的 requests 和 limits,并且这些值相等。此时,如果资源满足所有 Guaranteed 类别的 Pod 的需求,则这些 Pod 会被同时调度在集群中,保证它们的运行。


Burstable,突发级别:Pod 中至少有一个容器设置了 CPU 和 Memory 的 requests 和 limits,但是这些值不相等。此时,如果资源足够,那么这些 Pod 会被相应地调度,但是它们的性能可能会受到限制,因为它们能够使用的资源是有上限的。


BestEffort,尽力级别:Pod 中的容器没有设置 CPU 和 Memory 的 requests 和 limits。此时,这些容器会尽力地获取集群中未被占用的资源,但是它们的资源使用是无法保证的,因为它们需要等待集群中已分配的所有资源使用完毕才能够获得更多的资源。

4.端口映射

##有配置NodePort,外部流量可访问k8s中的服务

vim pod.yml
cat pod.yml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
      hostPort: 80

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f pod.yml
kubectl get pod -o wide
kubectl describe  pod demo

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器
5.指定节点
vim pod.yml
cat pod.yml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  hostNetwork: true
  nodeSelector:
    kubernetes.io/hostname: k8s2
  containers:
  - image: nginx
    name: demo
    imagePullPolicy: IfNotPresent

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f pod.yml
kubectl describe  pod demo
kubectl delete -f pod.yml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

三、init容器

vim init-pod.yaml
cat init-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app.kubernetes.io/name: MyApp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh', '-c', "until nslookup myservice.default.svc.cluster.local; do echo waiting for myservice; sleep 2; done"]

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f init-pod.yaml
kubectl get pod
Kubernetes的pod管理,kubernetes,linux,运维,服务器
在init容器没有成功运行之前,主容器不会被运行
添加svc定义
vim myservice.yaml
cat myservice.yaml

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f myservice.yaml
kubectl get svc

Kubernetes的pod管理,kubernetes,linux,运维,服务器

svc解析成功后,init容器退出,主容器运行

yum install -y bind-utils
dig -t A myservice.default.svc.cluster.local. @10.96.0.10

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

回收资源

kubectl delete  -f init-pod.yaml
kubectl delete  -f myservice.yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

四、探针

1、存活探针

vim liveness-pod.yaml
cat liveness-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: nginx
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Kubernetes的pod管理,kubernetes,linux,运维,服务器

在存活探针检测失败导致容器不断被重启

kubectl apply -f liveness-pod.yaml
kubectl get pod -w

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl describe  pod liveness-http
kubectl delete  -f liveness-pod.yaml
Kubernetes的pod管理,kubernetes,linux,运维,服务器

2、就绪探针

vim liveness-pod.yaml
cat liveness-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: nginx
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 3
      periodSeconds: 3
    readinessProbe:
      httpGet:
        path: /test.html
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5

Kubernetes的pod管理,kubernetes,linux,运维,服务器

kubectl apply -f liveness-pod.yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器

就绪探针失败导致容器一直未就绪

kubectl get pod
kubectl describe  pod liveness-http

Kubernetes的pod管理,kubernetes,linux,运维,服务器

Kubernetes的pod管理,kubernetes,linux,运维,服务器

创建测试页面

kubectl exec  liveness-http -- touch /usr/share/nginx/html/test.html

Kubernetes的pod管理,kubernetes,linux,运维,服务器

就绪探针成功

kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

创建svc

kubectl expose pod liveness-http --port 80 --target-port 80

Kubernetes的pod管理,kubernetes,linux,运维,服务器

就绪容器自动上线

kubectl describe  svc liveness-http

Kubernetes的pod管理,kubernetes,linux,运维,服务器

删除测试页面

kubectl exec  liveness-http -- rm /usr/share/nginx/html/test.html

Kubernetes的pod管理,kubernetes,linux,运维,服务器

就绪探针失败,容器未就绪

kubectl get pod

Kubernetes的pod管理,kubernetes,linux,运维,服务器

在svc中容器自动下线

kubectl describe  svc liveness-http
Kubernetes的pod管理,kubernetes,linux,运维,服务器

回收

kubectl delete  -f liveness-pod.yaml

Kubernetes的pod管理,kubernetes,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-727510.html

到了这里,关于Kubernetes的pod管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kubernetes|云原生| 如何优雅的重启和更新pod---pod生命周期管理实务

    kubernetes的管理维护的复杂性体现在了方方面面,例如,pod的管理,服务的管理,用户的管理(RBAC),网络的管理等等,因此,kubernetes安装部署完毕仅仅是万里长征的第一步,后面的运营和维护工作才是更为关键的东西。 那么,pod的生命周期是什么概念呢?这

    2024年02月04日
    浏览(52)
  • Linux6.39 Kubernetes Pod控制器

    第三章 LINUX Kubernetes Pod控制器 一、Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源 二.pod控制器有多种类型 1.Replic

    2024年02月12日
    浏览(42)
  • 【探索 Kubernetes|作业管理篇 系列 10】Pod 健康检查和恢复机制

    大家好,我是秋意零。 上一篇中介绍了,Pod 的服务对象,从而对 Pod 有了更深的理解; 今天的主题是 Pod 健康检查和恢复机制,我们将结束 Pod 的内容。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬多多支持!在我主页推广区域,如图: 文章底部推广区域

    2024年02月09日
    浏览(40)
  • Kubernetes学习笔记-计算资源管理(4)监控pod的资源使用量20230219

    前面学了设置资源的requests和limits,这节课学习如何监控资源,根据监控资源使用情况,对requests和limits进行合理配置。 kubelet包含一个agent,名为cAdvisor,它会收集整个节点上运行的所有单独容器的资源消耗情况,这些信息可以通过一个附加组件Heapster来集中统计整个集群的监

    2024年02月05日
    浏览(44)
  • Kubernetes 集群管理、Pod 创建、Service 的创建、ConfigMap等 Kubernetes Up and Running Writing Cloud Native Apps

    作者:禅与计算机程序设计艺术 本文通过介绍下述的内容和知识点,介绍了云原生应用开发的 Kubernetes 基础知识。 涉及的内容包括 Kubernetes 集群管理、Pod 创建、Service 的创建、ConfigMap 和 Secret 等关键组件的介绍;Kubernetes 工作流程的概述;基于角色的访问控制(RBAC)、网络

    2024年02月09日
    浏览(40)
  • 基于Kubernetes的微服务自动化运维

    作者:禅与计算机程序设计艺术 本文将介绍如何使用Kubernetes进行微服务自动化运维,提高团队的工作效率和服务的可靠性。本文将阐述微服务自动化运维的实现步骤、核心技术和应用场景,同时也会介绍如何优化和改进微服务自动化运维。 引言 1.1. 背景介绍 随着互联网的发

    2024年02月06日
    浏览(46)
  • 【探索 Kubernetes|作业管理篇 系列 7】探究 Pod 有什么用,为什么需要它

    大家好,我是秋意零。 前一篇,我们介绍了如何从 0 到 1 搭建 Kubernetes 集群。现在我们可以正式了解,Kubernetes 核心特征了。 今天我们来探究 Pod,为什么需要 Pod? 👿 简介 🏠 个人主页 : 秋意零 🧑 个人介绍 :在校期间参与众多云计算相关比赛,如:🌟 “省赛”、“国

    2024年02月09日
    浏览(51)
  • Kubernetes(K8s)从入门到精通系列之十六:linux服务器安装minikube的详细步骤

    安装Docker的详细步骤,可以阅读博主下面这篇技术博客文章:

    2024年02月12日
    浏览(57)
  • 自动化的运维管理:探究Kubernetes工作机制的奥秘

    Kubernetes 是一个生产级别的 容器编排平台 和 集群管理系统 ,能够 创建 、 调度容器 , 监控 、 管理服务器 。 容器是什么?容器是软件,是应用,是进程。 服务器是什么?服务器是硬件,是 CPU、内存、硬盘、网卡等。 那么,既可以管理软件,也可以管理硬件,就是一个操

    2024年01月16日
    浏览(47)
  • 【Kubernetes运维篇】RBAC之创建集群用户管理K8S

    需求:公司新入职两位运维同事,分别是zhangsan、lisi,刚入职肯定不能给K8S管理员权限,所以需要创建两个系统账号,分别对应不同的权限: zhangsan用户 :对uat名称空间拥有管理员权限 lisi用户 :对所有命名空间拥有查看Pod的权限 第一步:生成一个私钥 第二步:生成一个证

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包