这里写目录标题
通过yaml配置文件创建pod
k8s中一切皆资源
pod是最小的资源单位
任何的k8s资源都可以通过yaml清单文件来定义
k8s yaml文件的主要组成部分(需要顶格写)
apiVersion:v1 api版本
kind : pod 资源类型,可以是pod、deployment、statefulset
metadata: 属性,pod相关的元数据,用于描述pod的数据
spec:详细,期望pod按照这里面的描述进行创建
这里以nginx为例
因为之前创建过nginx的deploy,所以这里先将相关的deploy和service删除掉
kubectl delete deploy nginx
kubectl delete svc nginx
编写yaml配置文件
一定要注意格式
vim nginx_pod.yaml
apiVersion: v1 #k8s api的版本
kind: Pod #资源对象的类型,可以是pod deploy svc等
metadata: #pod相关的元数据,用于描述pod的数据
name: nginx-demo #pod的名称
labels: #定义pod的标签
type: app #自定义label标签,名字为type,值为app
version: 1.0.0 #自定义标签,描述pod版本号
namespace: 'default' #命名空间配置
spec: #详细定义对象,期望pod按照这里的描述进行创建
containers: #对pod中容器的描述
- name: nginx #容器的名称
image: nginx:latest #指定容器的镜像,指定具体版本
imagePullPolicy: IfNotPresent #镜像的拉取策略,如果本地有镜像就用本地的,没有就远程拉取镜像
command: #指定容器启动时执行的指令"nginx -g daemon off"
- nginx
- -g
- 'daemon off;'
workingDir: /usr/share/nginx/html #指定容器启动后的工作目录
ports: #指定容器的端口列表
- name: http #指定端口名称
containerPort: 80 #指定容器内暴露的端口
protocol: TCP #指定该端口基于哪种协议
env: #容器环境变量设置
- name: JVM_OPTS #环境变量名
value: '-Xms128m -Xmx128m' #环境变量的值
resources: #指定资源限制
requests: #最少需要多少资源
cpu: 100m #限制cpu最少使用0.1个核心
memory: 128Mi #限制内存最少使用128M
limits: #最多可以用多少资源
cpu: 200m #限制cpu最多使用0.2个核心
memory: 256Mi #限制内存最多使用256M
restartPolicy: OnFailure #定义pod的重启策略
根据配置文件创建pod
kubectl create -f nginx_pod.yaml
pod创建成功
展示更多信息
kubectl get pod -o wide
可以看到pod所在节点,以及IP地址
在主节点测试可以正常访问
配置文件参数参考
创建一个nginx的pod,会发现它起了两个容器
以nginx容器为例,一个pod中封装了两个容器,一个是pod的基础容器,用来实现k8s的相关功能,一个是nginx的业务容器
常用资源类型与别名
资源类型 | 别名 |
---|---|
pod | po |
deployment | deploy |
service | svc |
namespace | ns |
node | no |