kubernetes(3) ——Pod管理

本文详细介绍Kubernetes中Pod的概念,包括Pod的创建、管理、拉伸、扩容与缩容等操作,以及如何通过Deployment方式运行Pod并实现滚动更新与回滚。同时,探讨了Service在Pod间的访问策略及Pod对外部的暴露方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 什么是Pod

Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。

一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。
在这里插入图片描述
注意:以下实验是在搭建好k8s的基础上进行的(见上一篇博文)

2.pod管理

- 1.用自主命令的方式运行pod

部署过程中所有需要的镜像均由server2 push到harbor仓库中
各个节点必须配置有certs.d/westos.org/ca.crt 认证
可以从harbor仓库中拉取镜像

在这里插入图片描述
运行服务nginx:
修改镜像仓库
在这里插入图片描述

docker run --name demo --image=westos.org/library/nginx

注意:创建时不指定namespace,默认都在default中

在这里插入图片描述
在这里插入图片描述
查看日志

kubeclt logs demo

在这里插入图片描述
在这里插入图片描述
容器中访问pod
在这里插入图片描述
删除pod:

kubectl delete pod demo

在这里插入图片描述

- 2.deployment方式运行pod(部署)

首先我们用自主命令方式运行nginx和myapp镜像:

kubectl run nginx --image=nginx
kubectl run myapp --image=myapp:v1

查看pod的运行状态:

kubectl get pod
kubectl get pod -o wide

删除myapp:

kubectl delete pod myapp

我们发现用这种方式运行的myapp可以顺利删除

用 deployment方式运行myapp:

kubectl create deployment myapp --image=myapp:v1
kubectl get pod

在这里插入图片描述

删除myapp:

kubectl delete pod myapp-7449b5b68f-ss8b8

kubectl get pod	#可以看到又多出了myapp-7449b5b68f-pm5mn
kubectl get all

在这里插入图片描述
在这里插入图片描述
我们可以发现删除deployment方式运行的myapp,删除后会自动创建一个新的,这是通过副本来维护的
在这里插入图片描述
在这里插入图片描述
通过该方式创建的pod无法通过kubectl delete pod ,这是通过rs(副本)来维护的。
可以通过使用depolyment来删除
在这里插入图片描述

  • 3.deloyment形式的pod拉伸
 kubectl scale --replicas=2 deployment app
kubectl get pod
kubectl get pod -o wide

在这里插入图片描述
删除Pod:

kubectl delete pod app-6db489d4b7-2v97v
         ##由于--replicas=2,集群会自动创建Pod。
kubectl delete deployment nginx	

在这里插入图片描述

  • 4.创建服务Pod间的互相访问

service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。

创建service

kubectl expose deployment app --port=80 --target-port=80
kubectl get deployments.apps 

此时pod客户端可以通过service的名称访问后端的两个Pod

ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP

kubectl get svc
kubectl describe svc app 

在这里插入图片描述
测试:

kubectl run test1 -it --image=reg.westos.org/k8s/busyboxplus 
kubectl attach test -it
curl 10.109.54.133/hostname.html
curl 10.109.54.133/hostname.html

在这里插入图片描述 我们可以看到它实现了pod的负载均衡
当我们拉伸pod时,它会自动识别,从而添加到负载均衡集群中
在这里插入图片描述
实现了Pod的负载均衡。

当拉伸时,会自动识别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是这种方式实现的还是一个集群内部可以访问的虚拟ip

  • 5.把pod暴露给集群外部主机

对于已经创建的Pod,可以手动修改type

NodePort: 在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过 NodeIP:NodePort 来访问该服务

方法一:对于已经创建的pod,可以手动修改type
在这里插入图片描述
在这里插入图片描述
访问:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法二:在创建时指定–type=NodePort

kubectl expose deployment app --port=80 --target-poet=80 --type=NodePort
kubectl get pod -o wide
kubectl get svc app

可以看到它对外提供的端口
测试:

curl 172.25.254.3:31365
curl 172.25.254.3:31365/hostname.html

此时在集群外部也可以访问到集群内部的pod

  • 6.Pod扩容与缩容
$ kubectl scale --replicas=6 deployment  nginx
$ kubectl scale --replicas=3 deployment  nginx

在这里插入图片描述

  • 7.pod的滚动更新以及回滚
    更新pod镜像:
kubectl set image deployments app myapp=westos.org/library/myapp:v2 --record

回滚:

kubectl rollout history deployment app  //查看历史版本
kubectl rollout undo deployment app --to-revision=1	//回滚版本

在这里插入图片描述
在这里插入图片描述
可以看到版本信息变成v2了:
在这里插入图片描述
回滚到v1版本:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值