K8s之YAML文件
发表于:2023-02-03 作者:安全数据网编辑
编辑最后更新 2023年02月03日,Kubernetes支持YAML和JSON格式创建资源对象1,JSON格式用于接口之间消息的传递2,YAML格式用于配置和管理3,YAML是一种简洁的非标记性语言语法格式:缩进标识层级关系不支持制表符
Kubernetes支持YAML和JSON格式创建资源对象
1,JSON格式用于接口之间消息的传递
2,YAML格式用于配置和管理
3,YAML是一种简洁的非标记性语言
语法格式:
缩进标识层级关系
不支持制表符(tab)缩进,使用空格缩进
通常开头缩进两个空格
字符后缩进一个空格,如冒号,逗号等
"---"表示YAML格式,一个文件的开始
"#"表示注释
`查看应用名称`[root@master1 ~]# kubectl api-versionsadmissionregistration.k8s.io/v1beta1apiextensions.k8s.io/v1beta1apiregistration.k8s.io/v1apiregistration.k8s.io/v1beta1apps/v1apps/v1beta1apps/v1beta2authentication.k8s.io/v1authentication.k8s.io/v1beta1authorization.k8s.io/v1authorization.k8s.io/v1beta1autoscaling/v1autoscaling/v2beta1autoscaling/v2beta2batch/v1batch/v1beta1certificates.k8s.io/v1beta1coordination.k8s.io/v1beta1events.k8s.io/v1beta1extensions/v1beta1networking.k8s.io/v1policy/v1beta1rbac.authorization.k8s.io/v1rbac.authorization.k8s.io/v1beta1scheduling.k8s.io/v1beta1storage.k8s.io/v1storage.k8s.io/v1beta1v1[root@master1 ~]# mkdir demo[root@master1 ~]# cd demo/[root@master1 demo]# vim nginx-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: my-nginx labels: app: nginxspec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.15.4 ports: - containerPort: 80#插入内容后按Esc退出插入模式,输入:wq保存退出[root@master1 demo]# kubectl create -f my-nginx.yamldeployment.apps/my-nginx created[root@master1 demo]# kubectl get podsNAME READY STATUS RESTARTS AGE`my-nginx-d55b94fd-kc2gl 1/1 Running 0 47s``my-nginx-d55b94fd-tkr42 1/1 Running 0 47s`nginx-6c94d899fd-8pf48 1/1 Running 0 23hnginx-deployment-5477945587-f5dsm 1/1 Running 0 22hnginx-deployment-5477945587-hmgd2 1/1 Running 0 22hnginx-deployment-5477945587-pl2hn 1/1 Running 0 22h[root@master1 demo]# vim my-nginx-service.yamlapiVersion: v1kind: Servicemetadata: name: my-nginx-service labels: app: nginxspec: type: NodePort ports: - port: 80 targetPort: 80 selector: app: nginx#插入内容后按Esc退出插入模式,输入:wq保存退出[root@master1 demo]# kubectl create -f my-nginx-service.yamlservice/my-nginx-service created`查看服务`[root@master1 demo]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.0.0.1 443/TCP 8d`my-nginx-service NodePort 10.0.0.210 80:40377/TCP 20s`nginx-service NodePort 10.0.0.242 80:40422/TCP 33h
1.自动测试命令的正确性,并不执行创建:
[root@master1 demo]# kubectl run my-nginx --image=nginx --port=80 --replicas=2 --dry-runkubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.deployment.apps/my-nginx created (dry run)
2.查看生成yaml格式:
[root@master1 demo]# kubectl run my-nginx --image=nginx --port=80 --replicas=2 --dry-run -o yamlkubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.apiVersion: apps/v1beta1kind: Deploymentmetadata: creationTimestamp: null labels: run: my-nginx name: my-nginxspec: replicas: 2 selector: matchLabels: run: my-nginx strategy: {} template: metadata: creationTimestamp: null labels: run: my-nginx spec: containers: - image: nginx name: my-nginx ports: - containerPort: 80 resources: {}status: {}
3.生成yaml模板文件:
[root@master1 demo]# kubectl run my-nginx --image=nginx --port=80 --replicas=2 --dry-run -o yaml > nginx-deploy.yamlkubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
4.导出json格式文件:
[root@master1 demo]# kubectl run my-nginx --image=nginx --port=80 --replicas=2 --dry-run -o jsonkubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.{ "kind": "Deployment", "apiVersion": "apps/v1beta1", "metadata": { "name": "my-nginx", "creationTimestamp": null, "labels": { "run": "my-nginx" } }, "spec": { "replicas": 2, "selector": { "matchLabels": { "run": "my-nginx" } }, "template": { "metadata": { "creationTimestamp": null, "labels": { "run": "my-nginx" } }, "spec": { "containers": [ { "name": "my-nginx", "image": "nginx", "ports": [ { "containerPort": 80 } ], "resources": {} } ] } }, "strategy": {} }, "status": {}}
5.将现有的资源生成模板导出:
[root@master1 demo]# kubectl get deploy/nginx --export -o yamlapiVersion: extensions/v1beta1kind: Deploymentmetadata: annotations: deployment.kubernetes.io/revision: "2" creationTimestamp: null generation: 1 labels: run: nginx name: nginx selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginxspec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 2 selector: matchLabels: run: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: run: nginx spec: containers: - image: nginx:1.14 imagePullPolicy: Always name: nginx resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30status: {}
6.保存到文件中:
[root@master1 demo]# kubectl get deploy/nginx --export -o yaml > my-deploy.yaml
7.查看字段帮助信息:
[root@master1 demo]# kubectl explain pods.spec.containersKIND: PodVERSION: v1RESOURCE: containers <[]Object>DESCRIPTION: List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. A single application container that you want to run within a pod.FIELDS: args <[]string> Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell command <[]string> Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell env <[]Object> List of environment variables to set in the container. Cannot be updated. envFrom <[]Object> List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. image Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. imagePullPolicy Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images lifecycle
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
我的世界怎么给服务器装32k
顺丰快递服务器机房空调着火
网络安全协议的理解
浙江省三级数据库考试时间
工资管理系统数据库总结
网考网络技术
oracle数据库降序
金铲铲之战选择服务器爆满
数据库修改与读取同时进行
流星服务器
存到数据库乱码
控制系统软件开发费用标准
周村软件开发定制
白盾网络安全
远程服务器退出全屏快捷键
网络安全与实践期末考试题
和平区im即时通讯软件开发
网络安全发展方向和建议
闵行区上门软件开发进货价
校园网络安全宣传周的标语
合肥手机软件开发哪家好
网络技术三级各种英文概念
web服务器运行数据
表格中数据库什么意思
中国的Nhanes数据库
收费站网络安全黑板报
金融网络安全事件应急处置预案
2021网络安全和信息化
何时开始招聘网络技术员
服务器中转站