不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • Docker

  • K8S

    • 01_Kubernetes概述

    • 02_二进制搭建K8s集群

    • 03_kubeadm部署K8s

    • 04_Kubectl命令行管理工具

    • 05_资源编排(YAML)

      • 01.资源编排(YAML)
        • 1.1 YAML格式说明
        • 1.2 官网pod编排文件示例
        • 2.1 使用YAML部署java-demo
        • 2.2 使用YAML部署nginx服务
          • 2.2.1 查看官方示例
          • 2.2.2 使用功官方示例部署nginx服务
        • 3.1 生成Deployment的YAML文件
        • 3.2 生成Service的YAML文件
        • 3.3 使用生成的文件创建资源
    • 06_Pod对象管理

    • 07_Pod对象调度

    • 08_常用负载控制器

    • 09_Service统一入口访问

    • 10_Ingress对外暴露应用

    • 11_项目中实际应用K8s

  • 容器原理

  • Istio

  • 容器
  • K8S
  • 05_资源编排(YAML)
xiaonaiqiang
2021-02-12
目录

01.资源编排(YAML)

# 01.YAML文件格式说明

# 1.1 YAML格式说明

  • K8s是一个容器编排引擎,使用YAML文件编排要部署应用,因此在学习之前,应先了解YAML语法格式:

  • 缩进表示层级关系

  • 不支持制表符“tab”缩进,使用空格缩进

  • 通常开头缩进 2 个空格

  • 字符后缩进 1 个空格,如冒号、逗号等

  • “---” 表示YAML格式,一个文件的开始

  • “#”注释

# 1.2 官网pod编排文件示例

  • 官方pod参考示例:https://kubernetes.io/zh/docs/concepts/workloads/pods/
apiVersion: batch/v1
kind: Job
metadata:
  name: hello
spec:
  template:
    # 这里是 Pod 模版
    spec:
      containers:
      - name: hello
        image: busybox
        command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
      restartPolicy: OnFailure
    # 以上为 Pod 模版
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 02.YAML文件创建资源对象

# 2.1 使用YAML部署java-demo

  • 等同于: kubectl create deployment web --image=lizhenliang/java-demo -n default
apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: web 
  namespace: default 
spec: 
  replicas: 3 
  selector: 
    matchLabels: 
    app: web 
  template: 
    metadata: 
    labels: 
      app: web 
    spec: 
      containers: 
      - name: web 
        image: lizhenliang/java-demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 2.2 使用YAML部署nginx服务

# 2.2.1 查看官方示例

官网搜索 deployment即可找到官方部署nginx示例

[root@k8s-master ~]# vim deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 2.2.2 使用功官方示例部署nginx服务

  • 使用上面的 deployment.yaml部署
[root@k8s-master ~]# kubectl create -f deployment.yaml       # create命令,只能第一次创建使用这个命令,基本不用
'''将你需要创建的资源描述到YAML文件中'''
[root@k8s-master ~]#  kubectl apply -f deployment.yaml            # 部署
[root@k8s-master ~]#  kubectl delete -f  deployment.yaml           # 卸载
1
2
3
4
  • 查看pod是否启动
[root@k8s-master ~]# kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-66b6c48dd5-56nml   1/1     Running   0          6m14s
nginx-deployment-66b6c48dd5-n2xw7   1/1     Running   0          6m14s
nginx-deployment-66b6c48dd5-r6t4j   1/1     Running   0          6m14s
[root@k8s-master ~]# kubectl delete service  web     # 删除具体某一个pod
service "web" deleted
1
2
3
4
5
6
7

# 03.YAML文件中字段太多,记不住怎么办

# 3.1 生成Deployment的YAML文件

'''1.如果以前已经创建过pod名字为web的deployment,可以使用下面命令删除  '''
[root@k8s-master ~]# kubectl delete deploy web
'''2.使用create命令到处YAML文件  '''
[root@k8s-master ~]# kubectl create deployment web --image=lizhenliang/java-demo -n default --dry-run=client -o yaml > deployment-export.yaml
[root@k8s-master ~]# cat deployment-export.yaml    # 删除注释中不需要的字段
apiVersion: apps/v1
kind: Deployment
metadata:
  # creationTimestamp: null
  labels:
    app: web
  name: web
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      # creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: lizhenliang/java-demo
        name: java-demo
        resources: {}
# status: {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 3.2 生成Service的YAML文件

[root@k8s-master ~]# kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort -n default --dry-run=client -o yaml > service-export.yaml
[root@k8s-master ~]# cat service-export.yaml     # 删除注释中不需要的字段
apiVersion: v1
kind: Service
metadata:
  # creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: web
  type: NodePort
# status:
#   loadBalancer: {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 3.3 使用生成的文件创建资源

[root@k8s-master ~]#  kubectl apply -f  deployment-export.yaml         # 部署deployment
[root@k8s-master ~]#  kubectl apply -f  service-export.yaml           # 部署service
[root@k8s-master ~]#  kubectl delete -f  xxx.yaml                  # 卸载
[root@k8s-master ~]#  kubectl get pods,svc
NAME         TYPE      CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
service/web   NodePort    10.104.173.209   <none>    80:32390/TCP   3s

#####  可以使用下面地址访问 #####
http://192.168.56.63:32390/
1
2
3
4
5
6
7
8
9

Pod容器的字段拼写忘记了

kubectl explain pods.spec.containers kubectl explain deployment

上次更新: 2024/3/13 15:35:10
01.kubectl命令行管理工具
01.Pod对象基本管理

← 01.kubectl命令行管理工具 01.Pod对象基本管理→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式