前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pod 控制器 4

pod 控制器 4

作者头像
阿兵云原生
发布2023-09-01 08:41:21
1380
发布2023-09-01 08:41:21
举报
文章被收录于专栏:golang云原生new

对于 pod 使用 yaml 文件或者 json 描述文件生成,之前都有提到过,且对 yaml 的每一个属性都有介绍到

确实是属性非常的多,但是我们知道如何去区分哪些是重要的部分,哪些是可有可无的部分之后,这些就变得简单了

pod 的主要组成部分

我们可以查看一下任意一个已经运行中的 pod

上面看到的属性,大多都是通过 yaml 文件来定义的

pod 定义是由这几个部分组成的:

  • 使用 K8S 中 api 的版本和 yaml 描述的资源类型

下面这 3 大块,基本上在所有的 K8S 资源中都可以看到

  • metadata

包括名称,命名空间,标签,该容器的其他信息

  • spec

对于 pod 的实际说明,如该 pod 的容器是哪些,卷是哪些等等

  • status

创建 pod 的时候不写这一部分,这一部分是包含只读的运行时数据,展示了资源该时刻的状态

手动创建 pod

之前我们有尝试过通过 kubectl run ... 的方式来直接通过拉取镜像后创建 pod

很多时候后,我们是需要自己写 yaml 后来运行生成 pod 的

例如自动创建:

kubectl run xmtkubia --image=xiaomotong888/xmtkubia --port=8080

咱们可以这样来手动创建一个 pod

xmtkubia.yaml

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: xmt-kubia
spec:
  containers:
  - image: xiaomotong888/xmtkubia
    name: xmtkubia
    ports:
    - containerPort: 8080
      protocol: TCP

这样写起来就比较简单了,其实和之前我们使用 docker 来运行成容器的做法原理是一样的,此处是

  • 定义 Kubernates API 版本是 v1
  • 资源类型是 Pod
  • 该 pod 是 基于 xiaomotong888/xmtkubia 镜像的单个容器组成的

kubectl explain

我们可以使用 kubectl explain 来查看有哪些 API 对象,都是支持的那些属性

我们期望查看 pods 的就可以这样来查看

kubectl explain pods

我们期望查看 pod 里面的 spec 对象需要填写哪些字段,我们就可以这样来查看

kubectl explain pod.spec

通过上述方式,就可以看到每一个对象的都有哪些属性,以及如何使用等等

通过上述查看 explain,例如 container 对象后面就带有 required 关键字,也就是说,我们编写 spec 的时候, container 这个对象必须填写

当然,也可以参看 github 文档 , 这里面有详细的说明 , 我们对于每一个属性都进行深究意义并不大,主要是我们会用,后续能够知道其底层原理

pod 的操作方式补充

创建一个 pod

kubectl create -f xmtkubia.yaml

查看 pod

kubectl get pods

查看 pod 的更多信息

kubectl get pods -o wide

得到 pod 的完整描述文件,以 yaml 的方式

kubectl get pod xmt-kubia -o yaml

得到 pod 的完整描述文件,以 json 的方式

kubectl get pod xmt-kubia -o json

查看容器的日志

docker logs 容器id

查看 pod 的日志

kubectl logs pod名字

代码语言:javascript
复制
$ kubectl logs xmt-kubia
xmt kubia server starting...

查看多容器的 pod 的日志

kubectl logs pod名字 -c 容器名字

代码语言:javascript
复制
$ kubectl logs xmt-kubia -c xmtkubia
xmt kubia server starting...

查看 pod 的描述信息

kubectl describe pod pod名字,如:

代码语言:javascript
复制
kubectl describe pod xmt-kubia

如何访问 pod 里面的容器

之前我们有说到过,可以建 一个 service,外部直接访问 service 即可,关于 service 的进阶后面一起分享

在 pod 这一块,我们想要在 本地机器访问 pod 里面的容器,我们本地调试的时候可以使用端口转发的方式来完成

上面的 pod ,我们知道容器里面的服务端口是 8080 , 这个端口对于在本机,肯定是访问不到的,因为 pod 里面有自己独立的文件系统,地址,端口等等

我们将本机的 8088 转发到 容器里面的 8080 端口,可以这样通过 port-forward 来完成

kubectl port-forward xmt-kubia 8088:8080

查看效果

我们打开另一个终端,访问 8080 端口仍然是访问不通的,但是我们本机访问 8088 是可以通的

上述使用 port-forward 简单流程是这样的

使用端口转发的方式测试我们指定的 pod,这是一种有效的方法,当然还有其他的方法,后续再分享

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿兵云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pod 的主要组成部分
  • 手动创建 pod
  • kubectl explain
  • pod 的操作方式补充
  • 如何访问 pod 里面的容器
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档