我们在部署K8S的calico和coredns组件时,我们通过kubectl apply -f 指定对应的yaml文件能够创建对应的deployment,svc和容器,本次我们也通过一个简单的yaml配置文件创建一个ngxin容器
创建一个nginx-demo.yaml的文件,我们在这个文件里定义容器的启动规则
[root@master1 test_yaml]# touch nginx-demo.yaml
[root@master1 test_yaml]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 16 21:12 nginx-demo.yaml
在yaml文件中定义容器的创建规则
apiVersion: v1 #api文档版本
kind: Pod #资源对象类型,也可以配置为Deployment,StatefulSet这一类的对象
metadata: #pod相关的元数据,用于描述pod
name: nginx-demo
labels: #定义pod的标签
type: app #自定义lable的标签,名字为typ,值为app
version: v1 #描述的pod的版本号
namespace: 'test' #指定命名空间
spec: #期望pod按照里面的描述进行创建
containers: #对容器的描述
- name: nginx #容器名称
image: nginx:1.7.9 #指定容器镜像
imagePullPolicy: Always #镜像拉取策略
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: '-Xms128 -Xmx128'
resources: #POD启动资源设定
requests: #最少需要多少资源
cpu: 100m
memory: 128Mi
limits: #最多需要多少资源
cpu: 200m
memory: 256Mi
restartPolicy: OnFailure #重启策略,只有失败的情况下才重启
然后指定nginx-demo.yaml这个文件去创建容器
[root@master1 test_yaml]# kubectl apply -f nginx-demo.yaml
Error from server (NotFound): error when creating "nginx-demo.yaml": namespaces "test" not found
#这里报错是yaml文件中定义的命名空间不存在,咱们创建一下在执行
[root@master1 test_yaml]# kubectl create ns test
namespace/test created
[root@master1 test_yaml]# kubectl apply -f nginx-demo.yaml
pod/nginx-demo created
#查看容器的创建情况
[root@master1 test_yaml]# kubectl get pods -n test -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-demo 1/1 Running 0 52s 10.10.36.90 k8s-node1 <none> <none>