zoukankan      html  css  js  c++  java
  • Pod资源清单

    一 Pod资源清单

    1 Pod分类(非官方)

    Pod 定义测试Pod
    ReplicationController 副本控制器
    ReplicaSet 副本集控制器
    Deployment 无状态副本集
    StatefulSet 有状态副本集
    DaemonSet 守护Pod
    Job、Cronjob 作业
    HPA:Horizontal Pod Autoscaling
    

    2 Pod的创建方式

    • 基于命令行创建Pod
    • 基于资源清单创建Pod,资源清单为yaml格式

    3 命令行创建Pod

    # kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1 --dry-run=true <测试运行是否报错>
    # kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1 <创建Pod>
    

    4 资源清单

    4.1 资源清单定义获方法

    # kubectl explain pods
    KIND:     Pod
    VERSION:  v1
    
    DESCRIPTION:
         Pod is a collection of containers that can run on a host. This resource is
         created by clients and scheduled onto hosts.
    
    FIELDS:
       apiVersion	<string>
         APIVersion defines the versioned schema of this representation of an
         object. Servers should convert recognized schemas to the latest internal
         value, and may reject unrecognized values. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
    
       kind	<string>
         Kind is a string value representing the REST resource this object
         represents. Servers may infer this from the endpoint the client submits
         requests to. Cannot be updated. In CamelCase. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
    
       metadata	<Object>
         Standard object's metadata. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    
       spec	<Object>
         Specification of the desired behavior of the pod. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
    
       status	<Object>
         Most recently observed status of the pod. This data may not be up to date.
         Populated by the system. Read-only. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
    
    # kubectl explain pods.metadata
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: metadata <Object>
    
    DESCRIPTION:
         Standard object's metadata. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    
         ObjectMeta is metadata that all persisted resources must have, which
         includes all objects users must create.
    
    FIELDS:
       annotations	<map[string]string>
         Annotations is an unstructured key value map stored with a resource that
         may be set by external tools to store and retrieve arbitrary metadata. They
         are not queryable and should be preserved when modifying objects. More
         info: http://kubernetes.io/docs/user-guide/annotations
    
       clusterName	<string>
         The name of the cluster which the object belongs to. This is used to
         distinguish resources with same name and namespace in different clusters.
         This field is not set anywhere right now and apiserver is going to ignore
         it if set in create or update request.
    
    	......
    
       labels	<map[string]string>
         Map of string keys and values that can be used to organize and categorize
         (scope and select) objects. May match selectors of replication controllers
         and services. More info: http://kubernetes.io/docs/user-guide/labels
    
       name	<string>
         Name must be unique within a namespace. Is required when creating
         resources, although some resources may allow a client to request the
         generation of an appropriate name automatically. Name is primarily intended
         for creation idempotence and configuration definition. Cannot be updated.
         More info: http://kubernetes.io/docs/user-guide/identifiers#names
    
       namespace	<string>
         Namespace defines the space within each name must be unique. An empty
         namespace is equivalent to the "default" namespace, but "default" is the
         canonical representation. Not all objects are required to be scoped to a
         namespace - the value of this field for those objects will be empty. Must
         be a DNS_LABEL. Cannot be updated. More info:
         http://kubernetes.io/docs/user-guide/namespaces
    
    	.....
    
    # kubectl explain pods.spec
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: spec <Object>
    
    DESCRIPTION:
         Specification of the desired behavior of the pod. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
    
         PodSpec is a description of a pod.
    
    FIELDS:
       activeDeadlineSeconds	<integer>
         Optional duration in seconds the pod may be active on the node relative to
         StartTime before the system will actively try to mark it failed and kill
         associated containers. Value must be a positive integer.
    
       affinity	<Object>
         If specified, the pod's scheduling constraints
    
       automountServiceAccountToken	<boolean>
         AutomountServiceAccountToken indicates whether a service account token
         should be automatically mounted.
    
       containers	<[]Object> -required-
         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.
    
    	......
    
       volumes	<[]Object>
         List of volumes that can be mounted by containers belonging to the pod.
         More info: https://kubernetes.io/docs/concepts/storage/volumes
    
    # kubectl explain pods.spec.containers
    

    4.2 Pod资源清单

    apiVersion: v1
    kind: Pod
    metadata:
      name: myapp
      namespace: default
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
    

    4.3 ReplicaSet资源清单

    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: myapp
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: myapp
          release: canary
      template:
        metadata:
          name: myapp-pod
          labels: 
            app: myapp
            release: canary
            environment: qa
        spec:
          containers:
          - name: myapp-containers
            image: ikubernetes/myapp:v1
            ports:
            - name: http
              containerPort: 80
    

    4.4 Deployment资源清单

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp-deploy
      namespace: default
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: myapp
          release: canary
      template:
        metadata:
          labels:
            app: myapp
            release: canary
        spec:
          containers:
          - name: myapp
            image: ikubernetes/myapp:v1
            ports:
            - name: http
              containerPort: 80
    

    4.5 DaemonSet资源清单

    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
      name: myapp-ds
      namespace: default
    spec:
      selector:
        matchLabels:
          app: myapp
          release: canary
      template:
        metadata:
          labels:
            app: myapp
            release: canary
        spec:
          containers:
          - name: myapp-containers
            image: ikubernetes/myapp:v2
            ports:
            - name: http
              containerPort: 80
    

    4.6 内网测试环境服务资源清单

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: admin-aws
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          service: aws
          module: admin
      template:
        metadata:
          labels:
            service: aws
            module: admin
        spec:
          containers:
          - name: aws
            image: registry.cn-beijing.aliyuncs.com/sioeye_disney/youle_admin_aws:$COMMITID
            ports:
            - name: http
              containerPort: 8004
            volumeMounts:
            - name: config
              mountPath: /sioeye_apps/workspace/startup_jar.sh
              subPath: startup_jar.sh
            - name: logs
              mountPath: /sioeye_apps/logs
          imagePullSecrets:
          - name: docker-aliyun
          volumes:
          - name: config
            configMap:
              name: config-aws
          - name: logs
            hostPath:
              path: /Sioeye/Data/logs/youle_admin_aws
              type: DirectoryOrCreate
    
  • 相关阅读:
    Eclipse常用快捷键
    java中构造方法及其作用
    jsp的验证码实现
    request.getParameter()与request.setAttribute()的区别 (转载)
    HTML表单操作的记录
    Java Collection(转载)
    Java中StringBuffer类append方法的使用
    java中string.trim()函数的使用
    doGet与doPost的区别
    celery
  • 原文地址:https://www.cnblogs.com/evescn/p/12260181.html
Copyright © 2011-2022 走看看