Kubernetes二、pod管理(创建,删除,查看pod,deployment、创建service(ClusterIP、NodePort)、更新pod镜像,回滚)

k8s的最小调度单位是pod

粗略理解: 一个pod是一个容器
Pod是可以创建和管理Kubernetes计算的最小可部署单元一个Pod代表着集群中运行的一个进程(相当于一个容器,之前的docker相当与单机管理,k8s相当于集群管理),每个pod都有一个唯一的ip。

一个pod类似一个豌豆荚(相当于一个资源共享池,一个pod内多个容器共享),包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。

提前确保所有的状态是running
在这里插入图片描述
报错可能是拉取镜像的时候发生错误,server2和server3免密
通过namespace进行隔离,
长时间pod不是running的状态
直接删掉:kubectl delete pod ** -n namespace
内部的机制会再进行创建

kubectl命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

1.创建Pod应用(注意版本问题:命令可能不同)

提前在私有仓库server1中已经上传了myapp:v1
kubectl run nginx --image=myapp:v1

kubectl get pod -o wide 获取pod信息,其已经运行节点server3上分配到ip,

默认master端不参与调度,

在这里插入图片描述

上面建立的pod只能在集群内部(集群节点及容器)访问
在这里插入图片描述

将所需镜像在server1中的habor仓库中放好,

kubectl run demo --image=busyboxplus -it ###demo 是pod名字
在这里插入图片描述
和容器内的是同一个地址
在这里插入图片描述

pod相当于环境,真正连接的是容器

kubectl attach demo -c demo -it ##当pod内有多个容器时,-c 指定容器

在这里插入图片描述

2.删除pod

kubectl delete pod nginx

3.查看运行pod的详细信息

kubectl describe pod demo

在这里插入图片描述

4.控制器

在这里插入图片描述

4.1当进行删除操作,控制器通过rs会自动重新创建pod

在这里插入图片描述

4.2进行拉伸,当有多个节点时,会自动进行分配(只有server3,所以看不到效果)

kubectl scale deployment --replicas=2 nginx
在这里插入图片描述

会优先回收后创建的pod’

5.暴露service

将pod看为一个service ,暴露出去,让别人访问,能实现负载均衡
service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。

5.1默认类型创建service

kubectl expose deployment nginx --port=80 --target-port=80 因为myapp的端口也是80,所以无需用target port
此时pod客户端可以通过service的名称访问后端的两个Pod
ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP
在这里插入图片描述

在这里插入图片描述
当进行拉伸时,会自动出现在svc中
在这里插入图片描述
在这里插入图片描述

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

5.2使用NodePort类型暴露端口,让外部客户端访问Pod

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

kubectl edit svc nginx //修改service的type为NodePort
在这里插入图片描述
在这里插入图片描述

以节点ip+对外端口的方式访问
在这里插入图片描述

6.更新pod镜像

[root@server2 docker]#kubectl set image deployment nginx myapp=myapp:v2
deployment.apps/nginx image updated
[root@server2 docker]# kubectl rollout history deployment nginx ##查看更新记录
deployment.apps/nginx
REVISION CHANGE-CAUSE
1
2

在访问的时候已经变成v2

[root@localhost ~]# curl 172.25.10.2:30288
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>

7.回滚

[root@server2 docker]#kubectl rollout undo deployment nginx ###重新回到v1的状态
deployment.apps/nginx rolled back
[root@server2 docker]# kubectl rollout history deployment nginx
deployment.apps/nginx
REVISION CHANGE-CAUSE
2
3

8.扩容,所容(基于控制器)

 kubectl scale --replicas=6 deployment  nginx
 kubectl scale --replicas=3 deployment  nginx
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 `kubectl` 创建 Pod 的命令如下: ``` kubectl create -f path/to/pod.yaml ``` 其中 `path/to/pod.yaml` 是你的 Pod 描述文件的路径。Pod 描述文件应包含以下信息: ``` apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image ``` 其中 `apiVersion` 和 `kind` 指定了资源的类型(在这种情况下是 Pod),`metadata` 中的 `name` 属性指定了 Pod 的名称,`spec` 中的 `containers` 数组描述了 Pod 中运行的容器,包括容器的名称和镜像。 运行 `kubectl create` 命令后,Kubernetes 会在集群中创建一个新的 Pod。 你也可以使用 `kubectl run` 命令来直接创建 Pod,而无需提供 Pod 描述文件。例如,以下命令会在集群中创建一个名为 `my-pod` 的 Pod,并运行 `nginx` 镜像: ``` kubectl run my-pod --image=nginx ``` ### 回答2: 使用kubectl命令创建pod是一种直接在Kubernetes集群上创建管理容器的方法。以下是使用kubectl创建pod的步骤: 1. 在本地或远程的终端中打开命令行。 2. 确保kubectl命令已正确配置并与Kubernetes集群连接。可以通过运行`kubectl version`来验证kubectl的版本和集群连接状态。 3. 使用以下命令创建pod,并指定pod配置的YAML文件路径: ``` kubectl create -f <pod-配置-YAML-文件路径> ``` 在该命令中,`<pod-配置-YAML-文件路径>`应替换为要创建Pod配置的YAML文件的路径。 4. 执行此命令后,kubectl将发送请求到Kubernetes API服务器,创建pod,并返回创建结果。 例如: ``` pod/pod-example created ``` 5. 可以使用`kubectl get pods`命令来验证Pod创建状态和详细信息。 ``` kubectl get pods ``` 此命令将返回集群中所有已创建Pod的列表。 通过使用kubectl命令和Pod配置的YAML文件,我们可以直接在Kubernetes集群上创建管理我们的容器。这种方法非常灵活和方便,可以满足运行不同类型应用程序的需求。 ### 回答3: 使用kubectl创建pod的命令是`kubectl create pod`。 创建pod时,可以通过指定参数来定义pod的属性。例如,可以使用`--image`参数来指定pod所使用的容器镜像,使用`--name`参数来为pod指定一个名称。 以下是一个示例命令: ``` kubectl create pod my-pod --image=nginx:latest ``` 这个命令会创建一个名为my-podpod,并使用最新的nginx镜像。 除了指定镜像,还可以通过其他参数来自定义pod的属性,比如指定端口、环境变量等。 不过需要注意的是,直接创建pod可能并不是最佳实践。通常情况下,我们更推荐使用其他资源对象,如Deployment或StatefulSet来创建管理pod。这些资源对象可以提供更高级的功能,比如自动回滚、扩缩容等。因此,在实际使用中,我们更常见使用类似以下命令来创建pod: ``` kubectl create deployment my-deployment --image=nginx:latest ``` 这个命令会创建一个名为my-deploymentDeployment对象,并在该Deployment创建一个pod

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值