运维开发网

K8S 之 Pod的理解与入门

运维开发网 https://www.qedev.com 2021-03-01 12:10 出处:51CTO 作者:wx592bc92b285c7
一、POD理解docker调度的是容器,在k8s集群中,最小的调度单元是Pod,一个POD里面可以有一个容器或多个容器,但业务使用中,通常会拆分为应用一个POD,数据库一个POD,以达到有效的安全与资源分布管理。

一、POD理解

docker调度的是容器,在k8s集群中,最小的调度单元是Pod,一个POD里面可以有一个容器或多个容器,但业务使用中,通常会拆分为应用一个POD,数据库一个POD,以达到有效的安全与资源分布管理。

K8S 之  Pod的理解与入门

二、使用yaml格式定义POD

#一个POD包含两个容器
apiVersion: v1                      #该Pod的版本信息,可通过命令查看
kind: Pod                             #创建一个pod的资源
metadata:
  name: myblog                    #该pod资源的名称
  namespace: kang              #该pod资源的命名空间
  labels:
    component: myblog        #该pod资源的label标签归属
spec:                                   #为该pod资源定义精确的信息
  containers:                        #定义为容器
  - name: myblog                #第一个容器的名称
    image: 10.3.153.200:5000/myblog:v1              #容器的镜像拉取
    env:                                            #该容器内的环境变量传输
    - name: MYSQL_HOST   
      value: "127.0.0.1"                     #因一个pod下的容器,可直接访问本地数据库
    - name: MYSQL_PASSWD
      value: "123456"
    ports:                                           #容器定义发布端口,类同于expose
    - containerPort: 8002
  - name: mysql                    #第二个容器的名称
    image: 10.3.153.200:5000/mysql:5.7-utf8
    ports:
    - containerPort: 3306
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "123456"
    - name: MYSQL_DATABASE
      value: "myblog"

apiVersion: v1(版本含义)

K8S 之  Pod的理解与入门

K8S 之  Pod的理解与入门

kind: Pod(可通过以下命令查看、K8S的所有资源)

K8S 之  Pod的理解与入门

metadata

帮助唯一性标识对象的一些数据,包括一个 name 字符串、UID 和可选的 namespace、labels标签

spec

对象 spec 的精确格式对每个 Kubernetes 对象来说是不同的,包含了特定于该对象的嵌套字段

containers

定义该POD下的容器信息,如容器名称、镜像、端口、磁盘等等信息

三、如何编写资源yaml

1、拿来主义,从机器中已有的资源中拿来参考

K8S 之  Pod的理解与入门

2、学会在官网查找, https://kubernetes.io/docs/home/

K8S 之  Pod的理解与入门

四、Pod状态与生命周期

K8S 之  Pod的理解与入门

K8S 之  Pod的理解与入门

五、根据yaml文件创建与管理Pod

1、创建对应的namespace空间

K8S 之  Pod的理解与入门

2、通过yaml文件创建Pod

K8S 之  Pod的理解与入门

3、查看pod的详细信息

K8S 之  Pod的理解与入门

4、进入pod里的容器

K8S 之  Pod的理解与入门

5、查看容器日志

K8S 之  Pod的理解与入门

6、删除pod

K8S 之  Pod的理解与入门

六、Pod的标签应用

1、创建POD时指定相应标签

apiVersion: v1
kind: Pod
metadata:
  name: kubia-manual
  namespace: test
  labels:
    app: web_html         #定义了app标签为:web_html
    env: prod                  #定义了env标签为:prod
spec:
  containers:
    - name: kubia
      image: luksa/kubia
      ports:
        - containerPort: 8080
          protocol: TCP

2、通过标签查看POD

[[email protected] ~]# kubectl get pod --show-labels -n test      #查看所有pod的标签
NAME                        READY   STATUS    RESTARTS   AGE    LABELS
kubia-manual                1/1     Running   0          47h    app=web_test,env=prod
nginx-dp-856666d759-bfrgj   1/1     Running   0          3d9h   app=nginx-proxy,env=test,pod-template-hash=856666d759
nginx-dp-856666d759-c5p4l   1/1     Running   0          3d9h   app=nginx-proxy,env=test,pod-template-hash=856666d759

[[email protected] ~]# kubectl get pod -l env=prod -n test   #查看env=prod的标签
NAME           READY   STATUS    RESTARTS   AGE
kubia-manual   1/1     Running   0          47h

3、修改POD标签的属性

[[email protected] ~]# kubectl get pod -l env=prod -n test
NAME           READY   STATUS    RESTARTS   AGE
kubia-manual   1/1     Running   0          47h
[[email protected] ~]# kubectl label pod kubia-manual env=debug --overwrite -n test
pod/kubia-manual labeled
[[email protected] ~]# kubectl get pod --show-labels -n test | grep env=debug
kubia-manual                1/1     Running   0          47h    app=web_test,env=debug

4、为现有POD添加一个标签

[[email protected] ~]# kubectl label pod kubia-manual mingkang_test=test -n test
pod/kubia-manual labeled
[[email protected] ~]# kubectl get pod --show-labels -n test | grep kubia-manual
kubia-manual                1/1     Running   0          47h    app=web_test,env=debug,mingkang_test=test

5、通过POD标签,固定到某个NODE上

apiVersion: v1
kind: Pod
metadata:
  name: kubia-manual
  namespace: test
  labels:
    app: web_html
    env: prod
spec:
  nodeSelector:       #节点标签选择器
    gpu: true             #gpu为true的节点
  containers:
    - name: kubia
      image: luksa/kubia
      ports:
        - containerPort: 8080
          protocol: TCP

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号