美文网首页
pod 控制器 4

pod 控制器 4

作者: 阿兵云原生 | 来源:发表于2023-07-03 23:08 被阅读0次

    [图片上传失败...(image-bb2cbe-1688483314637)]

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

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

    pod 的主要组成部分

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

    [图片上传失败...(image-93c295-1688483314637)]

    上面看到的属性,大多都是通过 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

    apiVersion: v1
    kind: Pod
    metadata:
      name: xmt-kubia
    spec:
      containers:
      - image: xiaomotong888/xmtkubia
        name: xmtkubia
        ports:
        - containerPort: 8080
          protocol: TCP
    

    [图片上传失败...(image-ef64c1-1688483314637)]

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

    • 定义 Kubernates API 版本是 v1

    • 资源类型是 Pod

    • 该 pod 是 基于 xiaomotong888/xmtkubia 镜像的单个容器组成的

    kubectl explain

    [图片上传失败...(image-fac58f-1688483314637)]

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

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

    kubectl explain pods

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

    kubectl explain pod.spec

    [图片上传失败...(image-b18ff5-1688483314637)]

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

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

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

    pod 的操作方式补充

    创建一个 pod

    kubectl create -f xmtkubia.yaml

    查看 pod

    kubectl get pods

    查看 pod 的更多信息

    kubectl get pods -o wide

    [图片上传失败...(image-4d4c06-1688483314637)]

    得到 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名字

    $ kubectl logs xmt-kubia
    xmt kubia server starting...
    

    查看多容器的 pod 的日志

    kubectl logs pod名字 -c 容器名字

    $ kubectl logs xmt-kubia -c xmtkubia
    xmt kubia server starting...
    

    查看 pod 的描述信息

    kubectl describe pod pod名字,如:

    kubectl describe pod xmt-kubia
    

    [图片上传失败...(image-adcb28-1688483314637)]

    如何访问 pod 里面的容器

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

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

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

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

    kubectl port-forward xmt-kubia 8088:8080

    [图片上传失败...(image-fb4bf6-1688483314637)]

    查看效果

    [图片上传失败...(image-16ad3c-1688483314637)]

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

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

    [图片上传失败...(image-ee9c2a-1688483314638)]

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

    今天就到这里,学习所得,若有偏差,还请斧正

    欢迎点赞,关注,收藏

    朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

    [图片上传失败...(image-2b4019-1688483314638)]

    好了,本次就到这里

    技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

    我是阿兵云原生,欢迎点赞关注收藏,下次见~

    相关文章

      网友评论

          本文标题:pod 控制器 4

          本文链接:https://www.haomeiwen.com/subject/ahycudtx.html