常用的KubernetesYAML文件

Deployment

deployment-centos

apiVersion: apps/v1
kind: Deployment
metadata:
    name: deployment-centos
spec:
    replicas: 2
    selector:
        matchLabels:
            name: deployment-centos
    template:
        metadata:
            labels:
                name: deployment-centos
        spec:
            containers:
            - name: centos
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "360"

deployment-jenkins

apiVersion: apps/v1
kind: Deployment
metadata:
    name: deployment-jenkins
    labels:
        app: deployment-jenkins
spec:
    replicas: 1
    selector:
        matchLabels:
            app: jenkins
    template:
        metadata:
            labels:
                app: jenkins
        spec:
            containers:
            - name: test-jenkins
              image: jenkins/jenkins:2.409
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30000
  selector:
    app: jenkins

deployment-nginx(回滚操作)

apiVersion: apps/v1
kind: Deployment
metadata:
    name: deploy-nginx
spec:
    replicas: 4
    selector:
        matchLabels:
            name: deploy-nginx
    strategy:
        type: RollingUpdate
        minReadySeconds: 5 #指定多少秒后更新
        rollingUpdate:
            maxSurge: 2     #升级的百分比或者数字
            maxUnavailable: 3   #升级失败的百分比或数字
    template:
        metadata:
            labels:
                name: deploy-nginx
        spec:
            containers:
            - name: nginx
              image: nginx:1.20
              ports:
              - containerPort: 80

DaemonSet

daemonset-zabbix

apiVersion: apps/v1
kind: DaemonSet
metadata:
    name: daemonset-zabbix-agent
    labels:
        name: daemonset-zabbix-agent
spec:
    selector:
        matchLabels:
            name: daemonset-zabbix-agent
    template:
        metadata:
            labels:
                name: daemonset-zabbix-agent
        spec:
            containers:
            - name: daemonset-zabbix-agent
              image: busybox:1.27
              imagePullPolicy: IfNotPresent
              command:
                - sleep
                - "300"
---
apiVersion: v1
kind: Service
metadata:
    name: zabbix-agent-service
    labels:
        name: zabbix-agent-service
spec:
    type: NodePort
    ports:
    - port: 10050
      nodePort: 30010
    selector:
      name: daemonset-zabbix-agent

StatefulSet

statefulset-mysql(nfs共享存储)

apiVersion: v1
kind: ConfigMap
metadata:
    name: config-mysql
data:
    db_password: redhat
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
    name: statefuset
spec:
    replicas: 2
    selector:
        matchLabels:
            app: mysql
    serviceName: "mysql"
    template:
        metadata:
            labels:
                app: mysql
        spec:
            containers:
            - name: mysql
              image: mysql:5.7
              imagePullPolicy: IfNotPresent
              env:
                - name: MYSQL_ROOT_PASSWORD
                  valueFrom:
                    configMapKeyRef:
                        name: config-mysql
                        key: db_password
              ports:
              - containerPort: 3306
              volumeMounts:
                - name: mysql-volume
                  mountPath: /var/lib/mysql
        
            volumes:
                - name: mysql-volume
                  nfs:
                    server: 192.168.252.144
                    path: "/data"

statefulset-mysql(pv,pvc)

apiVersion: v1
kind: PersistentVolume
metadata:
    name: test1-mysql-pv
spec:
    capacity:
        storage: 8G
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.252.16
        path: /data3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: test1-mysql-pvc
spec:
    accessModes:
        - ReadWriteMany
    resources:
        requests:
            storage: 6G
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
    name: test-mysql
spec:
    replicas: 1
    selector:
        matchLabels:
            app: test-mysql
    serviceName: "test-mysql"
    template:
        metadata:
            labels:
                app: test-mysql
        spec:
            containers:
            - name: mysql
              image: mysql:5.7
              imagePullPolicy: IfNotPresent
              env:
              - name: MYSQL_ROOT_PASSWORD
                value: redhat
              volumeMounts:
                 - name: mysql-data-volume
                   mountPath: /var/lib/mysql
            volumes:
                - name: mysql-data-volume
                  persistentVolumeClaim:
                     claimName: test1-mysql-pvc
---
apiVersion: v1
kind: Service
metadata:
    name: test-mysql
spec:
    ports:
    - port: 3306
    selector:
        app: test-mysql

ConfigMap

configmap-mysql(pv,pvc)

apiVersion: v1
kind: PersistentVolume
metadata:
    name: test1-mysql-pv
spec:
    capacity:
        storage: 8G
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.252.16
        path: /data3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: test1-mysql-pvc
spec:
    accessModes:
        - ReadWriteMany
    resources:
        requests:
            storage: 6G
---
apiVersion: v1
kind: ConfigMap
metadata:
    name: mysql-config
data:
    db_password: redhat
    db_name: jiaowu
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
    name: mysql
spec:
    replicas: 1
    selector:
        matchLabels:
            app: mysql
    serviceName: "test-mysql"
    template:
         metadata:
             labels:
                app: mysql
         spec:
            containers:
            - name: mysql
              image: mysql:5.7
              imagePullPolicy: IfNotPresent
              env:
              - name: MYSQL_ROOT_PASSWORD
                valueFrom:
                  configMapKeyRef:
                      name: mysql-config
                      key: db_password
              - name: MYSQL_DATABASE
                valueFrom:
                  configMapKeyRef:
                      name: mysql-config
                      key: db_name
              volumeMounts:
                - name: mysql-data-volume
                  mountPath: /var/lib/mysql
            volumes:
                - name: mysql-data-volume
                  persistentVolumeClaim:
                     claimName: test1-mysql-pvc
---
apiVersion: v1
kind: Service
metadata:
    name: test-mysql
spec:
    ports:
    - port: 3306
    selector:
        app: test-mysql

config-map(configmap)

apiVersion: v1
kind: ConfigMap
metadata:
    name: mysql-config-02
data:
    db_password: redhat
    my.cnf: |
        [mysqld]
        server_id=10
        log_bin=master
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: mysql-deploy-02
spec:
    replicas: 2
    selector:
        matchLabels:
            app: mysql57-02
    template:
         metadata:
             labels:
                app: mysql57-02
         spec:
            containers:
              - name: dbserver-02
                image: mysql:5.7
                imagePullPolicy: IfNotPresent
                env:
                - name: MYSQL_ROOT_PASSWORD
                  value: redhat
                volumeMounts:
                - name: mysql-config-volume
                  mountPath: "/etc/mysql/"
                  readOnly: true
            volumes:
            - name: mysql-config-volume
              projected:
                  sources:
                  - configMap:
                       name: mysql-config-02

PV,PVC

test1-pvc

apiVersion: v1
kind: PersistentVolume
metadata:
    name: test1-pv
spec:
    capacity:
        storage: 2G
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.252.16
        path: /data1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: test1-pvc
spec:
    accessModes:
        - ReadWriteMany
    resources:
        requests:
            storage: 2G
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: test1-pvc-pod
spec:
    replicas: 1
    selector:
        matchLabels:
            name: test1-pvc-pod
    template:
        metadata:
            labels:
                name: test1-pvc-pod
        spec:
            containers:
            - name: test1-pvc-pod
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "3600"
              volumeMounts:
                - name: nfs-pvc-test1
                  mountPath: /data1
            volumes:
              - name: nfs-pvc-test1
                persistentVolumeClaim:
                    claimName: test1-pvc

test2-pvc

apiVersion: v1
kind: PersistentVolume
metadata:
    name: test2-pv
spec:
    capacity:
        storage: 4G
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.252.16
        path: /data2
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: test2-pvc
spec:
    accessModes:
        - ReadWriteMany
    resources:
        requests:
            storage: 4G
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: test2-pvc-pod
spec:
    replicas: 1
    selector:
        matchLabels:
            name: test2-pvc-pod
    template:
        metadata:
            labels:
                name: test2-pvc-pod
        spec:
            containers:
            - name: test2-pvc-pod
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "3600"
              volumeMounts:
                - name: nfs-pvc-test2
                  mountPath: /data2
            volumes:
              - name: nfs-pvc-test2
                persistentVolumeClaim:
                    claimName: test2-pvc

Job、CronJob

job

apiVersion: batch/v1
kind: Job
metadata:
    name: test1-job
spec:
    template:
        metadata:
            name: test1-job
        spec:
            restartPolicy: Never
            containers:
            - name: test1-job
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - "/bin/bash"
              - "-c"
              - "for i in 1 2 3 4 5; do echo $i; done"

cronjob

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-demo
spec:
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 3
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          name: cronjob-demo
        spec:
          restartPolicy: OnFailure
          containers:
          - name: counter02
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - "/bin/sh"
            - "-c"
            - "for i in 9 8 7 6 5; do echo $i; done"

Service

clusterip类型,有IP

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test1-nginx
    labels:
        app: test1-nginx
spec:
    replicas: 2
    selector:
        matchLabels:
            app: nginx
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: test1-nginx
              image: nginx:1.20
              imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
    name: test-nginx-service
    labels:
        app: test-nginx-service
spec:
    ports:
    - port: 80
    selector:
        app: nginx

clusterip类型,无ip

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test2-nginx
    labels:
        app: test2-nginx
spec:
    replicas: 2
    selector:
        matchLabels:
            app: nginx2
    template:
        metadata:
            labels:
                app: nginx2
        spec:
            containers:
            - name: test2-nginx
              image: nginx:1.20
              imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
    name: test2-nginx-service
    labels:
        app: test2-nginx-service
spec:
    clusterIP: None
    ports:
    - port: 80
    selector:
        app: nginx2

nodeport类型

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test3-nginx
    labels:
        app: test3-nginx
spec:
    replicas: 2
    selector:
        matchLabels:
            app: nginx3
    template:
        metadata:
            labels:
                app: nginx3
        spec:
            containers:
            - name: test3-nginx
              image: nginx:1.20
              imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
    name: test3-nginx-service
    labels:
        app: test3-nginx-service
spec:
    type: NodePort
    ports:
    - port: 80
      nodePort: 30001
    selector:
        app: nginx3

ingress 基于名称发布nginx

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test-nginx-deploy
spec:
    replicas: 2
    selector:
        matchLabels:
            name: test-nginx-deploy
    template:
         metadata:
             labels:
                name: test-nginx-deploy
         spec:
            containers:
            - name: webserver
              image: nginx:1.18
              imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: test-service
spec:
  ports:
  - port: 80
  selector:
    name: test-nginx-deploy
---
apiVersion: extensions/v1beta1
kind: Ingress 
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules: 
  - host: test.linux.com
    http:
      paths: 
      - path:  
        backend: 
          serviceName: test-service
          servicePort: 80

ingress 基于名称发布tomcat

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test-tomcat
spec:
    replicas: 2
    selector:
        matchLabels:
            name: test-tomcat
    template:
         metadata:
             labels:
                name: test-tomcat
         spec:
            containers:
            - name: tomcatserver
              image: tomcat
              imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: test-tomcat-service
spec:
  ports:
  - port: 8080
  selector:
    name: test-tomcat
---
apiVersion: extensions/v1beta1
kind: Ingress 
metadata:
  name: ingress-tomcat
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules: 
  - host: java.linux.com
    http:
      paths: 
      - path:  
        backend: 
          serviceName: test-tomcat-service
          servicePort: 8080

Volume

emptydir 临时卷

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test1-centos
    labels:
        app: test1-centos
spec:
    replicas: 1
    selector:
        matchLabels:
            app: centos
    template:
        metadata:
            labels:
                app: centos
        spec:
            containers:
            - name: centos
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "3600"
              volumeMounts:
                - name: test1-volume
                  mountPath: /test1
            volumes:
                - name: test1-volume
                  emptyDir: {}

hostpath 挂载物理机目录

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test2-centos
    labels:
        app: test2-centos
spec:
    replicas: 1
    selector:
        matchLabels:
            app: test2-centos
    template:
        metadata:
            labels:
                app: test2-centos
        spec:
            containers:
            - name: test2-pod
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "3600"
              volumeMounts:
                - name: test2-volume
                  mountPath: /test2
            volumes:
                - name: test2-volume
                  hostPath:
                      path: /data

nfs 网络卷

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test3-centos
    labels:
        app: test3-centos
spec:
    replicas: 1
    selector:
        matchLabels:
            app: test3-centos
    template:
        metadata:
            labels:
                app: test3-centos
        spec:
            containers:
            - name: test3-centos
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "3600"
              volumeMounts:
                - name: test3-volume
                  mountPath: /test3
            volumes:
                - name: test3-volume
                  nfs:
                    server: "192.168.252.16"
                    path: "/data"

Schduler

nodename node名称调度

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test1
    labels:
        app: centos7
spec:
    replicas: 2
    selector:
        matchLabels:
            app: centos7
    template:
        metadata:
            labels:
                app: centos7
        spec:
            nodeName: node02
            containers:
            - name: centos7
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "36000"

nodeselector 标签调度

apiVersion: apps/v1
kind: Deployment
metadata:
    name: test-deploy
    labels:
        app: test-deploy
spec:
    replicas: 2
    selector:
        matchLabels:
            app: test-pod
    template:
        metadata:
            labels:
                app: test-pod
        spec:
            nodeSelector:
                ram: high
            nodeName: node01
            containers:
            - name: test-pod
              image: centos:7
              imagePullPolicy: IfNotPresent
              command:
              - sleep
              - "36000"

wordpress项目,MySQL主从配置,PV,PVC,Redis

apiVersion: v1
kind: Namespace
metadata:
    name: wordpress
---
apiVersion: v1
kind: PersistentVolume
metadata:
    name: mysql-master-pv
    namespace: wordpress
spec:
    capacity:
        storage: 20G
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.252.16
        path: /wordpress_master_data
---
apiVersion: v1
kind: PersistentVolume
metadata:
    name: mysql-slave-pv
    namespace: wordpress
spec:
    capacity:
        storage: 20G
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.252.16
        path: /wordpress_slave_data

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: mysql-master-pvc
    namespace: wordpress
spec:
    accessModes:
        - ReadWriteMany
    resources:
        requests:
            storage: 15G
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: mysql-slave-pvc
    namespace: wordpress
spec:
    accessModes:
        - ReadWriteMany
    resources:
        requests:
            storage: 15G
---
apiVersion: v1
kind: ConfigMap
metadata:
    name: mysql-master-config
    namespace: wordpress
data:
    my.cnf: |
         [mysqld]
         server_id=10
         log_bin=master
         collation-server = utf8_general_ci
         character-set-server = utf8
         gtid_mode=on               
         enforce_gtid_consistency=true
---
apiVersion: v1
kind: ConfigMap
metadata:
    name: mysql-slave-config
    namespace: wordpress
data:
    my.cnf: |
         [mysqld]
         server_id=11
         log_bin=master
         collation-server = utf8_general_ci
         character-set-server = utf8
         gtid_mode=on
         enforce_gtid_consistency=true
         read_only=1
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
    name: wordpress-master-mysql
    namespace: wordpress
spec:
    replicas: 1
    selector:
        matchLabels:
            name: wordpress-master-mysql
    serviceName: "mysql-master"
    template:
        metadata:
            labels:
                name: wordpress-master-mysql
        spec:
            containers:
            - name: wordpress-master-mysql
              image: mysql:5.7
              imagePullPolicy: IfNotPresent
              env:
              - name: MYSQL_ROOT_PASSWORD
                value: redhat
              - name: MYSQL_DATABASE
                value: wordpress
              - name: MYSQL_USER
                value: wordpress
              - name: MYSQL_PASSWORD
                value: redhat
              ports:
              - containerPort: 3306
              volumeMounts:
                 - name: mysql-master-data-volume
                   mountPath: /var/lib/mysql
                 - name: mysql-master-config-volume
                   mountPath: "/etc/mysql/"
                   readOnly: true
            volumes:
                - name: mysql-master-data-volume
                  persistentVolumeClaim:
                     claimName: mysql-master-pvc
                - name: mysql-master-config-volume
                  projected:
                    sources:
                    - configMap:
                         name: mysql-master-config

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
    name: wordpress-slave-mysql
    namespace: wordpress
spec:
    replicas: 1
    selector:
        matchLabels:
            name: wordpress-slave-mysql
    serviceName: "mysql-slave"
    template:
        metadata:
            labels:
                name: wordpress-slave-mysql
        spec:
            containers:
            - name: wordpress-salve-mysql
              image: mysql:5.7
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 3306
              env:
              - name: MYSQL_ROOT_PASSWORD
                value: redhat
              volumeMounts:
                 - name: mysql-slave-data-volume
                   mountPath: /var/lib/mysql
                 - name: mysql-slave-config-volume
                   mountPath: "/etc/mysql/"
                   readOnly: true
            volumes:
                - name: mysql-slave-data-volume
                  persistentVolumeClaim:
                     claimName: mysql-slave-pvc
                - name: mysql-slave-config-volume
                  projected:
                    sources:
                    - configMap: 
                        name: mysql-slave-config
---
apiVersion: v1
kind: Service
metadata:
    name: mysql-master
    namespace: wordpress
spec:
    ports:
    - port: 3306     
    selector:
        name: wordpress-master-mysql
---
apiVersion: v1
kind: Service
metadata:
    name: mysql-slave
    namespace: wordpress
spec:
    ports:
    - port: 3306     
    selector:
        name: wordpress-slave-mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: wordpress
    namespace: wordpress
spec:
    replicas: 1
    selector:
        matchLabels:
            name: wordpress
    template:
        metadata:
            labels:
                name: wordpress
        spec:
            containers:
            - name: wordpress
              image: wordpress:latest
              imagePullPolicy: IfNotPresent
              env:
              - name: WORDPRESS_DB_HOST
                value: mysql-master
              - name: WORDPRESS_DB_USER
                value: wordpress
              - name: WORDPRESS_DB_PASSWORD
                value: redhat
              - name: WORDPRESS_DB_NAME
                value: wordpress
              - name: WORDPRESS_TABLE_PREFIX
                value: wp_
              ports:
              - containerPort: 80
              volumeMounts:
                - name: wordpress-volume
                  mountPath: /var/www/html/wp-config.php
                  subPath: wp-config.php
            volumes:
                - name: wordpress-volume
                  nfs:
                    server: "192.168.252.16"
                    path: "/data"
---
apiVersion: v1
kind: Service
metadata:
    name: wordpress
    namespace: wordpress
spec:
    ports:
    - port: 80
    selector:
        name: wordpress
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: ingress-test
    namespace: wordpress
    annotations:
        kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: wordpress.linux.com
    http:
      paths:
      - path:
        backend:
          serviceName: wordpress
          servicePort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: wordpress-redis
    namespace: wordpress
spec:
    replicas: 1
    selector:
        matchLabels:
            name: redis
    template:
        metadata:
            labels:
                name: redis
        spec:
            containers:
            - name: redis
              image: redis:latest
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
    name: redis
    namespace: wordpress
spec:
    ports:
    - port: 6379
    selector:
        name: redis
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇