5.实践篇:Pod资源清单配置基础

5.实践篇:Pod资源清单配置基础

2020-02-05 17:53:02

        Docker语境中我们都说容器、docker,大家耳熟能详。但到了kubernetes中,这个专有名词仿佛就被"取而代之"了。kubernetes的语境中,我们将一个容器集合称之为Pod

1.What is Pod?

pod.png        

        那什么是Pod呢?

        如图所示,Pod中有一个pause容器,和一堆业务容器,他们有各自的PID、MOUNT和USER,但他们共享IPC、UTS和NETWORK。
对于这六个专属名词的描述,可以看下面的表格:

简称 描述
UTS 主机名
IPC 进程间通信
PID "chroot"进程树
MOUNT 挂载点
NETWORK 网络访问,包括接口
USER 将本地的虚拟user-id映射到真实的user-id

2.Pod的特征

1.通过使用"各自"的IPC,使得可以在一个Pod中通信
2.容器可以通过localhost相互访问
3.每个容器继承Pod的名称
4.每个Pod有一个平滑共享网络名称空间的ip地址
5.Pod内部的存储卷是共享的

3.Pod对象的配置格式

kind:定义资源类型,例如deployment、service等
apiVersion:定义调用的api版本,所支持的版本可以通过kubectl api-resources查看
metadata:资源提供源数据信息,如名称、隶属的名称空间和标签等
spec:用于定义用户期望的状态,不同的资源类型
status:记录活动对象的当前状态信息,由k8s系统自行维护,对用户来说为只读字段

4.Pod对象的申明类型

陈述式:
    kubectl create -f xx.yaml

申明式(建议使用):
    kubectl apply -f xx.yaml

陈述式的命令不能用于多次执行,建议使用申明式的命令

5.命令补充

#pod API配置字段查询,你可以清晰地看到我们第三小节提到的pod对象的配置格式
kubectl explain pods

#如果想要知道pod中的spec字段如何配置,可以使用以下命令。
kubectl explain pods.spec

#Docker策略回顾    
Docker:
    imagePullPolicy:
        Always:无论本地有没有镜像,都要去互联网拖(常用于拉取latest的镜像)
        Nerver:只使用本地镜像,从不联网拉取(常用于拉取指定版本的镜像)
        IfNotPresent:默认值,本地有则使用本地镜像,本地没有则拉取

温馨提示:

你要勤于使用kubectl explain命令,查询相关字段的配置格式、要求等。这是你学好kubernetes配置清单的大宝剑!

6.基础yaml

apiVersion: v1
kind: Pod
metadata:
  name: first-pod
spec:
  containers:
  - name: bash-container
    image: docker.io/busybox

这是pod资源的基础yaml配置,其中:

apiVersion定义的是调用哪个核心群组的api
kind定义我们需要申明的是哪一类资源
metadata为元数据
spec为我们期望的状态,其中定义了镜像名和镜像地址

我们可以通过以下命令查询,containers字段下是如何配置,并且你可以知道containers是一个对象列表,所以我们name开头使用了一个短横线
[root@k8s-etcd-mater01 fault-injection]# kubectl explain pods.spec.containers
VERSION:  v1
RESOURCE: containers <[]Object>

你体会到explain的强大了吗?

7.三种网络代理方式

kubernetes中提供了3种方式将集群内的服务暴露到集群外(后面我们会分别使用到):

service:申明NodePort类型,可以通过任意节点访问
hostPort:直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过宿主机的IP加上来访问Pod了
hostNetwork:共享宿主机的网络名称空间

@版权声明:51CTO独家出品,未经允许不能转载,否则追究法律责任


版权声明:
作者:WaterBear
链接:https://l-t.top/2041.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录