github.com/aclisp/heapster@v0.19.2-0.20160613100040-51756f899a96/Godeps/_workspace/src/k8s.io/kubernetes/pkg/api/v1/generated.proto (about) 1 /* 2 Copyright 2016 The Kubernetes Authors All rights reserved. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 18 // This file was autogenerated by go-to-protobuf. Do not edit it manually! 19 20 syntax = 'proto2'; 21 22 package k8s.io.kubernetes.pkg.api.v1; 23 24 import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; 25 import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; 26 import "k8s.io/kubernetes/pkg/runtime/generated.proto"; 27 import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; 28 29 // Package-wide variables from generator "generated". 30 option go_package = "v1"; 31 32 // Represents a Persistent Disk resource in AWS. 33 // 34 // An AWS EBS disk must exist before mounting to a container. The disk 35 // must also be in the same AWS zone as the kubelet. An AWS EBS disk 36 // can only be mounted as read/write once. AWS EBS volumes support 37 // ownership management and SELinux relabeling. 38 message AWSElasticBlockStoreVolumeSource { 39 // Unique ID of the persistent disk resource in AWS (Amazon EBS volume). 40 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore 41 optional string volumeID = 1; 42 43 // Filesystem type of the volume that you want to mount. 44 // Tip: Ensure that the filesystem type is supported by the host operating system. 45 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. 46 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore 47 // TODO: how do we prevent errors in the filesystem from compromising the machine 48 optional string fsType = 2; 49 50 // The partition in the volume that you want to mount. 51 // If omitted, the default is to mount by volume name. 52 // Examples: For volume /dev/sda1, you specify the partition as "1". 53 // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). 54 optional int32 partition = 3; 55 56 // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". 57 // If omitted, the default is "false". 58 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore 59 optional bool readOnly = 4; 60 } 61 62 // Affinity is a group of affinity scheduling rules. 63 message Affinity { 64 // Describes node affinity scheduling rules for the pod. 65 optional NodeAffinity nodeAffinity = 1; 66 67 // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). 68 optional PodAffinity podAffinity = 2; 69 70 // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). 71 optional PodAntiAffinity podAntiAffinity = 3; 72 } 73 74 // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. 75 message AzureFileVolumeSource { 76 // the name of secret that contains Azure Storage Account Name and Key 77 optional string secretName = 1; 78 79 // Share Name 80 optional string shareName = 2; 81 82 // Defaults to false (read/write). ReadOnly here will force 83 // the ReadOnly setting in VolumeMounts. 84 optional bool readOnly = 3; 85 } 86 87 // Binding ties one object to another. 88 // For example, a pod is bound to a node by a scheduler. 89 message Binding { 90 // Standard object's metadata. 91 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 92 optional ObjectMeta metadata = 1; 93 94 // The target object that you want to bind to the standard object. 95 optional ObjectReference target = 2; 96 } 97 98 // Adds and removes POSIX capabilities from running containers. 99 message Capabilities { 100 // Added capabilities 101 repeated string add = 1; 102 103 // Removed capabilities 104 repeated string drop = 2; 105 } 106 107 // Represents a Ceph Filesystem mount that lasts the lifetime of a pod 108 // Cephfs volumes do not support ownership management or SELinux relabeling. 109 message CephFSVolumeSource { 110 // Required: Monitors is a collection of Ceph monitors 111 // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it 112 repeated string monitors = 1; 113 114 // Optional: Used as the mounted root, rather than the full Ceph tree, default is / 115 optional string path = 2; 116 117 // Optional: User is the rados user name, default is admin 118 // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it 119 optional string user = 3; 120 121 // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret 122 // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it 123 optional string secretFile = 4; 124 125 // Optional: SecretRef is reference to the authentication secret for User, default is empty. 126 // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it 127 optional LocalObjectReference secretRef = 5; 128 129 // Optional: Defaults to false (read/write). ReadOnly here will force 130 // the ReadOnly setting in VolumeMounts. 131 // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it 132 optional bool readOnly = 6; 133 } 134 135 // Represents a cinder volume resource in Openstack. 136 // A Cinder volume must exist before mounting to a container. 137 // The volume must also be in the same region as the kubelet. 138 // Cinder volumes support ownership management and SELinux relabeling. 139 message CinderVolumeSource { 140 // volume id used to identify the volume in cinder 141 // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md 142 optional string volumeID = 1; 143 144 // Filesystem type to mount. 145 // Must be a filesystem type supported by the host operating system. 146 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. 147 // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md 148 optional string fsType = 2; 149 150 // Optional: Defaults to false (read/write). ReadOnly here will force 151 // the ReadOnly setting in VolumeMounts. 152 // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md 153 optional bool readOnly = 3; 154 } 155 156 // Information about the condition of a component. 157 message ComponentCondition { 158 // Type of condition for a component. 159 // Valid value: "Healthy" 160 optional string type = 1; 161 162 // Status of the condition for a component. 163 // Valid values for "Healthy": "True", "False", or "Unknown". 164 optional string status = 2; 165 166 // Message about the condition for a component. 167 // For example, information about a health check. 168 optional string message = 3; 169 170 // Condition error code for a component. 171 // For example, a health check error code. 172 optional string error = 4; 173 } 174 175 // ComponentStatus (and ComponentStatusList) holds the cluster validation info. 176 message ComponentStatus { 177 // Standard object's metadata. 178 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 179 optional ObjectMeta metadata = 1; 180 181 // List of component conditions observed 182 repeated ComponentCondition conditions = 2; 183 } 184 185 // Status of all the conditions for the component as a list of ComponentStatus objects. 186 message ComponentStatusList { 187 // Standard list metadata. 188 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 189 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 190 191 // List of ComponentStatus objects. 192 repeated ComponentStatus items = 2; 193 } 194 195 // ConfigMap holds configuration data for pods to consume. 196 message ConfigMap { 197 // Standard object's metadata. 198 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 199 optional ObjectMeta metadata = 1; 200 201 // Data contains the configuration data. 202 // Each key must be a valid DNS_SUBDOMAIN with an optional leading dot. 203 map<string, string> data = 2; 204 } 205 206 // Selects a key from a ConfigMap. 207 message ConfigMapKeySelector { 208 // The ConfigMap to select from. 209 optional LocalObjectReference localObjectReference = 1; 210 211 // The key to select. 212 optional string key = 2; 213 } 214 215 // ConfigMapList is a resource containing a list of ConfigMap objects. 216 message ConfigMapList { 217 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 218 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 219 220 // Items is the list of ConfigMaps. 221 repeated ConfigMap items = 2; 222 } 223 224 // Adapts a ConfigMap into a volume. 225 // 226 // The contents of the target ConfigMap's Data field will be presented in a 227 // volume as files using the keys in the Data field as the file names, unless 228 // the items element is populated with specific mappings of keys to paths. 229 // ConfigMap volumes support ownership management and SELinux relabeling. 230 message ConfigMapVolumeSource { 231 optional LocalObjectReference localObjectReference = 1; 232 233 // If unspecified, each key-value pair in the Data field of the referenced 234 // ConfigMap will be projected into the volume as a file whose name is the 235 // key and content is the value. If specified, the listed keys will be 236 // projected into the specified paths, and unlisted keys will not be 237 // present. If a key is specified which is not present in the ConfigMap, 238 // the volume setup will error. Paths must be relative and may not contain 239 // the '..' path or start with '..'. 240 repeated KeyToPath items = 2; 241 } 242 243 // A single application container that you want to run within a pod. 244 message Container { 245 // Name of the container specified as a DNS_LABEL. 246 // Each container in a pod must have a unique name (DNS_LABEL). 247 // Cannot be updated. 248 optional string name = 1; 249 250 // Docker image name. 251 // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md 252 optional string image = 2; 253 254 // Entrypoint array. Not executed within a shell. 255 // The docker image's ENTRYPOINT is used if this is not provided. 256 // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable 257 // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax 258 // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, 259 // regardless of whether the variable exists or not. 260 // Cannot be updated. 261 // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands 262 repeated string command = 3; 263 264 // Arguments to the entrypoint. 265 // The docker image's CMD is used if this is not provided. 266 // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable 267 // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax 268 // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, 269 // regardless of whether the variable exists or not. 270 // Cannot be updated. 271 // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands 272 repeated string args = 4; 273 274 // Container's working directory. 275 // If not specified, the container runtime's default will be used, which 276 // might be configured in the container image. 277 // Cannot be updated. 278 optional string workingDir = 5; 279 280 // List of ports to expose from the container. Exposing a port here gives 281 // the system additional information about the network connections a 282 // container uses, but is primarily informational. Not specifying a port here 283 // DOES NOT prevent that port from being exposed. Any port which is 284 // listening on the default "0.0.0.0" address inside a container will be 285 // accessible from the network. 286 // Cannot be updated. 287 repeated ContainerPort ports = 6; 288 289 // List of environment variables to set in the container. 290 // Cannot be updated. 291 repeated EnvVar env = 7; 292 293 // Compute Resources required by this container. 294 // Cannot be updated. 295 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources 296 optional ResourceRequirements resources = 8; 297 298 // Pod volumes to mount into the container's filesyste. 299 // Cannot be updated. 300 repeated VolumeMount volumeMounts = 9; 301 302 // Periodic probe of container liveness. 303 // Container will be restarted if the probe fails. 304 // Cannot be updated. 305 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes 306 optional Probe livenessProbe = 10; 307 308 // Periodic probe of container service readiness. 309 // Container will be removed from service endpoints if the probe fails. 310 // Cannot be updated. 311 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes 312 optional Probe readinessProbe = 11; 313 314 // Actions that the management system should take in response to container lifecycle events. 315 // Cannot be updated. 316 optional Lifecycle lifecycle = 12; 317 318 // Optional: Path at which the file to which the container's termination message 319 // will be written is mounted into the container's filesystem. 320 // Message written is intended to be brief final status, such as an assertion failure message. 321 // Defaults to /dev/termination-log. 322 // Cannot be updated. 323 optional string terminationMessagePath = 13; 324 325 // Image pull policy. 326 // One of Always, Never, IfNotPresent. 327 // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. 328 // Cannot be updated. 329 // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#updating-images 330 optional string imagePullPolicy = 14; 331 332 // Security options the pod should run with. 333 // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md 334 optional SecurityContext securityContext = 15; 335 336 // Whether this container should allocate a buffer for stdin in the container runtime. If this 337 // is not set, reads from stdin in the container will always result in EOF. 338 // Default is false. 339 optional bool stdin = 16; 340 341 // Whether the container runtime should close the stdin channel after it has been opened by 342 // a single attach. When stdin is true the stdin stream will remain open across multiple attach 343 // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the 344 // first client attaches to stdin, and then remains open and accepts data until the client disconnects, 345 // at which time stdin is closed and remains closed until the container is restarted. If this 346 // flag is false, a container processes that reads from stdin will never receive an EOF. 347 // Default is false 348 optional bool stdinOnce = 17; 349 350 // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. 351 // Default is false. 352 optional bool tty = 18; 353 } 354 355 // Describe a container image 356 message ContainerImage { 357 // Names by which this image is known. 358 // e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"] 359 repeated string names = 1; 360 361 // The size of the image in bytes. 362 optional int64 sizeBytes = 2; 363 } 364 365 // ContainerPort represents a network port in a single container. 366 message ContainerPort { 367 // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each 368 // named port in a pod must have a unique name. Name for the port that can be 369 // referred to by services. 370 optional string name = 1; 371 372 // Number of port to expose on the host. 373 // If specified, this must be a valid port number, 0 < x < 65536. 374 // If HostNetwork is specified, this must match ContainerPort. 375 // Most containers do not need this. 376 optional int32 hostPort = 2; 377 378 // Number of port to expose on the pod's IP address. 379 // This must be a valid port number, 0 < x < 65536. 380 optional int32 containerPort = 3; 381 382 // Protocol for port. Must be UDP or TCP. 383 // Defaults to "TCP". 384 optional string protocol = 4; 385 386 // What host IP to bind the external port to. 387 optional string hostIP = 5; 388 } 389 390 // ContainerState holds a possible state of container. 391 // Only one of its members may be specified. 392 // If none of them is specified, the default one is ContainerStateWaiting. 393 message ContainerState { 394 // Details about a waiting container 395 optional ContainerStateWaiting waiting = 1; 396 397 // Details about a running container 398 optional ContainerStateRunning running = 2; 399 400 // Details about a terminated container 401 optional ContainerStateTerminated terminated = 3; 402 } 403 404 // ContainerStateRunning is a running state of a container. 405 message ContainerStateRunning { 406 // Time at which the container was last (re-)started 407 optional k8s.io.kubernetes.pkg.api.unversioned.Time startedAt = 1; 408 } 409 410 // ContainerStateTerminated is a terminated state of a container. 411 message ContainerStateTerminated { 412 // Exit status from the last termination of the container 413 optional int32 exitCode = 1; 414 415 // Signal from the last termination of the container 416 optional int32 signal = 2; 417 418 // (brief) reason from the last termination of the container 419 optional string reason = 3; 420 421 // Message regarding the last termination of the container 422 optional string message = 4; 423 424 // Time at which previous execution of the container started 425 optional k8s.io.kubernetes.pkg.api.unversioned.Time startedAt = 5; 426 427 // Time at which the container last terminated 428 optional k8s.io.kubernetes.pkg.api.unversioned.Time finishedAt = 6; 429 430 // Container's ID in the format 'docker://<container_id>' 431 optional string containerID = 7; 432 } 433 434 // ContainerStateWaiting is a waiting state of a container. 435 message ContainerStateWaiting { 436 // (brief) reason the container is not yet running. 437 optional string reason = 1; 438 439 // Message regarding why the container is not yet running. 440 optional string message = 2; 441 } 442 443 // ContainerStatus contains details for the current status of this container. 444 message ContainerStatus { 445 // This must be a DNS_LABEL. Each container in a pod must have a unique name. 446 // Cannot be updated. 447 optional string name = 1; 448 449 // Details about the container's current condition. 450 optional ContainerState state = 2; 451 452 // Details about the container's last termination condition. 453 optional ContainerState lastState = 3; 454 455 // Specifies whether the container has passed its readiness probe. 456 optional bool ready = 4; 457 458 // The number of times the container has been restarted, currently based on 459 // the number of dead containers that have not yet been removed. 460 // Note that this is calculated from dead containers. But those containers are subject to 461 // garbage collection. This value will get capped at 5 by GC. 462 optional int32 restartCount = 5; 463 464 // The image the container is running. 465 // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md 466 // TODO(dchen1107): Which image the container is running with? 467 optional string image = 6; 468 469 // ImageID of the container's image. 470 optional string imageID = 7; 471 472 // Container's ID in the format 'docker://<container_id>'. 473 // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#container-information 474 optional string containerID = 8; 475 } 476 477 // DaemonEndpoint contains information about a single Daemon endpoint. 478 message DaemonEndpoint { 479 // Port number of the given endpoint. 480 optional int32 Port = 1; 481 } 482 483 // DeleteOptions may be provided when deleting an API object 484 message DeleteOptions { 485 // The duration in seconds before the object should be deleted. Value must be non-negative integer. 486 // The value zero indicates delete immediately. If this value is nil, the default grace period for the 487 // specified type will be used. 488 // Defaults to a per object value if not specified. zero means delete immediately. 489 optional int64 gracePeriodSeconds = 1; 490 491 // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be 492 // returned. 493 optional Preconditions preconditions = 2; 494 495 // Should the dependent objects be orphaned. If true/false, the "orphan" 496 // finalizer will be added to/removed from the object's finalizers list. 497 optional bool orphanDependents = 3; 498 } 499 500 // DownwardAPIVolumeFile represents information to create the file containing the pod field 501 message DownwardAPIVolumeFile { 502 // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' 503 optional string path = 1; 504 505 // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. 506 optional ObjectFieldSelector fieldRef = 2; 507 } 508 509 // DownwardAPIVolumeSource represents a volume containing downward API info. 510 // Downward API volumes support ownership management and SELinux relabeling. 511 message DownwardAPIVolumeSource { 512 // Items is a list of downward API volume file 513 repeated DownwardAPIVolumeFile items = 1; 514 } 515 516 // Represents an empty directory for a pod. 517 // Empty directory volumes support ownership management and SELinux relabeling. 518 message EmptyDirVolumeSource { 519 // What type of storage medium should back this directory. 520 // The default is "" which means to use the node's default medium. 521 // Must be an empty string (default) or Memory. 522 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir 523 optional string medium = 1; 524 } 525 526 // EndpointAddress is a tuple that describes single IP address. 527 message EndpointAddress { 528 // The IP of this endpoint. 529 // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), 530 // or link-local multicast ((224.0.0.0/24). 531 // IPv6 is also accepted but not fully supported on all platforms. Also, certain 532 // kubernetes components, like kube-proxy, are not IPv6 ready. 533 // TODO: This should allow hostname or IP, See #4447. 534 optional string ip = 1; 535 536 // The Hostname of this endpoint 537 optional string hostname = 3; 538 539 // Reference to object providing the endpoint. 540 optional ObjectReference targetRef = 2; 541 } 542 543 // EndpointPort is a tuple that describes a single port. 544 message EndpointPort { 545 // The name of this port (corresponds to ServicePort.Name). 546 // Must be a DNS_LABEL. 547 // Optional only if one port is defined. 548 optional string name = 1; 549 550 // The port number of the endpoint. 551 optional int32 port = 2; 552 553 // The IP protocol for this port. 554 // Must be UDP or TCP. 555 // Default is TCP. 556 optional string protocol = 3; 557 } 558 559 // EndpointSubset is a group of addresses with a common set of ports. The 560 // expanded set of endpoints is the Cartesian product of Addresses x Ports. 561 // For example, given: 562 // { 563 // Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], 564 // Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] 565 // } 566 // The resulting set of endpoints can be viewed as: 567 // a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], 568 // b: [ 10.10.1.1:309, 10.10.2.2:309 ] 569 message EndpointSubset { 570 // IP addresses which offer the related ports that are marked as ready. These endpoints 571 // should be considered safe for load balancers and clients to utilize. 572 repeated EndpointAddress addresses = 1; 573 574 // IP addresses which offer the related ports but are not currently marked as ready 575 // because they have not yet finished starting, have recently failed a readiness check, 576 // or have recently failed a liveness check. 577 repeated EndpointAddress notReadyAddresses = 2; 578 579 // Port numbers available on the related IP addresses. 580 repeated EndpointPort ports = 3; 581 } 582 583 // Endpoints is a collection of endpoints that implement the actual service. Example: 584 // Name: "mysvc", 585 // Subsets: [ 586 // { 587 // Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], 588 // Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] 589 // }, 590 // { 591 // Addresses: [{"ip": "10.10.3.3"}], 592 // Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] 593 // }, 594 // ] 595 message Endpoints { 596 // Standard object's metadata. 597 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 598 optional ObjectMeta metadata = 1; 599 600 // The set of all endpoints is the union of all subsets. Addresses are placed into 601 // subsets according to the IPs they share. A single address with multiple ports, 602 // some of which are ready and some of which are not (because they come from 603 // different containers) will result in the address being displayed in different 604 // subsets for the different ports. No address will appear in both Addresses and 605 // NotReadyAddresses in the same subset. 606 // Sets of addresses and ports that comprise a service. 607 repeated EndpointSubset subsets = 2; 608 } 609 610 // EndpointsList is a list of endpoints. 611 message EndpointsList { 612 // Standard list metadata. 613 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 614 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 615 616 // List of endpoints. 617 repeated Endpoints items = 2; 618 } 619 620 // EnvVar represents an environment variable present in a Container. 621 message EnvVar { 622 // Name of the environment variable. Must be a C_IDENTIFIER. 623 optional string name = 1; 624 625 // Variable references $(VAR_NAME) are expanded 626 // using the previous defined environment variables in the container and 627 // any service environment variables. If a variable cannot be resolved, 628 // the reference in the input string will be unchanged. The $(VAR_NAME) 629 // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped 630 // references will never be expanded, regardless of whether the variable 631 // exists or not. 632 // Defaults to "". 633 optional string value = 2; 634 635 // Source for the environment variable's value. Cannot be used if value is not empty. 636 optional EnvVarSource valueFrom = 3; 637 } 638 639 // EnvVarSource represents a source for the value of an EnvVar. 640 message EnvVarSource { 641 // Selects a field of the pod; only name and namespace are supported. 642 optional ObjectFieldSelector fieldRef = 1; 643 644 // Selects a key of a ConfigMap. 645 optional ConfigMapKeySelector configMapKeyRef = 2; 646 647 // Selects a key of a secret in the pod's namespace 648 optional SecretKeySelector secretKeyRef = 3; 649 } 650 651 // Event is a report of an event somewhere in the cluster. 652 // TODO: Decide whether to store these separately or with the object they apply to. 653 message Event { 654 // Standard object's metadata. 655 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 656 optional ObjectMeta metadata = 1; 657 658 // The object that this event is about. 659 optional ObjectReference involvedObject = 2; 660 661 // This should be a short, machine understandable string that gives the reason 662 // for the transition into the object's current status. 663 // TODO: provide exact specification for format. 664 optional string reason = 3; 665 666 // A human-readable description of the status of this operation. 667 // TODO: decide on maximum length. 668 optional string message = 4; 669 670 // The component reporting this event. Should be a short machine understandable string. 671 optional EventSource source = 5; 672 673 // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) 674 optional k8s.io.kubernetes.pkg.api.unversioned.Time firstTimestamp = 6; 675 676 // The time at which the most recent occurrence of this event was recorded. 677 optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTimestamp = 7; 678 679 // The number of times this event has occurred. 680 optional int32 count = 8; 681 682 // Type of this event (Normal, Warning), new types could be added in the future 683 optional string type = 9; 684 } 685 686 // EventList is a list of events. 687 message EventList { 688 // Standard list metadata. 689 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 690 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 691 692 // List of events 693 repeated Event items = 2; 694 } 695 696 // EventSource contains information for an event. 697 message EventSource { 698 // Component from which the event is generated. 699 optional string component = 1; 700 701 // Host name on which the event is generated. 702 optional string host = 2; 703 } 704 705 // ExecAction describes a "run in container" action. 706 message ExecAction { 707 // Command is the command line to execute inside the container, the working directory for the 708 // command is root ('/') in the container's filesystem. The command is simply exec'd, it is 709 // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use 710 // a shell, you need to explicitly call out to that shell. 711 // Exit status of 0 is treated as live/healthy and non-zero is unhealthy. 712 repeated string command = 1; 713 } 714 715 // ExportOptions is the query options to the standard REST get call. 716 message ExportOptions { 717 // Should this value be exported. Export strips fields that a user can not specify. 718 optional bool export = 1; 719 720 // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' 721 optional bool exact = 2; 722 } 723 724 // Represents a Fibre Channel volume. 725 // Fibre Channel volumes can only be mounted as read/write once. 726 // Fibre Channel volumes support ownership management and SELinux relabeling. 727 message FCVolumeSource { 728 // Required: FC target world wide names (WWNs) 729 repeated string targetWWNs = 1; 730 731 // Required: FC target lun number 732 optional int32 lun = 2; 733 734 // Filesystem type to mount. 735 // Must be a filesystem type supported by the host operating system. 736 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. 737 // TODO: how do we prevent errors in the filesystem from compromising the machine 738 optional string fsType = 3; 739 740 // Optional: Defaults to false (read/write). ReadOnly here will force 741 // the ReadOnly setting in VolumeMounts. 742 optional bool readOnly = 4; 743 } 744 745 // FlexVolume represents a generic volume resource that is 746 // provisioned/attached using a exec based plugin. This is an alpha feature and may change in future. 747 message FlexVolumeSource { 748 // Driver is the name of the driver to use for this volume. 749 optional string driver = 1; 750 751 // Filesystem type to mount. 752 // Must be a filesystem type supported by the host operating system. 753 // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. 754 optional string fsType = 2; 755 756 // Optional: SecretRef is reference to the secret object containing 757 // sensitive information to pass to the plugin scripts. This may be 758 // empty if no secret object is specified. If the secret object 759 // contains more than one secret, all secrets are passed to the plugin 760 // scripts. 761 optional LocalObjectReference secretRef = 3; 762 763 // Optional: Defaults to false (read/write). ReadOnly here will force 764 // the ReadOnly setting in VolumeMounts. 765 optional bool readOnly = 4; 766 767 // Optional: Extra command options if any. 768 map<string, string> options = 5; 769 } 770 771 // Represents a Flocker volume mounted by the Flocker agent. 772 // Flocker volumes do not support ownership management or SELinux relabeling. 773 message FlockerVolumeSource { 774 // Required: the volume name. This is going to be store on metadata -> name on the payload for Flocker 775 optional string datasetName = 1; 776 } 777 778 // Represents a Persistent Disk resource in Google Compute Engine. 779 // 780 // A GCE PD must exist before mounting to a container. The disk must 781 // also be in the same GCE project and zone as the kubelet. A GCE PD 782 // can only be mounted as read/write once or read-only many times. GCE 783 // PDs support ownership management and SELinux relabeling. 784 message GCEPersistentDiskVolumeSource { 785 // Unique name of the PD resource in GCE. Used to identify the disk in GCE. 786 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk 787 optional string pdName = 1; 788 789 // Filesystem type of the volume that you want to mount. 790 // Tip: Ensure that the filesystem type is supported by the host operating system. 791 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. 792 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk 793 // TODO: how do we prevent errors in the filesystem from compromising the machine 794 optional string fsType = 2; 795 796 // The partition in the volume that you want to mount. 797 // If omitted, the default is to mount by volume name. 798 // Examples: For volume /dev/sda1, you specify the partition as "1". 799 // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). 800 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk 801 optional int32 partition = 3; 802 803 // ReadOnly here will force the ReadOnly setting in VolumeMounts. 804 // Defaults to false. 805 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk 806 optional bool readOnly = 4; 807 } 808 809 // Represents a volume that is populated with the contents of a git repository. 810 // Git repo volumes do not support ownership management. 811 // Git repo volumes support SELinux relabeling. 812 message GitRepoVolumeSource { 813 // Repository URL 814 optional string repository = 1; 815 816 // Commit hash for the specified revision. 817 optional string revision = 2; 818 819 // Target directory name. 820 // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the 821 // git repository. Otherwise, if specified, the volume will contain the git repository in 822 // the subdirectory with the given name. 823 optional string directory = 3; 824 } 825 826 // Represents a Glusterfs mount that lasts the lifetime of a pod. 827 // Glusterfs volumes do not support ownership management or SELinux relabeling. 828 message GlusterfsVolumeSource { 829 // EndpointsName is the endpoint name that details Glusterfs topology. 830 // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md#create-a-pod 831 optional string endpoints = 1; 832 833 // Path is the Glusterfs volume path. 834 // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md#create-a-pod 835 optional string path = 2; 836 837 // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. 838 // Defaults to false. 839 // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md#create-a-pod 840 optional bool readOnly = 3; 841 } 842 843 // HTTPGetAction describes an action based on HTTP Get requests. 844 message HTTPGetAction { 845 // Path to access on the HTTP server. 846 optional string path = 1; 847 848 // Name or number of the port to access on the container. 849 // Number must be in the range 1 to 65535. 850 // Name must be an IANA_SVC_NAME. 851 optional k8s.io.kubernetes.pkg.util.intstr.IntOrString port = 2; 852 853 // Host name to connect to, defaults to the pod IP. You probably want to set 854 // "Host" in httpHeaders instead. 855 optional string host = 3; 856 857 // Scheme to use for connecting to the host. 858 // Defaults to HTTP. 859 optional string scheme = 4; 860 861 // Custom headers to set in the request. HTTP allows repeated headers. 862 repeated HTTPHeader httpHeaders = 5; 863 } 864 865 // HTTPHeader describes a custom header to be used in HTTP probes 866 message HTTPHeader { 867 // The header field name 868 optional string name = 1; 869 870 // The header field value 871 optional string value = 2; 872 } 873 874 // Handler defines a specific action that should be taken 875 // TODO: pass structured data to these actions, and document that data here. 876 message Handler { 877 // One and only one of the following should be specified. 878 // Exec specifies the action to take. 879 optional ExecAction exec = 1; 880 881 // HTTPGet specifies the http request to perform. 882 optional HTTPGetAction httpGet = 2; 883 884 // TCPSocket specifies an action involving a TCP port. 885 // TCP hooks not yet supported 886 // TODO: implement a realistic TCP lifecycle hook 887 optional TCPSocketAction tcpSocket = 3; 888 } 889 890 // Represents a host path mapped into a pod. 891 // Host path volumes do not support ownership management or SELinux relabeling. 892 message HostPathVolumeSource { 893 // Path of the directory on the host. 894 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath 895 optional string path = 1; 896 } 897 898 // Represents an ISCSI disk. 899 // ISCSI volumes can only be mounted as read/write once. 900 // ISCSI volumes support ownership management and SELinux relabeling. 901 message ISCSIVolumeSource { 902 // iSCSI target portal. The portal is either an IP or ip_addr:port if the port 903 // is other than default (typically TCP ports 860 and 3260). 904 optional string targetPortal = 1; 905 906 // Target iSCSI Qualified Name. 907 optional string iqn = 2; 908 909 // iSCSI target lun number. 910 optional int32 lun = 3; 911 912 // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. 913 optional string iscsiInterface = 4; 914 915 // Filesystem type of the volume that you want to mount. 916 // Tip: Ensure that the filesystem type is supported by the host operating system. 917 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. 918 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#iscsi 919 // TODO: how do we prevent errors in the filesystem from compromising the machine 920 optional string fsType = 5; 921 922 // ReadOnly here will force the ReadOnly setting in VolumeMounts. 923 // Defaults to false. 924 optional bool readOnly = 6; 925 } 926 927 // Maps a string key to a path within a volume. 928 message KeyToPath { 929 // The key to project. 930 optional string key = 1; 931 932 // The relative path of the file to map the key to. 933 // May not be an absolute path. 934 // May not contain the path element '..'. 935 // May not start with the string '..'. 936 optional string path = 2; 937 } 938 939 // Lifecycle describes actions that the management system should take in response to container lifecycle 940 // events. For the PostStart and PreStop lifecycle handlers, management of the container blocks 941 // until the action is complete, unless the container process fails, in which case the handler is aborted. 942 message Lifecycle { 943 // PostStart is called immediately after a container is created. If the handler fails, 944 // the container is terminated and restarted according to its restart policy. 945 // Other management of the container blocks until the hook completes. 946 // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details 947 optional Handler postStart = 1; 948 949 // PreStop is called immediately before a container is terminated. 950 // The container is terminated after the handler completes. 951 // The reason for termination is passed to the handler. 952 // Regardless of the outcome of the handler, the container is eventually terminated. 953 // Other management of the container blocks until the hook completes. 954 // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details 955 optional Handler preStop = 2; 956 } 957 958 // LimitRange sets resource usage limits for each kind of resource in a Namespace. 959 message LimitRange { 960 // Standard object's metadata. 961 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 962 optional ObjectMeta metadata = 1; 963 964 // Spec defines the limits enforced. 965 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 966 optional LimitRangeSpec spec = 2; 967 } 968 969 // LimitRangeItem defines a min/max usage limit for any resource that matches on kind. 970 message LimitRangeItem { 971 // Type of resource that this limit applies to. 972 optional string type = 1; 973 974 // Max usage constraints on this kind by resource name. 975 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> max = 2; 976 977 // Min usage constraints on this kind by resource name. 978 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> min = 3; 979 980 // Default resource requirement limit value by resource name if resource limit is omitted. 981 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> default = 4; 982 983 // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. 984 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> defaultRequest = 5; 985 986 // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. 987 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> maxLimitRequestRatio = 6; 988 } 989 990 // LimitRangeList is a list of LimitRange items. 991 message LimitRangeList { 992 // Standard list metadata. 993 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 994 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 995 996 // Items is a list of LimitRange objects. 997 // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md 998 repeated LimitRange items = 2; 999 } 1000 1001 // LimitRangeSpec defines a min/max usage limit for resources that match on kind. 1002 message LimitRangeSpec { 1003 // Limits is the list of LimitRangeItem objects that are enforced. 1004 repeated LimitRangeItem limits = 1; 1005 } 1006 1007 // List holds a list of objects, which may not be known by the server. 1008 message List { 1009 // Standard list metadata. 1010 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1011 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 1012 1013 // List of objects 1014 repeated k8s.io.kubernetes.pkg.runtime.RawExtension items = 2; 1015 } 1016 1017 // ListOptions is the query options to a standard REST list call. 1018 message ListOptions { 1019 // A selector to restrict the list of returned objects by their labels. 1020 // Defaults to everything. 1021 optional string labelSelector = 1; 1022 1023 // A selector to restrict the list of returned objects by their fields. 1024 // Defaults to everything. 1025 optional string fieldSelector = 2; 1026 1027 // Watch for changes to the described resources and return them as a stream of 1028 // add, update, and remove notifications. Specify resourceVersion. 1029 optional bool watch = 3; 1030 1031 // When specified with a watch call, shows changes that occur after that particular version of a resource. 1032 // Defaults to changes from the beginning of history. 1033 optional string resourceVersion = 4; 1034 1035 // Timeout for the list/watch call. 1036 optional int64 timeoutSeconds = 5; 1037 } 1038 1039 // LoadBalancerIngress represents the status of a load-balancer ingress point: 1040 // traffic intended for the service should be sent to an ingress point. 1041 message LoadBalancerIngress { 1042 // IP is set for load-balancer ingress points that are IP based 1043 // (typically GCE or OpenStack load-balancers) 1044 optional string ip = 1; 1045 1046 // Hostname is set for load-balancer ingress points that are DNS based 1047 // (typically AWS load-balancers) 1048 optional string hostname = 2; 1049 } 1050 1051 // LoadBalancerStatus represents the status of a load-balancer. 1052 message LoadBalancerStatus { 1053 // Ingress is a list containing ingress points for the load-balancer. 1054 // Traffic intended for the service should be sent to these ingress points. 1055 repeated LoadBalancerIngress ingress = 1; 1056 } 1057 1058 // LocalObjectReference contains enough information to let you locate the 1059 // referenced object inside the same namespace. 1060 message LocalObjectReference { 1061 // Name of the referent. 1062 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names 1063 // TODO: Add other useful fields. apiVersion, kind, uid? 1064 optional string name = 1; 1065 } 1066 1067 // Represents an NFS mount that lasts the lifetime of a pod. 1068 // NFS volumes do not support ownership management or SELinux relabeling. 1069 message NFSVolumeSource { 1070 // Server is the hostname or IP address of the NFS server. 1071 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs 1072 optional string server = 1; 1073 1074 // Path that is exported by the NFS server. 1075 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs 1076 optional string path = 2; 1077 1078 // ReadOnly here will force 1079 // the NFS export to be mounted with read-only permissions. 1080 // Defaults to false. 1081 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs 1082 optional bool readOnly = 3; 1083 } 1084 1085 // Namespace provides a scope for Names. 1086 // Use of multiple namespaces is optional. 1087 message Namespace { 1088 // Standard object's metadata. 1089 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1090 optional ObjectMeta metadata = 1; 1091 1092 // Spec defines the behavior of the Namespace. 1093 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 1094 optional NamespaceSpec spec = 2; 1095 1096 // Status describes the current status of a Namespace. 1097 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 1098 optional NamespaceStatus status = 3; 1099 } 1100 1101 // NamespaceList is a list of Namespaces. 1102 message NamespaceList { 1103 // Standard list metadata. 1104 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1105 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 1106 1107 // Items is the list of Namespace objects in the list. 1108 // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md 1109 repeated Namespace items = 2; 1110 } 1111 1112 // NamespaceSpec describes the attributes on a Namespace. 1113 message NamespaceSpec { 1114 // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. 1115 // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers 1116 repeated string finalizers = 1; 1117 } 1118 1119 // NamespaceStatus is information about the current status of a Namespace. 1120 message NamespaceStatus { 1121 // Phase is the current lifecycle phase of the namespace. 1122 // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases 1123 optional string phase = 1; 1124 } 1125 1126 // Node is a worker node in Kubernetes, formerly known as minion. 1127 // Each node will have a unique identifier in the cache (i.e. in etcd). 1128 message Node { 1129 // Standard object's metadata. 1130 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1131 optional ObjectMeta metadata = 1; 1132 1133 // Spec defines the behavior of a node. 1134 // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 1135 optional NodeSpec spec = 2; 1136 1137 // Most recently observed status of the node. 1138 // Populated by the system. 1139 // Read-only. 1140 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 1141 optional NodeStatus status = 3; 1142 } 1143 1144 // NodeAddress contains information for the node's address. 1145 message NodeAddress { 1146 // Node address type, one of Hostname, ExternalIP or InternalIP. 1147 optional string type = 1; 1148 1149 // The node address. 1150 optional string address = 2; 1151 } 1152 1153 // Node affinity is a group of node affinity scheduling rules. 1154 message NodeAffinity { 1155 // If the affinity requirements specified by this field are not met at 1156 // scheduling time, the pod will not be scheduled onto the node. 1157 // If the affinity requirements specified by this field cease to be met 1158 // at some point during pod execution (e.g. due to an update), the system 1159 // may or may not try to eventually evict the pod from its node. 1160 optional NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1; 1161 1162 // The scheduler will prefer to schedule pods to nodes that satisfy 1163 // the affinity expressions specified by this field, but it may choose 1164 // a node that violates one or more of the expressions. The node that is 1165 // most preferred is the one with the greatest sum of weights, i.e. 1166 // for each node that meets all of the scheduling requirements (resource 1167 // request, requiredDuringScheduling affinity expressions, etc.), 1168 // compute a sum by iterating through the elements of this field and adding 1169 // "weight" to the sum if the node matches the corresponding matchExpressions; the 1170 // node(s) with the highest sum are the most preferred. 1171 repeated PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2; 1172 } 1173 1174 // NodeCondition contains condition infromation for a node. 1175 message NodeCondition { 1176 // Type of node condition. 1177 optional string type = 1; 1178 1179 // Status of the condition, one of True, False, Unknown. 1180 optional string status = 2; 1181 1182 // Last time we got an update on a given condition. 1183 optional k8s.io.kubernetes.pkg.api.unversioned.Time lastHeartbeatTime = 3; 1184 1185 // Last time the condition transit from one status to another. 1186 optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; 1187 1188 // (brief) reason for the condition's last transition. 1189 optional string reason = 5; 1190 1191 // Human readable message indicating details about last transition. 1192 optional string message = 6; 1193 } 1194 1195 // NodeDaemonEndpoints lists ports opened by daemons running on the Node. 1196 message NodeDaemonEndpoints { 1197 // Endpoint on which Kubelet is listening. 1198 optional DaemonEndpoint kubeletEndpoint = 1; 1199 } 1200 1201 // NodeList is the whole list of all Nodes which have been registered with master. 1202 message NodeList { 1203 // Standard list metadata. 1204 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1205 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 1206 1207 // List of nodes 1208 repeated Node items = 2; 1209 } 1210 1211 // NodeProxyOptions is the query options to a Node's proxy call. 1212 message NodeProxyOptions { 1213 // Path is the URL path to use for the current proxy request to node. 1214 optional string path = 1; 1215 } 1216 1217 // A node selector represents the union of the results of one or more label queries 1218 // over a set of nodes; that is, it represents the OR of the selectors represented 1219 // by the node selector terms. 1220 message NodeSelector { 1221 // Required. A list of node selector terms. The terms are ORed. 1222 repeated NodeSelectorTerm nodeSelectorTerms = 1; 1223 } 1224 1225 // A node selector requirement is a selector that contains values, a key, and an operator 1226 // that relates the key and values. 1227 message NodeSelectorRequirement { 1228 // The label key that the selector applies to. 1229 optional string key = 1; 1230 1231 // Represents a key's relationship to a set of values. 1232 // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. 1233 optional string operator = 2; 1234 1235 // An array of string values. If the operator is In or NotIn, 1236 // the values array must be non-empty. If the operator is Exists or DoesNotExist, 1237 // the values array must be empty. If the operator is Gt or Lt, the values 1238 // array must have a single element, which will be interpreted as an integer. 1239 // This array is replaced during a strategic merge patch. 1240 repeated string values = 3; 1241 } 1242 1243 // A null or empty node selector term matches no objects. 1244 message NodeSelectorTerm { 1245 // Required. A list of node selector requirements. The requirements are ANDed. 1246 repeated NodeSelectorRequirement matchExpressions = 1; 1247 } 1248 1249 // NodeSpec describes the attributes that a node is created with. 1250 message NodeSpec { 1251 // PodCIDR represents the pod IP range assigned to the node. 1252 optional string podCIDR = 1; 1253 1254 // External ID of the node assigned by some machine database (e.g. a cloud provider). 1255 // Deprecated. 1256 optional string externalID = 2; 1257 1258 // ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID> 1259 optional string providerID = 3; 1260 1261 // Unschedulable controls node schedulability of new pods. By default, node is schedulable. 1262 // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"` 1263 optional bool unschedulable = 4; 1264 } 1265 1266 // NodeStatus is information about the current status of a node. 1267 message NodeStatus { 1268 // Capacity represents the total resources of a node. 1269 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity for more details. 1270 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> capacity = 1; 1271 1272 // Allocatable represents the resources of a node that are available for scheduling. 1273 // Defaults to Capacity. 1274 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> allocatable = 2; 1275 1276 // NodePhase is the recently observed lifecycle phase of the node. 1277 // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase 1278 optional string phase = 3; 1279 1280 // Conditions is an array of current observed node conditions. 1281 // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition 1282 repeated NodeCondition conditions = 4; 1283 1284 // List of addresses reachable to the node. 1285 // Queried from cloud provider, if available. 1286 // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses 1287 repeated NodeAddress addresses = 5; 1288 1289 // Endpoints of daemons running on the Node. 1290 optional NodeDaemonEndpoints daemonEndpoints = 6; 1291 1292 // Set of ids/uuids to uniquely identify the node. 1293 // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info 1294 optional NodeSystemInfo nodeInfo = 7; 1295 1296 // List of container images on this node 1297 repeated ContainerImage images = 8; 1298 } 1299 1300 // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. 1301 message NodeSystemInfo { 1302 // Machine ID reported by the node. 1303 optional string machineID = 1; 1304 1305 // System UUID reported by the node. 1306 optional string systemUUID = 2; 1307 1308 // Boot ID reported by the node. 1309 optional string bootID = 3; 1310 1311 // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). 1312 optional string kernelVersion = 4; 1313 1314 // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). 1315 optional string osImage = 5; 1316 1317 // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0). 1318 optional string containerRuntimeVersion = 6; 1319 1320 // Kubelet Version reported by the node. 1321 optional string kubeletVersion = 7; 1322 1323 // KubeProxy Version reported by the node. 1324 optional string kubeProxyVersion = 8; 1325 } 1326 1327 // ObjectFieldSelector selects an APIVersioned field of an object. 1328 message ObjectFieldSelector { 1329 // Version of the schema the FieldPath is written in terms of, defaults to "v1". 1330 optional string apiVersion = 1; 1331 1332 // Path of the field to select in the specified API version. 1333 optional string fieldPath = 2; 1334 } 1335 1336 // ObjectMeta is metadata that all persisted resources must have, which includes all objects 1337 // users must create. 1338 message ObjectMeta { 1339 // Name must be unique within a namespace. Is required when creating resources, although 1340 // some resources may allow a client to request the generation of an appropriate name 1341 // automatically. Name is primarily intended for creation idempotence and configuration 1342 // definition. 1343 // Cannot be updated. 1344 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names 1345 optional string name = 1; 1346 1347 // GenerateName is an optional prefix, used by the server, to generate a unique 1348 // name ONLY IF the Name field has not been provided. 1349 // If this field is used, the name returned to the client will be different 1350 // than the name passed. This value will also be combined with a unique suffix. 1351 // The provided value has the same validation rules as the Name field, 1352 // and may be truncated by the length of the suffix required to make the value 1353 // unique on the server. 1354 // 1355 // If this field is specified and the generated name exists, the server will 1356 // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason 1357 // ServerTimeout indicating a unique name could not be found in the time allotted, and the client 1358 // should retry (optionally after the time indicated in the Retry-After header). 1359 // 1360 // Applied only if Name is not specified. 1361 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency 1362 optional string generateName = 2; 1363 1364 // Namespace defines the space within each name must be unique. An empty namespace is 1365 // equivalent to the "default" namespace, but "default" is the canonical representation. 1366 // Not all objects are required to be scoped to a namespace - the value of this field for 1367 // those objects will be empty. 1368 // 1369 // Must be a DNS_LABEL. 1370 // Cannot be updated. 1371 // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md 1372 optional string namespace = 3; 1373 1374 // SelfLink is a URL representing this object. 1375 // Populated by the system. 1376 // Read-only. 1377 optional string selfLink = 4; 1378 1379 // UID is the unique in time and space value for this object. It is typically generated by 1380 // the server on successful creation of a resource and is not allowed to change on PUT 1381 // operations. 1382 // 1383 // Populated by the system. 1384 // Read-only. 1385 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids 1386 optional string uid = 5; 1387 1388 // An opaque value that represents the internal version of this object that can 1389 // be used by clients to determine when objects have changed. May be used for optimistic 1390 // concurrency, change detection, and the watch operation on a resource or set of resources. 1391 // Clients must treat these values as opaque and passed unmodified back to the server. 1392 // They may only be valid for a particular resource or set of resources. 1393 // 1394 // Populated by the system. 1395 // Read-only. 1396 // Value must be treated as opaque by clients and . 1397 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency 1398 optional string resourceVersion = 6; 1399 1400 // A sequence number representing a specific generation of the desired state. 1401 // Populated by the system. Read-only. 1402 optional int64 generation = 7; 1403 1404 // CreationTimestamp is a timestamp representing the server time when this object was 1405 // created. It is not guaranteed to be set in happens-before order across separate operations. 1406 // Clients may not set this value. It is represented in RFC3339 form and is in UTC. 1407 // 1408 // Populated by the system. 1409 // Read-only. 1410 // Null for lists. 1411 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1412 optional k8s.io.kubernetes.pkg.api.unversioned.Time creationTimestamp = 8; 1413 1414 // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This 1415 // field is set by the server when a graceful deletion is requested by the user, and is not 1416 // directly settable by a client. The resource will be deleted (no longer visible from 1417 // resource lists, and not reachable by name) after the time in this field. Once set, this 1418 // value may not be unset or be set further into the future, although it may be shortened 1419 // or the resource may be deleted prior to this time. For example, a user may request that 1420 // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination 1421 // signal to the containers in the pod. Once the resource is deleted in the API, the Kubelet 1422 // will send a hard termination signal to the container. 1423 // If not set, graceful deletion of the object has not been requested. 1424 // 1425 // Populated by the system when a graceful deletion is requested. 1426 // Read-only. 1427 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1428 optional k8s.io.kubernetes.pkg.api.unversioned.Time deletionTimestamp = 9; 1429 1430 // Number of seconds allowed for this object to gracefully terminate before 1431 // it will be removed from the system. Only set when deletionTimestamp is also set. 1432 // May only be shortened. 1433 // Read-only. 1434 optional int64 deletionGracePeriodSeconds = 10; 1435 1436 // Map of string keys and values that can be used to organize and categorize 1437 // (scope and select) objects. May match selectors of replication controllers 1438 // and services. 1439 // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md 1440 // TODO: replace map[string]string with labels.LabelSet type 1441 map<string, string> labels = 11; 1442 1443 // Annotations is an unstructured key value map stored with a resource that may be 1444 // set by external tools to store and retrieve arbitrary metadata. They are not 1445 // queryable and should be preserved when modifying objects. 1446 // More info: http://releases.k8s.io/HEAD/docs/user-guide/annotations.md 1447 map<string, string> annotations = 12; 1448 1449 // List of objects depended by this object. If ALL objects in the list have 1450 // been deleted, this object will be garbage collected. 1451 repeated OwnerReference ownerReferences = 13; 1452 1453 // Must be empty before the object is deleted from the registry. Each entry 1454 // is an identifier for the responsible component that will remove the entry 1455 // from the list. If the deletionTimestamp of the object is non-nil, entries 1456 // in this list can only be removed. 1457 repeated string finalizers = 14; 1458 } 1459 1460 // ObjectReference contains enough information to let you inspect or modify the referred object. 1461 message ObjectReference { 1462 // Kind of the referent. 1463 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1464 optional string kind = 1; 1465 1466 // Namespace of the referent. 1467 // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md 1468 optional string namespace = 2; 1469 1470 // Name of the referent. 1471 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names 1472 optional string name = 3; 1473 1474 // UID of the referent. 1475 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids 1476 optional string uid = 4; 1477 1478 // API version of the referent. 1479 optional string apiVersion = 5; 1480 1481 // Specific resourceVersion to which this reference is made, if any. 1482 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency 1483 optional string resourceVersion = 6; 1484 1485 // If referring to a piece of an object instead of an entire object, this string 1486 // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1487 // For example, if the object reference is to a container within a pod, this would take on a value like: 1488 // "spec.containers{name}" (where "name" refers to the name of the container that triggered 1489 // the event) or if no container name is specified "spec.containers[2]" (container with 1490 // index 2 in this pod). This syntax is chosen only to have some well-defined way of 1491 // referencing a part of an object. 1492 // TODO: this design is not final and this field is subject to change in the future. 1493 optional string fieldPath = 7; 1494 } 1495 1496 // OwnerReference contains enough information to let you identify an owning 1497 // object. Currently, an owning object must be in the same namespace, so there 1498 // is no namespace field. 1499 message OwnerReference { 1500 // API version of the referent. 1501 optional string apiVersion = 5; 1502 1503 // Kind of the referent. 1504 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1505 optional string kind = 1; 1506 1507 // Name of the referent. 1508 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names 1509 optional string name = 3; 1510 1511 // UID of the referent. 1512 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids 1513 optional string uid = 4; 1514 } 1515 1516 // PersistentVolume (PV) is a storage resource provisioned by an administrator. 1517 // It is analogous to a node. 1518 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md 1519 message PersistentVolume { 1520 // Standard object's metadata. 1521 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1522 optional ObjectMeta metadata = 1; 1523 1524 // Spec defines a specification of a persistent volume owned by the cluster. 1525 // Provisioned by an administrator. 1526 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes 1527 optional PersistentVolumeSpec spec = 2; 1528 1529 // Status represents the current information/status for the persistent volume. 1530 // Populated by the system. 1531 // Read-only. 1532 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes 1533 optional PersistentVolumeStatus status = 3; 1534 } 1535 1536 // PersistentVolumeClaim is a user's request for and claim to a persistent volume 1537 message PersistentVolumeClaim { 1538 // Standard object's metadata. 1539 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1540 optional ObjectMeta metadata = 1; 1541 1542 // Spec defines the desired characteristics of a volume requested by a pod author. 1543 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims 1544 optional PersistentVolumeClaimSpec spec = 2; 1545 1546 // Status represents the current information/status of a persistent volume claim. 1547 // Read-only. 1548 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims 1549 optional PersistentVolumeClaimStatus status = 3; 1550 } 1551 1552 // PersistentVolumeClaimList is a list of PersistentVolumeClaim items. 1553 message PersistentVolumeClaimList { 1554 // Standard list metadata. 1555 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1556 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 1557 1558 // A list of persistent volume claims. 1559 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims 1560 repeated PersistentVolumeClaim items = 2; 1561 } 1562 1563 // PersistentVolumeClaimSpec describes the common attributes of storage devices 1564 // and allows a Source for provider-specific attributes 1565 message PersistentVolumeClaimSpec { 1566 // AccessModes contains the desired access modes the volume should have. 1567 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 1568 repeated string accessModes = 1; 1569 1570 // Resources represents the minimum resources the volume should have. 1571 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources 1572 optional ResourceRequirements resources = 2; 1573 1574 // VolumeName is the binding reference to the PersistentVolume backing this claim. 1575 optional string volumeName = 3; 1576 } 1577 1578 // PersistentVolumeClaimStatus is the current status of a persistent volume claim. 1579 message PersistentVolumeClaimStatus { 1580 // Phase represents the current phase of PersistentVolumeClaim. 1581 optional string phase = 1; 1582 1583 // AccessModes contains the actual access modes the volume backing the PVC has. 1584 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 1585 repeated string accessModes = 2; 1586 1587 // Represents the actual resources of the underlying volume. 1588 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> capacity = 3; 1589 } 1590 1591 // PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. 1592 // This volume finds the bound PV and mounts that volume for the pod. A 1593 // PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another 1594 // type of volume that is owned by someone else (the system). 1595 message PersistentVolumeClaimVolumeSource { 1596 // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. 1597 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims 1598 optional string claimName = 1; 1599 1600 // Will force the ReadOnly setting in VolumeMounts. 1601 // Default false. 1602 optional bool readOnly = 2; 1603 } 1604 1605 // PersistentVolumeList is a list of PersistentVolume items. 1606 message PersistentVolumeList { 1607 // Standard list metadata. 1608 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1609 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 1610 1611 // List of persistent volumes. 1612 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md 1613 repeated PersistentVolume items = 2; 1614 } 1615 1616 // PersistentVolumeSource is similar to VolumeSource but meant for the 1617 // administrator who creates PVs. Exactly one of its members must be set. 1618 message PersistentVolumeSource { 1619 // GCEPersistentDisk represents a GCE Disk resource that is attached to a 1620 // kubelet's host machine and then exposed to the pod. Provisioned by an admin. 1621 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk 1622 optional GCEPersistentDiskVolumeSource gcePersistentDisk = 1; 1623 1624 // AWSElasticBlockStore represents an AWS Disk resource that is attached to a 1625 // kubelet's host machine and then exposed to the pod. 1626 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore 1627 optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2; 1628 1629 // HostPath represents a directory on the host. 1630 // Provisioned by a developer or tester. 1631 // This is useful for single-node development and testing only! 1632 // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. 1633 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath 1634 optional HostPathVolumeSource hostPath = 3; 1635 1636 // Glusterfs represents a Glusterfs volume that is attached to a host and 1637 // exposed to the pod. Provisioned by an admin. 1638 // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md 1639 optional GlusterfsVolumeSource glusterfs = 4; 1640 1641 // NFS represents an NFS mount on the host. Provisioned by an admin. 1642 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs 1643 optional NFSVolumeSource nfs = 5; 1644 1645 // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. 1646 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md 1647 optional RBDVolumeSource rbd = 6; 1648 1649 // ISCSI represents an ISCSI Disk resource that is attached to a 1650 // kubelet's host machine and then exposed to the pod. Provisioned by an admin. 1651 optional ISCSIVolumeSource iscsi = 7; 1652 1653 // Cinder represents a cinder volume attached and mounted on kubelets host machine 1654 // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md 1655 optional CinderVolumeSource cinder = 8; 1656 1657 // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime 1658 optional CephFSVolumeSource cephfs = 9; 1659 1660 // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. 1661 optional FCVolumeSource fc = 10; 1662 1663 // Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running 1664 optional FlockerVolumeSource flocker = 11; 1665 1666 // FlexVolume represents a generic volume resource that is 1667 // provisioned/attached using a exec based plugin. This is an 1668 // alpha feature and may change in future. 1669 optional FlexVolumeSource flexVolume = 12; 1670 1671 // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. 1672 optional AzureFileVolumeSource azureFile = 13; 1673 } 1674 1675 // PersistentVolumeSpec is the specification of a persistent volume. 1676 message PersistentVolumeSpec { 1677 // A description of the persistent volume's resources and capacity. 1678 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity 1679 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> capacity = 1; 1680 1681 // The actual volume backing the persistent volume. 1682 optional PersistentVolumeSource persistentVolumeSource = 2; 1683 1684 // AccessModes contains all ways the volume can be mounted. 1685 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes 1686 repeated string accessModes = 3; 1687 1688 // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. 1689 // Expected to be non-nil when bound. 1690 // claim.VolumeName is the authoritative bind between PV and PVC. 1691 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#binding 1692 optional ObjectReference claimRef = 4; 1693 1694 // What happens to a persistent volume when released from its claim. 1695 // Valid options are Retain (default) and Recycle. 1696 // Recyling must be supported by the volume plugin underlying this persistent volume. 1697 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#recycling-policy 1698 optional string persistentVolumeReclaimPolicy = 5; 1699 } 1700 1701 // PersistentVolumeStatus is the current status of a persistent volume. 1702 message PersistentVolumeStatus { 1703 // Phase indicates if a volume is available, bound to a claim, or released by a claim. 1704 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#phase 1705 optional string phase = 1; 1706 1707 // A human-readable message indicating details about why the volume is in this state. 1708 optional string message = 2; 1709 1710 // Reason is a brief CamelCase string that describes any failure and is meant 1711 // for machine parsing and tidy display in the CLI. 1712 optional string reason = 3; 1713 } 1714 1715 // Pod is a collection of containers that can run on a host. This resource is created 1716 // by clients and scheduled onto hosts. 1717 message Pod { 1718 // Standard object's metadata. 1719 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 1720 optional ObjectMeta metadata = 1; 1721 1722 // Specification of the desired behavior of the pod. 1723 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 1724 optional PodSpec spec = 2; 1725 1726 // Most recently observed status of the pod. 1727 // This data may not be up to date. 1728 // Populated by the system. 1729 // Read-only. 1730 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 1731 optional PodStatus status = 3; 1732 } 1733 1734 // Pod affinity is a group of inter pod affinity scheduling rules. 1735 message PodAffinity { 1736 // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. 1737 // If the affinity requirements specified by this field are not met at 1738 // scheduling time, the pod will not be scheduled onto the node. 1739 // If the affinity requirements specified by this field cease to be met 1740 // at some point during pod execution (e.g. due to a pod label update), the 1741 // system will try to eventually evict the pod from its node. 1742 // When there are multiple elements, the lists of nodes corresponding to each 1743 // podAffinityTerm are intersected, i.e. all terms must be satisfied. 1744 // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` 1745 // If the affinity requirements specified by this field are not met at 1746 // scheduling time, the pod will not be scheduled onto the node. 1747 // If the affinity requirements specified by this field cease to be met 1748 // at some point during pod execution (e.g. due to a pod label update), the 1749 // system may or may not try to eventually evict the pod from its node. 1750 // When there are multiple elements, the lists of nodes corresponding to each 1751 // podAffinityTerm are intersected, i.e. all terms must be satisfied. 1752 repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1; 1753 1754 // The scheduler will prefer to schedule pods to nodes that satisfy 1755 // the affinity expressions specified by this field, but it may choose 1756 // a node that violates one or more of the expressions. The node that is 1757 // most preferred is the one with the greatest sum of weights, i.e. 1758 // for each node that meets all of the scheduling requirements (resource 1759 // request, requiredDuringScheduling affinity expressions, etc.), 1760 // compute a sum by iterating through the elements of this field and adding 1761 // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the 1762 // node(s) with the highest sum are the most preferred. 1763 repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2; 1764 } 1765 1766 // Defines a set of pods (namely those matching the labelSelector 1767 // relative to the given namespace(s)) that this pod should be 1768 // co-located (affinity) or not co-located (anti-affinity) with, 1769 // where co-located is defined as running on a node whose value of 1770 // the label with key <topologyKey> tches that of any node on which 1771 // a pod of the set of pods is running 1772 message PodAffinityTerm { 1773 // A label query over a set of resources, in this case pods. 1774 optional k8s.io.kubernetes.pkg.api.unversioned.LabelSelector labelSelector = 1; 1775 1776 // namespaces specifies which namespaces the labelSelector applies to (matches against); 1777 // nil list means "this pod's namespace," empty list means "all namespaces" 1778 // The json tag here is not "omitempty" since we need to distinguish nil and empty. 1779 // See https://golang.org/pkg/encoding/json/#Marshal for more details. 1780 repeated string namespaces = 2; 1781 1782 // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching 1783 // the labelSelector in the specified namespaces, where co-located is defined as running on a node 1784 // whose value of the label with key topologyKey matches that of any node on which any of the 1785 // selected pods is running. 1786 // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" 1787 // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); 1788 // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. 1789 optional string topologyKey = 3; 1790 } 1791 1792 // Pod anti affinity is a group of inter pod anti affinity scheduling rules. 1793 message PodAntiAffinity { 1794 // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. 1795 // If the anti-affinity requirements specified by this field are not met at 1796 // scheduling time, the pod will not be scheduled onto the node. 1797 // If the anti-affinity requirements specified by this field cease to be met 1798 // at some point during pod execution (e.g. due to a pod label update), the 1799 // system will try to eventually evict the pod from its node. 1800 // When there are multiple elements, the lists of nodes corresponding to each 1801 // podAffinityTerm are intersected, i.e. all terms must be satisfied. 1802 // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` 1803 // If the anti-affinity requirements specified by this field are not met at 1804 // scheduling time, the pod will not be scheduled onto the node. 1805 // If the anti-affinity requirements specified by this field cease to be met 1806 // at some point during pod execution (e.g. due to a pod label update), the 1807 // system may or may not try to eventually evict the pod from its node. 1808 // When there are multiple elements, the lists of nodes corresponding to each 1809 // podAffinityTerm are intersected, i.e. all terms must be satisfied. 1810 repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1; 1811 1812 // The scheduler will prefer to schedule pods to nodes that satisfy 1813 // the anti-affinity expressions specified by this field, but it may choose 1814 // a node that violates one or more of the expressions. The node that is 1815 // most preferred is the one with the greatest sum of weights, i.e. 1816 // for each node that meets all of the scheduling requirements (resource 1817 // request, requiredDuringScheduling anti-affinity expressions, etc.), 1818 // compute a sum by iterating through the elements of this field and adding 1819 // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the 1820 // node(s) with the highest sum are the most preferred. 1821 repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2; 1822 } 1823 1824 // PodAttachOptions is the query options to a Pod's remote attach call. 1825 // --- 1826 // TODO: merge w/ PodExecOptions below for stdin, stdout, etc 1827 // and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY 1828 message PodAttachOptions { 1829 // Stdin if true, redirects the standard input stream of the pod for this call. 1830 // Defaults to false. 1831 optional bool stdin = 1; 1832 1833 // Stdout if true indicates that stdout is to be redirected for the attach call. 1834 // Defaults to true. 1835 optional bool stdout = 2; 1836 1837 // Stderr if true indicates that stderr is to be redirected for the attach call. 1838 // Defaults to true. 1839 optional bool stderr = 3; 1840 1841 // TTY if true indicates that a tty will be allocated for the attach call. 1842 // This is passed through the container runtime so the tty 1843 // is allocated on the worker node by the container runtime. 1844 // Defaults to false. 1845 optional bool tty = 4; 1846 1847 // The container in which to execute the command. 1848 // Defaults to only container if there is only one container in the pod. 1849 optional string container = 5; 1850 } 1851 1852 // PodCondition contains details for the current condition of this pod. 1853 message PodCondition { 1854 // Type is the type of the condition. 1855 // Currently only Ready. 1856 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions 1857 optional string type = 1; 1858 1859 // Status is the status of the condition. 1860 // Can be True, False, Unknown. 1861 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions 1862 optional string status = 2; 1863 1864 // Last time we probed the condition. 1865 optional k8s.io.kubernetes.pkg.api.unversioned.Time lastProbeTime = 3; 1866 1867 // Last time the condition transitioned from one status to another. 1868 optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; 1869 1870 // Unique, one-word, CamelCase reason for the condition's last transition. 1871 optional string reason = 5; 1872 1873 // Human-readable message indicating details about last transition. 1874 optional string message = 6; 1875 } 1876 1877 // PodExecOptions is the query options to a Pod's remote exec call. 1878 // --- 1879 // TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging 1880 // and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY 1881 message PodExecOptions { 1882 // Redirect the standard input stream of the pod for this call. 1883 // Defaults to false. 1884 optional bool stdin = 1; 1885 1886 // Redirect the standard output stream of the pod for this call. 1887 // Defaults to true. 1888 optional bool stdout = 2; 1889 1890 // Redirect the standard error stream of the pod for this call. 1891 // Defaults to true. 1892 optional bool stderr = 3; 1893 1894 // TTY if true indicates that a tty will be allocated for the exec call. 1895 // Defaults to false. 1896 optional bool tty = 4; 1897 1898 // Container in which to execute the command. 1899 // Defaults to only container if there is only one container in the pod. 1900 optional string container = 5; 1901 1902 // Command is the remote command to execute. argv array. Not executed within a shell. 1903 repeated string command = 6; 1904 } 1905 1906 // PodList is a list of Pods. 1907 message PodList { 1908 // Standard list metadata. 1909 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 1910 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 1911 1912 // List of pods. 1913 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pods.md 1914 repeated Pod items = 2; 1915 } 1916 1917 // PodLogOptions is the query options for a Pod's logs REST call. 1918 message PodLogOptions { 1919 // The container for which to stream logs. Defaults to only container if there is one container in the pod. 1920 optional string container = 1; 1921 1922 // Follow the log stream of the pod. Defaults to false. 1923 optional bool follow = 2; 1924 1925 // Return previous terminated container logs. Defaults to false. 1926 optional bool previous = 3; 1927 1928 // A relative time in seconds before the current time from which to show logs. If this value 1929 // precedes the time a pod was started, only logs since the pod start will be returned. 1930 // If this value is in the future, no logs will be returned. 1931 // Only one of sinceSeconds or sinceTime may be specified. 1932 optional int64 sinceSeconds = 4; 1933 1934 // An RFC3339 timestamp from which to show logs. If this value 1935 // precedes the time a pod was started, only logs since the pod start will be returned. 1936 // If this value is in the future, no logs will be returned. 1937 // Only one of sinceSeconds or sinceTime may be specified. 1938 optional k8s.io.kubernetes.pkg.api.unversioned.Time sinceTime = 5; 1939 1940 // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line 1941 // of log output. Defaults to false. 1942 optional bool timestamps = 6; 1943 1944 // If set, the number of lines from the end of the logs to show. If not specified, 1945 // logs are shown from the creation of the container or sinceSeconds or sinceTime 1946 optional int64 tailLines = 7; 1947 1948 // If set, the number of bytes to read from the server before terminating the 1949 // log output. This may not display a complete final line of logging, and may return 1950 // slightly more or slightly less than the specified limit. 1951 optional int64 limitBytes = 8; 1952 } 1953 1954 // PodProxyOptions is the query options to a Pod's proxy call. 1955 message PodProxyOptions { 1956 // Path is the URL path to use for the current proxy request to pod. 1957 optional string path = 1; 1958 } 1959 1960 // PodSecurityContext holds pod-level security attributes and common container settings. 1961 // Some fields are also present in container.securityContext. Field values of 1962 // container.securityContext take precedence over field values of PodSecurityContext. 1963 message PodSecurityContext { 1964 // The SELinux context to be applied to all containers. 1965 // If unspecified, the container runtime will allocate a random SELinux context for each 1966 // container. May also be set in SecurityContext. If set in 1967 // both SecurityContext and PodSecurityContext, the value specified in SecurityContext 1968 // takes precedence for that container. 1969 optional SELinuxOptions seLinuxOptions = 1; 1970 1971 // The UID to run the entrypoint of the container process. 1972 // Defaults to user specified in image metadata if unspecified. 1973 // May also be set in SecurityContext. If set in both SecurityContext and 1974 // PodSecurityContext, the value specified in SecurityContext takes precedence 1975 // for that container. 1976 optional int64 runAsUser = 2; 1977 1978 // Indicates that the container must run as a non-root user. 1979 // If true, the Kubelet will validate the image at runtime to ensure that it 1980 // does not run as UID 0 (root) and fail to start the container if it does. 1981 // If unset or false, no such validation will be performed. 1982 // May also be set in SecurityContext. If set in both SecurityContext and 1983 // PodSecurityContext, the value specified in SecurityContext takes precedence. 1984 optional bool runAsNonRoot = 3; 1985 1986 // A list of groups applied to the first process run in each container, in addition 1987 // to the container's primary GID. If unspecified, no groups will be added to 1988 // any container. 1989 repeated int64 supplementalGroups = 4; 1990 1991 // A special supplemental group that applies to all containers in a pod. 1992 // Some volume types allow the Kubelet to change the ownership of that volume 1993 // to be owned by the pod: 1994 // 1995 // 1. The owning GID will be the FSGroup 1996 // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 1997 // 3. The permission bits are OR'd with rw-rw---- 1998 // 1999 // If unset, the Kubelet will not modify the ownership and permissions of any volume. 2000 optional int64 fsGroup = 5; 2001 } 2002 2003 // PodSpec is a description of a pod. 2004 message PodSpec { 2005 // List of volumes that can be mounted by containers belonging to the pod. 2006 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md 2007 repeated Volume volumes = 1; 2008 2009 // List of containers belonging to the pod. 2010 // Containers cannot currently be added or removed. 2011 // There must be at least one container in a Pod. 2012 // Cannot be updated. 2013 // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md 2014 repeated Container containers = 2; 2015 2016 // Restart policy for all containers within the pod. 2017 // One of Always, OnFailure, Never. 2018 // Default to Always. 2019 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#restartpolicy 2020 optional string restartPolicy = 3; 2021 2022 // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. 2023 // Value must be non-negative integer. The value zero indicates delete immediately. 2024 // If this value is nil, the default grace period will be used instead. 2025 // The grace period is the duration in seconds after the processes running in the pod are sent 2026 // a termination signal and the time when the processes are forcibly halted with a kill signal. 2027 // Set this value longer than the expected cleanup time for your process. 2028 // Defaults to 30 seconds. 2029 optional int64 terminationGracePeriodSeconds = 4; 2030 2031 // Optional duration in seconds the pod may be active on the node relative to 2032 // StartTime before the system will actively try to mark it failed and kill associated containers. 2033 // Value must be a positive integer. 2034 optional int64 activeDeadlineSeconds = 5; 2035 2036 // Set DNS policy for containers within the pod. 2037 // One of 'ClusterFirst' or 'Default'. 2038 // Defaults to "ClusterFirst". 2039 optional string dnsPolicy = 6; 2040 2041 // NodeSelector is a selector which must be true for the pod to fit on a node. 2042 // Selector which must match a node's labels for the pod to be scheduled on that node. 2043 // More info: http://releases.k8s.io/HEAD/docs/user-guide/node-selection/README.md 2044 map<string, string> nodeSelector = 7; 2045 2046 // ServiceAccountName is the name of the ServiceAccount to use to run this pod. 2047 // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md 2048 optional string serviceAccountName = 8; 2049 2050 // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. 2051 // Deprecated: Use serviceAccountName instead. 2052 optional string serviceAccount = 9; 2053 2054 // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, 2055 // the scheduler simply schedules this pod onto that node, assuming that it fits resource 2056 // requirements. 2057 optional string nodeName = 10; 2058 2059 // Host networking requested for this pod. Use the host's network namespace. 2060 // If this option is set, the ports that will be used must be specified. 2061 // Default to false. 2062 optional bool hostNetwork = 11; 2063 2064 // Use the host's pid namespace. 2065 // Optional: Default to false. 2066 optional bool hostPID = 12; 2067 2068 // Use the host's ipc namespace. 2069 // Optional: Default to false. 2070 optional bool hostIPC = 13; 2071 2072 // SecurityContext holds pod-level security attributes and common container settings. 2073 // Optional: Defaults to empty. See type description for default values of each field. 2074 optional PodSecurityContext securityContext = 14; 2075 2076 // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. 2077 // If specified, these secrets will be passed to individual puller implementations for them to use. For example, 2078 // in the case of docker, only DockerConfig type secrets are honored. 2079 // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#specifying-imagepullsecrets-on-a-pod 2080 repeated LocalObjectReference imagePullSecrets = 15; 2081 2082 // Specifies the hostname of the Pod 2083 // If not specified, the pod's hostname will be set to a system-defined value. 2084 optional string hostname = 16; 2085 2086 // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". 2087 // If not specified, the pod will not have a domainname at all. 2088 optional string subdomain = 17; 2089 } 2090 2091 // PodStatus represents information about the status of a pod. Status may trail the actual 2092 // state of a system. 2093 message PodStatus { 2094 // Current condition of the pod. 2095 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-phase 2096 optional string phase = 1; 2097 2098 // Current service state of pod. 2099 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions 2100 repeated PodCondition conditions = 2; 2101 2102 // A human readable message indicating details about why the pod is in this condition. 2103 optional string message = 3; 2104 2105 // A brief CamelCase message indicating details about why the pod is in this state. 2106 // e.g. 'OutOfDisk' 2107 optional string reason = 4; 2108 2109 // IP address of the host to which the pod is assigned. Empty if not yet scheduled. 2110 optional string hostIP = 5; 2111 2112 // IP address allocated to the pod. Routable at least within the cluster. 2113 // Empty if not yet allocated. 2114 optional string podIP = 6; 2115 2116 // RFC 3339 date and time at which the object was acknowledged by the Kubelet. 2117 // This is before the Kubelet pulled the container image(s) for the pod. 2118 optional k8s.io.kubernetes.pkg.api.unversioned.Time startTime = 7; 2119 2120 // The list has one entry per container in the manifest. Each entry is currently the output 2121 // of `docker inspect`. 2122 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses 2123 repeated ContainerStatus containerStatuses = 8; 2124 } 2125 2126 // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded 2127 message PodStatusResult { 2128 // Standard object's metadata. 2129 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2130 optional ObjectMeta metadata = 1; 2131 2132 // Most recently observed status of the pod. 2133 // This data may not be up to date. 2134 // Populated by the system. 2135 // Read-only. 2136 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2137 optional PodStatus status = 2; 2138 } 2139 2140 // PodTemplate describes a template for creating copies of a predefined pod. 2141 message PodTemplate { 2142 // Standard object's metadata. 2143 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2144 optional ObjectMeta metadata = 1; 2145 2146 // Template defines the pods that will be created from this pod template. 2147 // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2148 optional PodTemplateSpec template = 2; 2149 } 2150 2151 // PodTemplateList is a list of PodTemplates. 2152 message PodTemplateList { 2153 // Standard list metadata. 2154 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 2155 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 2156 2157 // List of pod templates 2158 repeated PodTemplate items = 2; 2159 } 2160 2161 // PodTemplateSpec describes the data a pod should have when created from a template 2162 message PodTemplateSpec { 2163 // Standard object's metadata. 2164 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2165 optional ObjectMeta metadata = 1; 2166 2167 // Specification of the desired behavior of the pod. 2168 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2169 optional PodSpec spec = 2; 2170 } 2171 2172 // Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. 2173 message Preconditions { 2174 // Specifies the target UID. 2175 optional string uid = 1; 2176 } 2177 2178 // An empty preferred scheduling term matches all objects with implicit weight 0 2179 // (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). 2180 message PreferredSchedulingTerm { 2181 // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. 2182 optional int32 weight = 1; 2183 2184 // A node selector term, associated with the corresponding weight. 2185 optional NodeSelectorTerm preference = 2; 2186 } 2187 2188 // Probe describes a health check to be performed against a container to determine whether it is 2189 // alive or ready to receive traffic. 2190 message Probe { 2191 // The action taken to determine the health of a container 2192 optional Handler handler = 1; 2193 2194 // Number of seconds after the container has started before liveness probes are initiated. 2195 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes 2196 optional int32 initialDelaySeconds = 2; 2197 2198 // Number of seconds after which the probe times out. 2199 // Defaults to 1 second. Minimum value is 1. 2200 // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes 2201 optional int32 timeoutSeconds = 3; 2202 2203 // How often (in seconds) to perform the probe. 2204 // Default to 10 seconds. Minimum value is 1. 2205 optional int32 periodSeconds = 4; 2206 2207 // Minimum consecutive successes for the probe to be considered successful after having failed. 2208 // Defaults to 1. Must be 1 for liveness. Minimum value is 1. 2209 optional int32 successThreshold = 5; 2210 2211 // Minimum consecutive failures for the probe to be considered failed after having succeeded. 2212 // Defaults to 3. Minimum value is 1. 2213 optional int32 failureThreshold = 6; 2214 } 2215 2216 // Represents a Rados Block Device mount that lasts the lifetime of a pod. 2217 // RBD volumes support ownership management and SELinux relabeling. 2218 message RBDVolumeSource { 2219 // A collection of Ceph monitors. 2220 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it 2221 repeated string monitors = 1; 2222 2223 // The rados image name. 2224 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it 2225 optional string image = 2; 2226 2227 // Filesystem type of the volume that you want to mount. 2228 // Tip: Ensure that the filesystem type is supported by the host operating system. 2229 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. 2230 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#rbd 2231 // TODO: how do we prevent errors in the filesystem from compromising the machine 2232 optional string fsType = 3; 2233 2234 // The rados pool name. 2235 // Default is rbd. 2236 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it. 2237 optional string pool = 4; 2238 2239 // The rados user name. 2240 // Default is admin. 2241 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it 2242 optional string user = 5; 2243 2244 // Keyring is the path to key ring for RBDUser. 2245 // Default is /etc/ceph/keyring. 2246 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it 2247 optional string keyring = 6; 2248 2249 // SecretRef is name of the authentication secret for RBDUser. If provided 2250 // overrides keyring. 2251 // Default is empty. 2252 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it 2253 optional LocalObjectReference secretRef = 7; 2254 2255 // ReadOnly here will force the ReadOnly setting in VolumeMounts. 2256 // Defaults to false. 2257 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it 2258 optional bool readOnly = 8; 2259 } 2260 2261 // RangeAllocation is not a public type. 2262 message RangeAllocation { 2263 // Standard object's metadata. 2264 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2265 optional ObjectMeta metadata = 1; 2266 2267 // Range is string that identifies the range represented by 'data'. 2268 optional string range = 2; 2269 2270 // Data is a bit array containing all allocated addresses in the previous segment. 2271 optional bytes data = 3; 2272 } 2273 2274 // ReplicationController represents the configuration of a replication controller. 2275 message ReplicationController { 2276 // If the Labels of a ReplicationController are empty, they are defaulted to 2277 // be the same as the Pod(s) that the replication controller manages. 2278 // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2279 optional ObjectMeta metadata = 1; 2280 2281 // Spec defines the specification of the desired behavior of the replication controller. 2282 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2283 optional ReplicationControllerSpec spec = 2; 2284 2285 // Status is the most recently observed status of the replication controller. 2286 // This data may be out of date by some window of time. 2287 // Populated by the system. 2288 // Read-only. 2289 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2290 optional ReplicationControllerStatus status = 3; 2291 } 2292 2293 // ReplicationControllerList is a collection of replication controllers. 2294 message ReplicationControllerList { 2295 // Standard list metadata. 2296 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 2297 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 2298 2299 // List of replication controllers. 2300 // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md 2301 repeated ReplicationController items = 2; 2302 } 2303 2304 // ReplicationControllerSpec is the specification of a replication controller. 2305 message ReplicationControllerSpec { 2306 // Replicas is the number of desired replicas. 2307 // This is a pointer to distinguish between explicit zero and unspecified. 2308 // Defaults to 1. 2309 // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller 2310 optional int32 replicas = 1; 2311 2312 // Selector is a label query over pods that should match the Replicas count. 2313 // If Selector is empty, it is defaulted to the labels present on the Pod template. 2314 // Label keys and values that must match in order to be controlled by this replication 2315 // controller, if empty defaulted to labels on Pod template. 2316 // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors 2317 map<string, string> selector = 2; 2318 2319 // Template is the object that describes the pod that will be created if 2320 // insufficient replicas are detected. This takes precedence over a TemplateRef. 2321 // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template 2322 optional PodTemplateSpec template = 3; 2323 } 2324 2325 // ReplicationControllerStatus represents the current status of a replication 2326 // controller. 2327 message ReplicationControllerStatus { 2328 // Replicas is the most recently oberved number of replicas. 2329 // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller 2330 optional int32 replicas = 1; 2331 2332 // The number of pods that have labels matching the labels of the pod template of the replication controller. 2333 optional int32 fullyLabeledReplicas = 2; 2334 2335 // ObservedGeneration reflects the generation of the most recently observed replication controller. 2336 optional int64 observedGeneration = 3; 2337 } 2338 2339 // ResourceQuota sets aggregate quota restrictions enforced per namespace 2340 message ResourceQuota { 2341 // Standard object's metadata. 2342 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2343 optional ObjectMeta metadata = 1; 2344 2345 // Spec defines the desired quota. 2346 // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2347 optional ResourceQuotaSpec spec = 2; 2348 2349 // Status defines the actual enforced quota and its current usage. 2350 // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2351 optional ResourceQuotaStatus status = 3; 2352 } 2353 2354 // ResourceQuotaList is a list of ResourceQuota items. 2355 message ResourceQuotaList { 2356 // Standard list metadata. 2357 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 2358 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 2359 2360 // Items is a list of ResourceQuota objects. 2361 // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota 2362 repeated ResourceQuota items = 2; 2363 } 2364 2365 // ResourceQuotaSpec defines the desired hard limits to enforce for Quota. 2366 message ResourceQuotaSpec { 2367 // Hard is the set of desired hard limits for each named resource. 2368 // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota 2369 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> hard = 1; 2370 2371 // A collection of filters that must match each object tracked by a quota. 2372 // If not specified, the quota matches all objects. 2373 repeated string scopes = 2; 2374 } 2375 2376 // ResourceQuotaStatus defines the enforced hard limits and observed use. 2377 message ResourceQuotaStatus { 2378 // Hard is the set of enforced hard limits for each named resource. 2379 // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota 2380 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> hard = 1; 2381 2382 // Used is the current observed total usage of the resource in the namespace. 2383 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> used = 2; 2384 } 2385 2386 // ResourceRequirements describes the compute resource requirements. 2387 message ResourceRequirements { 2388 // Limits describes the maximum amount of compute resources allowed. 2389 // More info: http://releases.k8s.io/HEAD/docs/design/resources.md#resource-specifications 2390 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> limits = 1; 2391 2392 // Requests describes the minimum amount of compute resources required. 2393 // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, 2394 // otherwise to an implementation-defined value. 2395 // More info: http://releases.k8s.io/HEAD/docs/design/resources.md#resource-specifications 2396 map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> requests = 2; 2397 } 2398 2399 // SELinuxOptions are the labels to be applied to the container 2400 message SELinuxOptions { 2401 // User is a SELinux user label that applies to the container. 2402 optional string user = 1; 2403 2404 // Role is a SELinux role label that applies to the container. 2405 optional string role = 2; 2406 2407 // Type is a SELinux type label that applies to the container. 2408 optional string type = 3; 2409 2410 // Level is SELinux level label that applies to the container. 2411 optional string level = 4; 2412 } 2413 2414 // Secret holds secret data of a certain type. The total bytes of the values in 2415 // the Data field must be less than MaxSecretSize bytes. 2416 message Secret { 2417 // Standard object's metadata. 2418 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2419 optional ObjectMeta metadata = 1; 2420 2421 // Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN 2422 // or leading dot followed by valid DNS_SUBDOMAIN. 2423 // The serialized form of the secret data is a base64 encoded string, 2424 // representing the arbitrary (possibly non-string) data value here. 2425 // Described in https://tools.ietf.org/html/rfc4648#section-4 2426 map<string, bytes> data = 2; 2427 2428 // Used to facilitate programmatic handling of secret data. 2429 optional string type = 3; 2430 } 2431 2432 // SecretKeySelector selects a key of a Secret. 2433 message SecretKeySelector { 2434 // The name of the secret in the pod's namespace to select from. 2435 optional LocalObjectReference localObjectReference = 1; 2436 2437 // The key of the secret to select from. Must be a valid secret key. 2438 optional string key = 2; 2439 } 2440 2441 // SecretList is a list of Secret. 2442 message SecretList { 2443 // Standard list metadata. 2444 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 2445 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 2446 2447 // Items is a list of secret objects. 2448 // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md 2449 repeated Secret items = 2; 2450 } 2451 2452 // Adapts a Secret into a volume. 2453 // 2454 // The contents of the target Secret's Data field will be presented in a volume 2455 // as files using the keys in the Data field as the file names. 2456 // Secret volumes support ownership management and SELinux relabeling. 2457 message SecretVolumeSource { 2458 // Name of the secret in the pod's namespace to use. 2459 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets 2460 optional string secretName = 1; 2461 } 2462 2463 // SecurityContext holds security configuration that will be applied to a container. 2464 // Some fields are present in both SecurityContext and PodSecurityContext. When both 2465 // are set, the values in SecurityContext take precedence. 2466 message SecurityContext { 2467 // The capabilities to add/drop when running containers. 2468 // Defaults to the default set of capabilities granted by the container runtime. 2469 optional Capabilities capabilities = 1; 2470 2471 // Run container in privileged mode. 2472 // Processes in privileged containers are essentially equivalent to root on the host. 2473 // Defaults to false. 2474 optional bool privileged = 2; 2475 2476 // The SELinux context to be applied to the container. 2477 // If unspecified, the container runtime will allocate a random SELinux context for each 2478 // container. May also be set in PodSecurityContext. If set in both SecurityContext and 2479 // PodSecurityContext, the value specified in SecurityContext takes precedence. 2480 optional SELinuxOptions seLinuxOptions = 3; 2481 2482 // The UID to run the entrypoint of the container process. 2483 // Defaults to user specified in image metadata if unspecified. 2484 // May also be set in PodSecurityContext. If set in both SecurityContext and 2485 // PodSecurityContext, the value specified in SecurityContext takes precedence. 2486 optional int64 runAsUser = 4; 2487 2488 // Indicates that the container must run as a non-root user. 2489 // If true, the Kubelet will validate the image at runtime to ensure that it 2490 // does not run as UID 0 (root) and fail to start the container if it does. 2491 // If unset or false, no such validation will be performed. 2492 // May also be set in PodSecurityContext. If set in both SecurityContext and 2493 // PodSecurityContext, the value specified in SecurityContext takes precedence. 2494 optional bool runAsNonRoot = 5; 2495 2496 // Whether this container has a read-only root filesystem. 2497 // Default is false. 2498 optional bool readOnlyRootFilesystem = 6; 2499 } 2500 2501 // SerializedReference is a reference to serialized object. 2502 message SerializedReference { 2503 // The reference to an object in the system. 2504 optional ObjectReference reference = 1; 2505 } 2506 2507 // Service is a named abstraction of software service (for example, mysql) consisting of local port 2508 // (for example 3306) that the proxy listens on, and the selector that determines which pods 2509 // will answer requests sent through the proxy. 2510 message Service { 2511 // Standard object's metadata. 2512 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2513 optional ObjectMeta metadata = 1; 2514 2515 // Spec defines the behavior of a service. 2516 // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2517 optional ServiceSpec spec = 2; 2518 2519 // Most recently observed status of the service. 2520 // Populated by the system. 2521 // Read-only. 2522 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status 2523 optional ServiceStatus status = 3; 2524 } 2525 2526 // ServiceAccount binds together: 2527 // * a name, understood by users, and perhaps by peripheral systems, for an identity 2528 // * a principal that can be authenticated and authorized 2529 // * a set of secrets 2530 message ServiceAccount { 2531 // Standard object's metadata. 2532 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata 2533 optional ObjectMeta metadata = 1; 2534 2535 // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. 2536 // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md 2537 repeated ObjectReference secrets = 2; 2538 2539 // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images 2540 // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets 2541 // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. 2542 // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md#manually-specifying-an-imagepullsecret 2543 repeated LocalObjectReference imagePullSecrets = 3; 2544 } 2545 2546 // ServiceAccountList is a list of ServiceAccount objects 2547 message ServiceAccountList { 2548 // Standard list metadata. 2549 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 2550 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 2551 2552 // List of ServiceAccounts. 2553 // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts 2554 repeated ServiceAccount items = 2; 2555 } 2556 2557 // ServiceList holds a list of services. 2558 message ServiceList { 2559 // Standard list metadata. 2560 // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds 2561 optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; 2562 2563 // List of services 2564 repeated Service items = 2; 2565 } 2566 2567 // ServicePort contains information on service's port. 2568 message ServicePort { 2569 // The name of this port within the service. This must be a DNS_LABEL. 2570 // All ports within a ServiceSpec must have unique names. This maps to 2571 // the 'Name' field in EndpointPort objects. 2572 // Optional if only one ServicePort is defined on this service. 2573 optional string name = 1; 2574 2575 // The IP protocol for this port. Supports "TCP" and "UDP". 2576 // Default is TCP. 2577 optional string protocol = 2; 2578 2579 // The port that will be exposed by this service. 2580 optional int32 port = 3; 2581 2582 // Number or name of the port to access on the pods targeted by the service. 2583 // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. 2584 // If this is a string, it will be looked up as a named port in the 2585 // target Pod's container ports. If this is not specified, the value 2586 // of the 'port' field is used (an identity map). 2587 // This field is ignored for services with clusterIP=None, and should be 2588 // omitted or set equal to the 'port' field. 2589 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service 2590 optional k8s.io.kubernetes.pkg.util.intstr.IntOrString targetPort = 4; 2591 2592 // The port on each node on which this service is exposed when type=NodePort or LoadBalancer. 2593 // Usually assigned by the system. If specified, it will be allocated to the service 2594 // if unused or else creation of the service will fail. 2595 // Default is to auto-allocate a port if the ServiceType of this Service requires one. 2596 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#type--nodeport 2597 optional int32 nodePort = 5; 2598 } 2599 2600 // ServiceProxyOptions is the query options to a Service's proxy call. 2601 message ServiceProxyOptions { 2602 // Path is the part of URLs that include service endpoints, suffixes, 2603 // and parameters to use for the current proxy request to service. 2604 // For example, the whole request URL is 2605 // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. 2606 // Path is _search?q=user:kimchy. 2607 optional string path = 1; 2608 } 2609 2610 // ServiceSpec describes the attributes that a user creates on a service. 2611 message ServiceSpec { 2612 // The list of ports that are exposed by this service. 2613 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies 2614 repeated ServicePort ports = 1; 2615 2616 // This service will route traffic to pods having labels matching this selector. 2617 // Label keys and values that must match in order to receive traffic for this service. 2618 // If empty, all pods are selected, if not specified, endpoints must be manually specified. 2619 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview 2620 map<string, string> selector = 2; 2621 2622 // ClusterIP is usually assigned by the master and is the IP address of the service. 2623 // If specified, it will be allocated to the service if it is unused 2624 // or else creation of the service will fail. 2625 // Valid values are None, empty string (""), or a valid IP address. 2626 // 'None' can be specified for a headless service when proxying is not required. 2627 // Cannot be updated. 2628 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies 2629 optional string clusterIP = 3; 2630 2631 // Type of exposed service. Must be ClusterIP, NodePort, or LoadBalancer. 2632 // Defaults to ClusterIP. 2633 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#external-services 2634 optional string type = 4; 2635 2636 // externalIPs is a list of IP addresses for which nodes in the cluster 2637 // will also accept traffic for this service. These IPs are not managed by 2638 // Kubernetes. The user is responsible for ensuring that traffic arrives 2639 // at a node with this IP. A common example is external load-balancers 2640 // that are not part of the Kubernetes system. A previous form of this 2641 // functionality exists as the deprecatedPublicIPs field. When using this 2642 // field, callers should also clear the deprecatedPublicIPs field. 2643 repeated string externalIPs = 5; 2644 2645 // deprecatedPublicIPs is deprecated and replaced by the externalIPs field 2646 // with almost the exact same semantics. This field is retained in the v1 2647 // API for compatibility until at least 8/20/2016. It will be removed from 2648 // any new API revisions. If both deprecatedPublicIPs *and* externalIPs are 2649 // set, deprecatedPublicIPs is used. 2650 // +genconversion=false 2651 repeated string deprecatedPublicIPs = 6; 2652 2653 // Supports "ClientIP" and "None". Used to maintain session affinity. 2654 // Enable client IP based session affinity. 2655 // Must be ClientIP or None. 2656 // Defaults to None. 2657 // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies 2658 optional string sessionAffinity = 7; 2659 2660 // Only applies to Service Type: LoadBalancer 2661 // LoadBalancer will get created with the IP specified in this field. 2662 // This feature depends on whether the underlying cloud-provider supports specifying 2663 // the loadBalancerIP when a load balancer is created. 2664 // This field will be ignored if the cloud-provider does not support the feature. 2665 optional string loadBalancerIP = 8; 2666 } 2667 2668 // ServiceStatus represents the current status of a service. 2669 message ServiceStatus { 2670 // LoadBalancer contains the current status of the load-balancer, 2671 // if one is present. 2672 optional LoadBalancerStatus loadBalancer = 1; 2673 } 2674 2675 // TCPSocketAction describes an action based on opening a socket 2676 message TCPSocketAction { 2677 // Number or name of the port to access on the container. 2678 // Number must be in the range 1 to 65535. 2679 // Name must be an IANA_SVC_NAME. 2680 optional k8s.io.kubernetes.pkg.util.intstr.IntOrString port = 1; 2681 } 2682 2683 // Volume represents a named volume in a pod that may be accessed by any container in the pod. 2684 message Volume { 2685 // Volume's name. 2686 // Must be a DNS_LABEL and unique within the pod. 2687 // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names 2688 optional string name = 1; 2689 2690 // VolumeSource represents the location and type of the mounted volume. 2691 // If not specified, the Volume is implied to be an EmptyDir. 2692 // This implied behavior is deprecated and will be removed in a future version. 2693 optional VolumeSource volumeSource = 2; 2694 } 2695 2696 // VolumeMount describes a mounting of a Volume within a container. 2697 message VolumeMount { 2698 // This must match the Name of a Volume. 2699 optional string name = 1; 2700 2701 // Mounted read-only if true, read-write otherwise (false or unspecified). 2702 // Defaults to false. 2703 optional bool readOnly = 2; 2704 2705 // Path within the container at which the volume should be mounted. Must 2706 // not contain ':'. 2707 optional string mountPath = 3; 2708 2709 // Path within the volume from which the container's volume should be mounted. 2710 // Defaults to "" (volume's root). 2711 optional string subPath = 4; 2712 } 2713 2714 // Represents the source of a volume to mount. 2715 // Only one of its members may be specified. 2716 message VolumeSource { 2717 // HostPath represents a pre-existing file or directory on the host 2718 // machine that is directly exposed to the container. This is generally 2719 // used for system agents or other privileged things that are allowed 2720 // to see the host machine. Most containers will NOT need this. 2721 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath 2722 // --- 2723 // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not 2724 // mount host directories as read/write. 2725 optional HostPathVolumeSource hostPath = 1; 2726 2727 // EmptyDir represents a temporary directory that shares a pod's lifetime. 2728 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir 2729 optional EmptyDirVolumeSource emptyDir = 2; 2730 2731 // GCEPersistentDisk represents a GCE Disk resource that is attached to a 2732 // kubelet's host machine and then exposed to the pod. 2733 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk 2734 optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3; 2735 2736 // AWSElasticBlockStore represents an AWS Disk resource that is attached to a 2737 // kubelet's host machine and then exposed to the pod. 2738 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore 2739 optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4; 2740 2741 // GitRepo represents a git repository at a particular revision. 2742 optional GitRepoVolumeSource gitRepo = 5; 2743 2744 // Secret represents a secret that should populate this volume. 2745 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets 2746 optional SecretVolumeSource secret = 6; 2747 2748 // NFS represents an NFS mount on the host that shares a pod's lifetime 2749 // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs 2750 optional NFSVolumeSource nfs = 7; 2751 2752 // ISCSI represents an ISCSI Disk resource that is attached to a 2753 // kubelet's host machine and then exposed to the pod. 2754 // More info: http://releases.k8s.io/HEAD/examples/iscsi/README.md 2755 optional ISCSIVolumeSource iscsi = 8; 2756 2757 // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. 2758 // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md 2759 optional GlusterfsVolumeSource glusterfs = 9; 2760 2761 // PersistentVolumeClaimVolumeSource represents a reference to a 2762 // PersistentVolumeClaim in the same namespace. 2763 // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims 2764 optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10; 2765 2766 // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. 2767 // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md 2768 optional RBDVolumeSource rbd = 11; 2769 2770 // FlexVolume represents a generic volume resource that is 2771 // provisioned/attached using a exec based plugin. This is an 2772 // alpha feature and may change in future. 2773 optional FlexVolumeSource flexVolume = 12; 2774 2775 // Cinder represents a cinder volume attached and mounted on kubelets host machine 2776 // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md 2777 optional CinderVolumeSource cinder = 13; 2778 2779 // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime 2780 optional CephFSVolumeSource cephfs = 14; 2781 2782 // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running 2783 optional FlockerVolumeSource flocker = 15; 2784 2785 // DownwardAPI represents downward API about the pod that should populate this volume 2786 optional DownwardAPIVolumeSource downwardAPI = 16; 2787 2788 // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. 2789 optional FCVolumeSource fc = 17; 2790 2791 // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. 2792 optional AzureFileVolumeSource azureFile = 18; 2793 2794 // ConfigMap represents a configMap that should populate this volume 2795 optional ConfigMapVolumeSource configMap = 19; 2796 } 2797 2798 // The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) 2799 message WeightedPodAffinityTerm { 2800 // weight associated with matching the corresponding podAffinityTerm, 2801 // in the range 1-100. 2802 optional int32 weight = 1; 2803 2804 // Required. A pod affinity term, associated with the corresponding weight. 2805 optional PodAffinityTerm podAffinityTerm = 2; 2806 } 2807