温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

kubectl && YAML,深入理解pod对象(下)

发布时间:2020-02-14 11:10:48 来源:网络 阅读:1286 作者:陈继松 栏目:系统运维

kubectl && YAML,深入理解pod对象(下)

kubectl && YAML,深入理解pod对象(下)

kubectl && YAML,深入理解pod对象(下)

kubectl && YAML,深入理解pod对象(下)

kubectl && YAML,深入理解pod对象(下)


查看api的版本

[root@k8s-master src]# kubectl api-versions

admissionregistration.k8s.io/v1

admissionregistration.k8s.io/v1beta1

apiextensions.k8s.io/v1

apiextensions.k8s.io/v1beta1

apiregistration.k8s.io/v1

apiregistration.k8s.io/v1beta1

apps/v1

authentication.k8s.io/v1

authentication.k8s.io/v1beta1

authorization.k8s.io/v1

authorization.k8s.io/v1beta1

autoscaling/v1

autoscaling/v2beta1

autoscaling/v2beta2

batch/v1

batch/v1beta1

certificates.k8s.io/v1beta1

coordination.k8s.io/v1

coordination.k8s.io/v1beta1

events.k8s.io/v1beta1

extensions/v1beta1

networking.k8s.io/v1

networking.k8s.io/v1beta1

node.k8s.io/v1beta1

policy/v1beta1

rbac.authorization.k8s.io/v1

rbac.authorization.k8s.io/v1beta1

scheduling.k8s.io/v1

scheduling.k8s.io/v1beta1

storage.k8s.io/v1

storage.k8s.io/v1beta1

v1


[root@k8s-master src]# kubectl --help

kubectl controls the Kubernetes cluster manager.


 Find more information at:

https://kubernetes.io/docs/reference/kubectl/overview/


Basic Commands (Beginner):

  create         Create a resource from a file or from stdin.

  expose         Take a replication controller, service, deployment or pod and

expose it as a new Kubernetes Service

  run            Run a particular image on the cluster

  set            Set specific features on objects


Basic Commands (Intermediate):

  explain        Documentation of resources

  get            Display one or many resources

  edit           Edit a resource on the server

  delete         Delete resources by filenames, stdin, resources and names, or

by resources and label selector


Deploy Commands:

  rollout        Manage the rollout of a resource

  scale          Set a new size for a Deployment, ReplicaSet, Replication

Controller, or Job

  autoscale      Auto-scale a Deployment, ReplicaSet, or ReplicationController


Cluster Management Commands:

  certificate    Modify certificate resources.

  cluster-info   Display cluster info

  top            Display Resource (CPU/Memory/Storage) usage.

  cordon         Mark node as unschedulable

  uncordon       Mark node as schedulable

  drain          Drain node in preparation for maintenance

  taint          Update the taints on one or more nodes


Troubleshooting and Debugging Commands:

  describe       Show details of a specific resource or group of resources

  logs           Print the logs for a container in a pod

  attach         Attach to a running container

  exec           Execute a command in a container

  port-forward   Forward one or more local ports to a pod

  proxy          Run a proxy to the Kubernetes API server

  cp             Copy files and directories to and from containers.

  auth           Inspect authorization


Advanced Commands:

  diff           Diff live version against would-be applied version

  apply          Apply a configuration to a resource by filename or stdin

  patch          Update field(s) of a resource using strategic merge patch

  replace        Replace a resource by filename or stdin

  wait           Experimental: Wait for a specific condition on one or many

resources.

  convert        Convert config files between different API versions

  kustomize      Build a kustomization target from a directory or a remote url.


Settings Commands:

  label          Update the labels on a resource

  annotate       Update the annotations on a resource

  completion     Output shell completion code for the specified shell (bash or

zsh)


Other Commands:

  api-resources  Print the supported API resources on the server

  api-versions   Print the supported API versions on the server, in the form of

"group/version"

  config         Modify kubeconfig files

  plugin         Provides utilities for interacting with plugins.

  version        Print the client and server version information


Usage:

  kubectl [flags] [options]


Use "kubectl <command> --help" for more information about a given command.

Use "kubectl options" for a list of global command-line options (applies to all

commands).


kubectl && YAML,深入理解pod对象(下)


用run命令生成yaml文件:

[root@k8s-master src]# kubectl create deployment web --image=nginx -o yaml --dry-run > deployment.yaml

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

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: web

  name: web

spec:

  replicas: 1

  selector:

    matchLabels:

      app: web

  strategy: {}

  template:

    metadata:

      labels:

        app: web

    spec:

      containers:

      - image: nginx

        name: nginx

        resources: {}


用get命令导出yaml文件

[root@k8s-master src]# kubectl get deploy  

NAME    READY   UP-TO-DATE   AVAILABLE   AGE

nginx   1/1     1            1           10h

web     0/1     1            0           5m41s

web2    1/1     1            1           7h25m

[root@k8s-master src]# kubectl get deploy web

NAME   READY   UP-TO-DATE   AVAILABLE   AGE

web    0/1     1            0           5m51s

[root@k8s-master src]# kubectl get deploy web -o yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  annotations:

    deployment.kubernetes.io/revision: "1"

  creationTimestamp: "2020-02-12T12:55:39Z"

  generation: 1

  labels:

    app: web

  name: web

  namespace: default

  resourceVersion: "56329"

  selfLink: /apis/apps/v1/namespaces/default/deployments/web

  uid: 74f83717-d28b-404e-a8a2-ed6a6bb601b6

spec:

  progressDeadlineSeconds: 600

  replicas: 1

  revisionHistoryLimit: 10

  selector:

    matchLabels:

      app: web

  strategy:

    rollingUpdate:

      maxSurge: 25%

      maxUnavailable: 25%

    type: RollingUpdate

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: web

    spec:

      containers:

      - image: nginx

        imagePullPolicy: Always

        name: nginx

        resources: {}

        terminationMessagePath: /dev/termination-log

        terminationMessagePolicy: File

      dnsPolicy: ClusterFirst

      restartPolicy: Always

      schedulerName: default-scheduler

      securityContext: {}

      terminationGracePeriodSeconds: 30

status:

  conditions:

  - lastTransitionTime: "2020-02-12T12:55:39Z"

    lastUpdateTime: "2020-02-12T12:55:39Z"

    message: Deployment does not have minimum availability.

    reason: MinimumReplicasUnavailable

    status: "False"

    type: Available

  - lastTransitionTime: "2020-02-12T12:55:39Z"

    lastUpdateTime: "2020-02-12T12:55:39Z"

    message: ReplicaSet "web-d86c95cc9" is progressing.

    reason: ReplicaSetUpdated

    status: "True"

    type: Progressing

  observedGeneration: 1

  replicas: 1

  unavailableReplicas: 1

  updatedReplicas: 1


[root@k8s-master src]# kubectl get deploy web -o yaml --export > deployment2.yaml 

Flag --export has been deprecated, This flag is deprecated and will be removed in future.


注释掉的可以去掉

[root@k8s-master src]# cat deployment2.yaml 

apiVersion: apps/v1

kind: Deployment

metadata:

#  annotations:

#    deployment.kubernetes.io/revision: "1"

#  creationTimestamp: null

#  generation: 1

  labels:

    app: web

  name: web

#  selfLink: /apis/apps/v1/namespaces/default/deployments/web

spec:

#  progressDeadlineSeconds: 600

  replicas: 1

#  revisionHistoryLimit: 10

  selector:

    matchLabels:

      app: web

  strategy:

    rollingUpdate:

      maxSurge: 25%

      maxUnavailable: 25%

    type: RollingUpdate

  template:

    metadata:

#      creationTimestamp: null

      labels:

        app: web

    spec:

      containers:

      - image: nginx

        imagePullPolicy: Always

        name: nginx

        resources: {}

#        terminationMessagePath: /dev/termination-log

#        terminationMessagePolicy: File

#      dnsPolicy: ClusterFirst

      restartPolicy: Always

#      schedulerName: default-scheduler

#      securityContext: {}

#      terminationGracePeriodSeconds: 30

#status: {}


过滤后得出以下文本:

[root@k8s-master src]# grep -Ev "^#" deployment2.yaml 

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: web

  name: web

spec:

  replicas: 1

  selector:

    matchLabels:

      app: web

  strategy:

    rollingUpdate:

      maxSurge: 25%

      maxUnavailable: 25%

    type: RollingUpdate

  template:

    metadata:

      labels:

        app: web

    spec:

      containers:

      - image: nginx

        imagePullPolicy: Always

        name: nginx

        resources: {}

      restartPolicy: Always


[root@k8s-master src]# 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/sig-architecture/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/sig-architecture/api-conventions.md#types-kinds


   metadata     <Object>

     Standard object's metadata. More info:

     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata


   spec <Object>

     Specification of the desired behavior of the pod. More info:

     https://git.k8s.io/community/contributors/devel/sig-architecture/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/sig-architecture/api-conventions.md#spec-and-status



[root@k8s-master src]# kubectl explain pods.spec.containers

KIND:     Pod

VERSION:  v1


RESOURCE: 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        <string>

     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      <string>

     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    <Object>

     Actions that the management system should take in response to container

     lifecycle events. Cannot be updated.


   livenessProbe        <Object>

     Periodic probe of container liveness. Container will be restarted if the

     probe fails. Cannot be updated. More info:

     https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes


   name <string> -required-

     Name of the container specified as a DNS_LABEL. Each container in a pod

     must have a unique name (DNS_LABEL). Cannot be updated.


   ports        <[]Object>

     List of ports to expose from the container. Exposing a port here gives the

     system additional information about the network connections a container

     uses, but is primarily informational. Not specifying a port here DOES NOT

     prevent that port from being exposed. Any port which is listening on the

     default "0.0.0.0" address inside a container will be accessible from the

     network. Cannot be updated.


   readinessProbe       <Object>

     Periodic probe of container service readiness. Container will be removed

     from service endpoints if the probe fails. Cannot be updated. More info:

     https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes


   resources    <Object>

     Compute Resources required by this container. Cannot be updated. More info:

     https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/


   securityContext      <Object>

     Security options the pod should run with. More info:

     https://kubernetes.io/docs/concepts/policy/security-context/ More info:

     https://kubernetes.io/docs/tasks/configure-pod-container/security-context/


   startupProbe <Object>

     StartupProbe indicates that the Pod has successfully initialized. If

     specified, no other probes are executed until this completes successfully.

     If this probe fails, the Pod will be restarted, just as if the

     livenessProbe failed. This can be used to provide different probe

     parameters at the beginning of a Pod's lifecycle, when it might take a long

     time to load data or warm a cache, than during steady-state operation. This

     cannot be updated. This is an alpha feature enabled by the StartupProbe

     feature flag. More info:

     https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes


   stdin        <boolean>

     Whether this container should allocate a buffer for stdin in the container

     runtime. If this is not set, reads from stdin in the container will always

     result in EOF. Default is false.


   stdinOnce    <boolean>

     Whether the container runtime should close the stdin channel after it has

     been opened by a single attach. When stdin is true the stdin stream will

     remain open across multiple attach sessions. If stdinOnce is set to true,

     stdin is opened on container start, is empty until the first client

     attaches to stdin, and then remains open and accepts data until the client

     disconnects, at which time stdin is closed and remains closed until the

     container is restarted. If this flag is false, a container processes that

     reads from stdin will never receive an EOF. Default is false


   terminationMessagePath       <string>

     Optional: Path at which the file to which the container's termination

     message will be written is mounted into the container's filesystem. Message

     written is intended to be brief final status, such as an assertion failure

     message. Will be truncated by the node if greater than 4096 bytes. The

     total message length across all containers will be limited to 12kb.

     Defaults to /dev/termination-log. Cannot be updated.


   terminationMessagePolicy     <string>

     Indicate how the termination message should be populated. File will use the

     contents of terminationMessagePath to populate the container status message

     on both success and failure. FallbackToLogsOnError will use the last chunk

     of container log output if the termination message file is empty and the

     container exited with an error. The log output is limited to 2048 bytes or

     80 lines, whichever is smaller. Defaults to File. Cannot be updated.


   tty  <boolean>

     Whether this container should allocate a TTY for itself, also requires

     'stdin' to be true. Default is false.


   volumeDevices        <[]Object>

     volumeDevices is the list of block devices to be used by the container.

     This is a beta feature.


   volumeMounts <[]Object>

     Pod volumes to mount into the container's filesystem. Cannot be updated.


   workingDir   <string>

     Container's working directory. If not specified, the container runtime's

     default will be used, which might be configured in the container image.

     Cannot be updated.


1:15:00

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI