hualinux 进阶 1.10:pod的配置格式及简单例子

目录

一、建立一个简单的pod例子

二、pod yaml格式

1.1 pod配置格式

1.2 配置属性

1.3 创建pod对象

三、三种网络代理方式

附录一、pod属性列表


上一篇,我们介绍了pod及pod解决了什么问题,本篇将说一下pod的相关配置及简单的例子

参考《Kubernetes权威指南(第4版)

 

一、建立一个简单的pod例子

在没有说yaml语法时,先建立一个简单的Pod,这样会好讲一些,先运行再讲语法

mkdir -p /disk1/k8sConf
cat>/disk1/k8sConf/nginx1.18.yaml<<EOF
apiVersion: v1
#注解这个pod,首字母要大写的哈,要不会创建失败
kind: Pod
metadata:
  name: nginx18
  labels:
    web: nginx1.18
spec:
  containers:
  - name: nginx18
    image: nginx:1.18
    ports:
    - name: nginx
      containerPort: 80
      #如果配置这个一台机将无法启用2份副本
      hostPort: 82
EOF
cat /disk1/k8sConf/nginx1.18.yaml
#使用kubectl apply这种方式,叫声明式
[root@vm82 ~]# kubectl apply -f /disk1/k8sConf/nginx1.18.yaml 
pod/nginx18 created
[root@vm82 ~]# kubectl get po -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP          NODE    NOMINATED NODE   READINESS GATES
nginx18   1/1     Running   0          23m   10.44.0.1   vm821   <none>           <none>

登陆web界面查看结果如下: 

再过一会儿就自动变绿色,运行正常了,点进去看一下

发现一个内部IP地址: 

#直接看一下内部的80端口看一下,发现成功了
[root@vm82 ~]# curl 10.44.0.1:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

我们再看一下外部端口,外部端口是 节点ip:端口号,我这里只有一个节点,端口号上面配置为82,所以192.168.8.21:82

 

二、pod yaml格式

我们可以使用yaml格式编写一个pod,如果你不懂写YAML可以看一下阮一峰的《YAML语言教程

YAML你只记住一个很重要的概念,就是冒号后面一定要加一个空格,层次之间差2个空格,不能用tab键

1.1 pod配置格式

pod配置格式其实可以看k8s官方参考手册API,目前最新版本为v1.18

从上面的nginx18.yaml的pod配置文件,知道YAML怎写的,编写Pod有些属性是性填写的,如下

apiVersion :定义调用的api版本,所支持的版本可以通过kubectl api-resourc

metadata:元数据
这个是API对象的“标识”,它也是我们从 Kubernetes 里找到这个对象的主要依据。这其中最主要使用到的字段是 Labels。

顾名思义,Labels 就是一组 key-value 格式的标签。到后面用一像 Deployment 这样的控制器对象,就可以通过这个 Labels 字段从 Kubernetes 中过滤出它所关心的被控制对象

另外,在 Metadata 中,还有一个与 Labels 格式、层级完全相同的字段叫 Annotations,它专门用来携带 key-value 格式的内部信息。所谓内部信息,指的是对这些信息感兴趣的,是 Kubernetes 组件本身,而不是用户。所以大多数 Annotations,都是在 Kubernetes 运行过程中,被自动加在这个 API 对象上。

spec :用于定义用户期望的状态,描述它所要表达的功能,不同的资源类型

status:记录活动对象的当前状态信息,由k8s系统自行维护,对用户来说为
只读字段

PS:一个 Kubernetes 的 API 对象的定义,大多可以分为 Metadata 和 Spec 两个部分。
前者存放的是这个对象的元数据,对所有 API 对象来说,这一部分的字段和格式基本上是一样的;
而后者存放的,则是属于这个对象独有的定义,用来描述它所要表达的功能。

1.2 配置属性

上面是格式,每一个段都有一堆属性,为了方便阅读我放在附录一

如果学习配置可以使用 配置说明命令,如下:

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

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

#Docker策略回顾 
Docker:
    imagePullPolicy:
        Always:无论本地有没有镜像,都要去互联网拖(常用于拉取latest的镜像)
        Nerver:如果本地没有镜像,就不启动(常用于拉取指定版本的镜像)
        IfNotPresent:本地有就直接用,没有再去拖

ps:

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

1.3 创建pod对象

创建api对象一般有2种方式

命令式:

kubectl create -f yaml配置文件

声明式:推荐

kubectl apply -f yaml配置文件

这里推荐使用声明式,为什么呢,因为apply可以执行多次,对应修改操作,而create只能执行一次,如果yaml配置文件进行修改了,那么你就不能用create了,这样就给运维和开发结合带来方便,实现DevOps。

比如开发修改了东西,运维不知道有没有运行这个配置,是否修改了,无论你做什么修改如果用apply的话,它会自动判断,如果有则进行修改,并实现逐步式更换原来的旧容器。如果没有则创建一个新的。

 

三、三种网络代理方式

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

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

 

 

附录一、pod属性列表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值