1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922 |
- /*
- Copyright 2017 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- // This file was autogenerated by go-to-protobuf. Do not edit it manually!
- syntax = 'proto2';
- package k8s.io.kubernetes.pkg.api.v1;
- import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
- import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
- import "k8s.io/apimachinery/pkg/runtime/generated.proto";
- import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
- import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
- import "k8s.io/apiserver/pkg/apis/example/v1/generated.proto";
- // Package-wide variables from generator "generated".
- option go_package = "v1";
- // Represents a Persistent Disk resource in AWS.
- //
- // An AWS EBS disk must exist before mounting to a container. The disk
- // must also be in the same AWS zone as the kubelet. An AWS EBS disk
- // can only be mounted as read/write once. AWS EBS volumes support
- // ownership management and SELinux relabeling.
- message AWSElasticBlockStoreVolumeSource {
- // Unique ID of the persistent disk resource in AWS (Amazon EBS volume).
- // More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
- optional string volumeID = 1;
- // Filesystem type of the volume that you want to mount.
- // Tip: Ensure that the filesystem type is supported by the host operating system.
- // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- // +optional
- optional string fsType = 2;
- // The partition in the volume that you want to mount.
- // If omitted, the default is to mount by volume name.
- // Examples: For volume /dev/sda1, you specify the partition as "1".
- // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
- // +optional
- optional int32 partition = 3;
- // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true".
- // If omitted, the default is "false".
- // More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
- // +optional
- optional bool readOnly = 4;
- }
- // Affinity is a group of affinity scheduling rules.
- message Affinity {
- // Describes node affinity scheduling rules for the pod.
- // +optional
- optional NodeAffinity nodeAffinity = 1;
- // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
- // +optional
- optional PodAffinity podAffinity = 2;
- // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
- // +optional
- optional PodAntiAffinity podAntiAffinity = 3;
- }
- // AttachedVolume describes a volume attached to a node
- message AttachedVolume {
- // Name of the attached volume
- optional string name = 1;
- // DevicePath represents the device path where the volume should be available
- optional string devicePath = 2;
- }
- // AvoidPods describes pods that should avoid this node. This is the value for a
- // Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and
- // will eventually become a field of NodeStatus.
- message AvoidPods {
- // Bounded-sized list of signatures of pods that should avoid this node, sorted
- // in timestamp order from oldest to newest. Size of the slice is unspecified.
- // +optional
- repeated PreferAvoidPodsEntry preferAvoidPods = 1;
- }
- // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
- message AzureDiskVolumeSource {
- // The Name of the data disk in the blob storage
- optional string diskName = 1;
- // The URI the data disk in the blob storage
- optional string diskURI = 2;
- // Host Caching mode: None, Read Only, Read Write.
- // +optional
- optional string cachingMode = 3;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // +optional
- optional string fsType = 4;
- // Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // +optional
- optional bool readOnly = 5;
- }
- // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
- message AzureFileVolumeSource {
- // the name of secret that contains Azure Storage Account Name and Key
- optional string secretName = 1;
- // Share Name
- optional string shareName = 2;
- // Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // +optional
- optional bool readOnly = 3;
- }
- // Binding ties one object to another.
- // For example, a pod is bound to a node by a scheduler.
- message Binding {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // The target object that you want to bind to the standard object.
- optional ObjectReference target = 2;
- }
- // Adds and removes POSIX capabilities from running containers.
- message Capabilities {
- // Added capabilities
- // +optional
- repeated string add = 1;
- // Removed capabilities
- // +optional
- repeated string drop = 2;
- }
- // Represents a Ceph Filesystem mount that lasts the lifetime of a pod
- // Cephfs volumes do not support ownership management or SELinux relabeling.
- message CephFSVolumeSource {
- // Required: Monitors is a collection of Ceph monitors
- // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
- repeated string monitors = 1;
- // Optional: Used as the mounted root, rather than the full Ceph tree, default is /
- // +optional
- optional string path = 2;
- // Optional: User is the rados user name, default is admin
- // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
- // +optional
- optional string user = 3;
- // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
- // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
- // +optional
- optional string secretFile = 4;
- // Optional: SecretRef is reference to the authentication secret for User, default is empty.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
- // +optional
- optional LocalObjectReference secretRef = 5;
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
- // +optional
- optional bool readOnly = 6;
- }
- // Represents a cinder volume resource in Openstack.
- // A Cinder volume must exist before mounting to a container.
- // The volume must also be in the same region as the kubelet.
- // Cinder volumes support ownership management and SELinux relabeling.
- message CinderVolumeSource {
- // volume id used to identify the volume in cinder
- // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
- optional string volumeID = 1;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
- // +optional
- optional string fsType = 2;
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
- // +optional
- optional bool readOnly = 3;
- }
- // Information about the condition of a component.
- message ComponentCondition {
- // Type of condition for a component.
- // Valid value: "Healthy"
- optional string type = 1;
- // Status of the condition for a component.
- // Valid values for "Healthy": "True", "False", or "Unknown".
- optional string status = 2;
- // Message about the condition for a component.
- // For example, information about a health check.
- // +optional
- optional string message = 3;
- // Condition error code for a component.
- // For example, a health check error code.
- // +optional
- optional string error = 4;
- }
- // ComponentStatus (and ComponentStatusList) holds the cluster validation info.
- message ComponentStatus {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // List of component conditions observed
- // +optional
- repeated ComponentCondition conditions = 2;
- }
- // Status of all the conditions for the component as a list of ComponentStatus objects.
- message ComponentStatusList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of ComponentStatus objects.
- repeated ComponentStatus items = 2;
- }
- // ConfigMap holds configuration data for pods to consume.
- message ConfigMap {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Data contains the configuration data.
- // Each key must be a valid DNS_SUBDOMAIN with an optional leading dot.
- // +optional
- map<string, string> data = 2;
- }
- // ConfigMapEnvSource selects a ConfigMap to populate the environment
- // variables with.
- //
- // The contents of the target ConfigMap's Data field will represent the
- // key-value pairs as environment variables.
- message ConfigMapEnvSource {
- // The ConfigMap to select from.
- optional LocalObjectReference localObjectReference = 1;
- // Specify whether the ConfigMap must be defined
- // +optional
- optional bool optional = 2;
- }
- // Selects a key from a ConfigMap.
- message ConfigMapKeySelector {
- // The ConfigMap to select from.
- optional LocalObjectReference localObjectReference = 1;
- // The key to select.
- optional string key = 2;
- // Specify whether the ConfigMap or it's key must be defined
- // +optional
- optional bool optional = 3;
- }
- // ConfigMapList is a resource containing a list of ConfigMap objects.
- message ConfigMapList {
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is the list of ConfigMaps.
- repeated ConfigMap items = 2;
- }
- // Adapts a ConfigMap into a projected volume.
- //
- // The contents of the target ConfigMap's Data field will be presented in a
- // projected volume as files using the keys in the Data field as the file names,
- // unless the items element is populated with specific mappings of keys to paths.
- // Note that this is identical to a configmap volume source without the default
- // mode.
- message ConfigMapProjection {
- optional LocalObjectReference localObjectReference = 1;
- // If unspecified, each key-value pair in the Data field of the referenced
- // ConfigMap will be projected into the volume as a file whose name is the
- // key and content is the value. If specified, the listed keys will be
- // projected into the specified paths, and unlisted keys will not be
- // present. If a key is specified which is not present in the ConfigMap,
- // the volume setup will error unless it is marked optional. Paths must be
- // relative and may not contain the '..' path or start with '..'.
- // +optional
- repeated KeyToPath items = 2;
- // Specify whether the ConfigMap or it's keys must be defined
- // +optional
- optional bool optional = 4;
- }
- // Adapts a ConfigMap into a volume.
- //
- // The contents of the target ConfigMap's Data field will be presented in a
- // volume as files using the keys in the Data field as the file names, unless
- // the items element is populated with specific mappings of keys to paths.
- // ConfigMap volumes support ownership management and SELinux relabeling.
- message ConfigMapVolumeSource {
- optional LocalObjectReference localObjectReference = 1;
- // If unspecified, each key-value pair in the Data field of the referenced
- // ConfigMap will be projected into the volume as a file whose name is the
- // key and content is the value. If specified, the listed keys will be
- // projected into the specified paths, and unlisted keys will not be
- // present. If a key is specified which is not present in the ConfigMap,
- // the volume setup will error unless it is marked optional. Paths must be
- // relative and may not contain the '..' path or start with '..'.
- // +optional
- repeated KeyToPath items = 2;
- // Optional: mode bits to use on created files by default. Must be a
- // value between 0 and 0777. Defaults to 0644.
- // Directories within the path are not affected by this setting.
- // This might be in conflict with other options that affect the file
- // mode, like fsGroup, and the result can be other mode bits set.
- // +optional
- optional int32 defaultMode = 3;
- // Specify whether the ConfigMap or it's keys must be defined
- // +optional
- optional bool optional = 4;
- }
- // A single application container that you want to run within a pod.
- message Container {
- // Name of the container specified as a DNS_LABEL.
- // Each container in a pod must have a unique name (DNS_LABEL).
- // Cannot be updated.
- optional string name = 1;
- // Docker image name.
- // More info: http://kubernetes.io/docs/user-guide/images
- // +optional
- optional string image = 2;
- // Entrypoint array. Not executed within a shell.
- // The docker image's ENTRYPOINT is used if this is not provided.
- // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
- // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
- // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
- // regardless of whether the variable exists or not.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands
- // +optional
- repeated string command = 3;
- // Arguments to the entrypoint.
- // The docker image's CMD is used if this is not provided.
- // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
- // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
- // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
- // regardless of whether the variable exists or not.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands
- // +optional
- repeated string args = 4;
- // Container's working directory.
- // If not specified, the container runtime's default will be used, which
- // might be configured in the container image.
- // Cannot be updated.
- // +optional
- optional string workingDir = 5;
- // List of ports to expose from the container. Exposing a port here gives
- // the system additional information about the network connections a
- // container uses, but is primarily informational. Not specifying a port here
- // DOES NOT prevent that port from being exposed. Any port which is
- // listening on the default "0.0.0.0" address inside a container will be
- // accessible from the network.
- // Cannot be updated.
- // +optional
- repeated ContainerPort ports = 6;
- // List of sources to populate environment variables in the container.
- // The keys defined within a source must be a C_IDENTIFIER. All invalid keys
- // will be reported as an event when the container is starting. When a key exists in multiple
- // sources, the value associated with the last source will take precedence.
- // Values defined by an Env with a duplicate key will take precedence.
- // Cannot be updated.
- // +optional
- repeated EnvFromSource envFrom = 19;
- // List of environment variables to set in the container.
- // Cannot be updated.
- // +optional
- repeated EnvVar env = 7;
- // Compute Resources required by this container.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources
- // +optional
- optional ResourceRequirements resources = 8;
- // Pod volumes to mount into the container's filesystem.
- // Cannot be updated.
- // +optional
- repeated VolumeMount volumeMounts = 9;
- // Periodic probe of container liveness.
- // Container will be restarted if the probe fails.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
- // +optional
- optional Probe livenessProbe = 10;
- // Periodic probe of container service readiness.
- // Container will be removed from service endpoints if the probe fails.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
- // +optional
- optional Probe readinessProbe = 11;
- // Actions that the management system should take in response to container lifecycle events.
- // Cannot be updated.
- // +optional
- optional Lifecycle lifecycle = 12;
- // Optional: Path at which the file to which the container's termination message
- // will be written is mounted into the container's filesystem.
- // Message written is intended to be brief final status, such as an assertion failure message.
- // Will be truncated by the node if greater than 4096 bytes. The total message length across
- // all containers will be limited to 12kb.
- // Defaults to /dev/termination-log.
- // Cannot be updated.
- // +optional
- optional string terminationMessagePath = 13;
- // Indicate how the termination message should be populated. File will use the contents of
- // terminationMessagePath to populate the container status message on both success and failure.
- // FallbackToLogsOnError will use the last chunk of container log output if the termination
- // message file is empty and the container exited with an error.
- // The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
- // Defaults to File.
- // Cannot be updated.
- // +optional
- optional string terminationMessagePolicy = 20;
- // Image pull policy.
- // One of Always, Never, IfNotPresent.
- // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/images#updating-images
- // +optional
- optional string imagePullPolicy = 14;
- // Security options the pod should run with.
- // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md
- // +optional
- optional SecurityContext securityContext = 15;
- // Whether this container should allocate a buffer for stdin in the container runtime. If this
- // is not set, reads from stdin in the container will always result in EOF.
- // Default is false.
- // +optional
- optional bool stdin = 16;
- // Whether the container runtime should close the stdin channel after it has been opened by
- // a single attach. When stdin is true the stdin stream will remain open across multiple attach
- // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
- // first client attaches to stdin, and then remains open and accepts data until the client disconnects,
- // at which time stdin is closed and remains closed until the container is restarted. If this
- // flag is false, a container processes that reads from stdin will never receive an EOF.
- // Default is false
- // +optional
- optional bool stdinOnce = 17;
- // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
- // Default is false.
- // +optional
- optional bool tty = 18;
- }
- // Describe a container image
- message ContainerImage {
- // Names by which this image is known.
- // e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]
- repeated string names = 1;
- // The size of the image in bytes.
- // +optional
- optional int64 sizeBytes = 2;
- }
- // ContainerPort represents a network port in a single container.
- message ContainerPort {
- // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
- // named port in a pod must have a unique name. Name for the port that can be
- // referred to by services.
- // +optional
- optional string name = 1;
- // Number of port to expose on the host.
- // If specified, this must be a valid port number, 0 < x < 65536.
- // If HostNetwork is specified, this must match ContainerPort.
- // Most containers do not need this.
- // +optional
- optional int32 hostPort = 2;
- // Number of port to expose on the pod's IP address.
- // This must be a valid port number, 0 < x < 65536.
- optional int32 containerPort = 3;
- // Protocol for port. Must be UDP or TCP.
- // Defaults to "TCP".
- // +optional
- optional string protocol = 4;
- // What host IP to bind the external port to.
- // +optional
- optional string hostIP = 5;
- }
- // ContainerState holds a possible state of container.
- // Only one of its members may be specified.
- // If none of them is specified, the default one is ContainerStateWaiting.
- message ContainerState {
- // Details about a waiting container
- // +optional
- optional ContainerStateWaiting waiting = 1;
- // Details about a running container
- // +optional
- optional ContainerStateRunning running = 2;
- // Details about a terminated container
- // +optional
- optional ContainerStateTerminated terminated = 3;
- }
- // ContainerStateRunning is a running state of a container.
- message ContainerStateRunning {
- // Time at which the container was last (re-)started
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;
- }
- // ContainerStateTerminated is a terminated state of a container.
- message ContainerStateTerminated {
- // Exit status from the last termination of the container
- optional int32 exitCode = 1;
- // Signal from the last termination of the container
- // +optional
- optional int32 signal = 2;
- // (brief) reason from the last termination of the container
- // +optional
- optional string reason = 3;
- // Message regarding the last termination of the container
- // +optional
- optional string message = 4;
- // Time at which previous execution of the container started
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;
- // Time at which the container last terminated
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;
- // Container's ID in the format 'docker://<container_id>'
- // +optional
- optional string containerID = 7;
- }
- // ContainerStateWaiting is a waiting state of a container.
- message ContainerStateWaiting {
- // (brief) reason the container is not yet running.
- // +optional
- optional string reason = 1;
- // Message regarding why the container is not yet running.
- // +optional
- optional string message = 2;
- }
- // ContainerStatus contains details for the current status of this container.
- message ContainerStatus {
- // This must be a DNS_LABEL. Each container in a pod must have a unique name.
- // Cannot be updated.
- optional string name = 1;
- // Details about the container's current condition.
- // +optional
- optional ContainerState state = 2;
- // Details about the container's last termination condition.
- // +optional
- optional ContainerState lastState = 3;
- // Specifies whether the container has passed its readiness probe.
- optional bool ready = 4;
- // The number of times the container has been restarted, currently based on
- // the number of dead containers that have not yet been removed.
- // Note that this is calculated from dead containers. But those containers are subject to
- // garbage collection. This value will get capped at 5 by GC.
- optional int32 restartCount = 5;
- // The image the container is running.
- // More info: http://kubernetes.io/docs/user-guide/images
- // TODO(dchen1107): Which image the container is running with?
- optional string image = 6;
- // ImageID of the container's image.
- optional string imageID = 7;
- // Container's ID in the format 'docker://<container_id>'.
- // More info: http://kubernetes.io/docs/user-guide/container-environment#container-information
- // +optional
- optional string containerID = 8;
- }
- // DaemonEndpoint contains information about a single Daemon endpoint.
- message DaemonEndpoint {
- // Port number of the given endpoint.
- optional int32 Port = 1;
- }
- // DeleteOptions may be provided when deleting an API object
- // DEPRECATED: This type has been moved to meta/v1 and will be removed soon.
- // +k8s:openapi-gen=false
- message DeleteOptions {
- // The duration in seconds before the object should be deleted. Value must be non-negative integer.
- // The value zero indicates delete immediately. If this value is nil, the default grace period for the
- // specified type will be used.
- // Defaults to a per object value if not specified. zero means delete immediately.
- // +optional
- optional int64 gracePeriodSeconds = 1;
- // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be
- // returned.
- // +optional
- optional Preconditions preconditions = 2;
- // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7.
- // Should the dependent objects be orphaned. If true/false, the "orphan"
- // finalizer will be added to/removed from the object's finalizers list.
- // Either this field or PropagationPolicy may be set, but not both.
- // +optional
- optional bool orphanDependents = 3;
- // Whether and how garbage collection will be performed.
- // Either this field or OrphanDependents may be set, but not both.
- // The default policy is decided by the existing finalizer set in the
- // metadata.finalizers and the resource-specific default policy.
- // +optional
- optional string propagationPolicy = 4;
- }
- // Represents downward API info for projecting into a projected volume.
- // Note that this is identical to a downwardAPI volume source without the default
- // mode.
- message DownwardAPIProjection {
- // Items is a list of DownwardAPIVolume file
- // +optional
- repeated DownwardAPIVolumeFile items = 1;
- }
- // DownwardAPIVolumeFile represents information to create the file containing the pod field
- message DownwardAPIVolumeFile {
- // 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 '..'
- optional string path = 1;
- // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
- // +optional
- optional ObjectFieldSelector fieldRef = 2;
- // Selects a resource of the container: only resources limits and requests
- // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
- // +optional
- optional ResourceFieldSelector resourceFieldRef = 3;
- // Optional: mode bits to use on this file, must be a value between 0
- // and 0777. If not specified, the volume defaultMode will be used.
- // This might be in conflict with other options that affect the file
- // mode, like fsGroup, and the result can be other mode bits set.
- // +optional
- optional int32 mode = 4;
- }
- // DownwardAPIVolumeSource represents a volume containing downward API info.
- // Downward API volumes support ownership management and SELinux relabeling.
- message DownwardAPIVolumeSource {
- // Items is a list of downward API volume file
- // +optional
- repeated DownwardAPIVolumeFile items = 1;
- // Optional: mode bits to use on created files by default. Must be a
- // value between 0 and 0777. Defaults to 0644.
- // Directories within the path are not affected by this setting.
- // This might be in conflict with other options that affect the file
- // mode, like fsGroup, and the result can be other mode bits set.
- // +optional
- optional int32 defaultMode = 2;
- }
- // Represents an empty directory for a pod.
- // Empty directory volumes support ownership management and SELinux relabeling.
- message EmptyDirVolumeSource {
- // What type of storage medium should back this directory.
- // The default is "" which means to use the node's default medium.
- // Must be an empty string (default) or Memory.
- // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir
- // +optional
- optional string medium = 1;
- }
- // EndpointAddress is a tuple that describes single IP address.
- message EndpointAddress {
- // The IP of this endpoint.
- // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16),
- // or link-local multicast ((224.0.0.0/24).
- // IPv6 is also accepted but not fully supported on all platforms. Also, certain
- // kubernetes components, like kube-proxy, are not IPv6 ready.
- // TODO: This should allow hostname or IP, See #4447.
- optional string ip = 1;
- // The Hostname of this endpoint
- // +optional
- optional string hostname = 3;
- // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
- // +optional
- optional string nodeName = 4;
- // Reference to object providing the endpoint.
- // +optional
- optional ObjectReference targetRef = 2;
- }
- // EndpointPort is a tuple that describes a single port.
- message EndpointPort {
- // The name of this port (corresponds to ServicePort.Name).
- // Must be a DNS_LABEL.
- // Optional only if one port is defined.
- // +optional
- optional string name = 1;
- // The port number of the endpoint.
- optional int32 port = 2;
- // The IP protocol for this port.
- // Must be UDP or TCP.
- // Default is TCP.
- // +optional
- optional string protocol = 3;
- }
- // EndpointSubset is a group of addresses with a common set of ports. The
- // expanded set of endpoints is the Cartesian product of Addresses x Ports.
- // For example, given:
- // {
- // Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
- // Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
- // }
- // The resulting set of endpoints can be viewed as:
- // a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
- // b: [ 10.10.1.1:309, 10.10.2.2:309 ]
- message EndpointSubset {
- // IP addresses which offer the related ports that are marked as ready. These endpoints
- // should be considered safe for load balancers and clients to utilize.
- // +optional
- repeated EndpointAddress addresses = 1;
- // IP addresses which offer the related ports but are not currently marked as ready
- // because they have not yet finished starting, have recently failed a readiness check,
- // or have recently failed a liveness check.
- // +optional
- repeated EndpointAddress notReadyAddresses = 2;
- // Port numbers available on the related IP addresses.
- // +optional
- repeated EndpointPort ports = 3;
- }
- // Endpoints is a collection of endpoints that implement the actual service. Example:
- // Name: "mysvc",
- // Subsets: [
- // {
- // Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
- // Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
- // },
- // {
- // Addresses: [{"ip": "10.10.3.3"}],
- // Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
- // },
- // ]
- message Endpoints {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // The set of all endpoints is the union of all subsets. Addresses are placed into
- // subsets according to the IPs they share. A single address with multiple ports,
- // some of which are ready and some of which are not (because they come from
- // different containers) will result in the address being displayed in different
- // subsets for the different ports. No address will appear in both Addresses and
- // NotReadyAddresses in the same subset.
- // Sets of addresses and ports that comprise a service.
- repeated EndpointSubset subsets = 2;
- }
- // EndpointsList is a list of endpoints.
- message EndpointsList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of endpoints.
- repeated Endpoints items = 2;
- }
- // EnvFromSource represents the source of a set of ConfigMaps
- message EnvFromSource {
- // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
- // +optional
- optional string prefix = 1;
- // The ConfigMap to select from
- // +optional
- optional ConfigMapEnvSource configMapRef = 2;
- // The Secret to select from
- // +optional
- optional SecretEnvSource secretRef = 3;
- }
- // EnvVar represents an environment variable present in a Container.
- message EnvVar {
- // Name of the environment variable. Must be a C_IDENTIFIER.
- optional string name = 1;
- // Variable references $(VAR_NAME) are expanded
- // using the previous defined environment variables in the container and
- // any service environment variables. If a variable cannot be resolved,
- // the reference in the input string will be unchanged. The $(VAR_NAME)
- // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped
- // references will never be expanded, regardless of whether the variable
- // exists or not.
- // Defaults to "".
- // +optional
- optional string value = 2;
- // Source for the environment variable's value. Cannot be used if value is not empty.
- // +optional
- optional EnvVarSource valueFrom = 3;
- }
- // EnvVarSource represents a source for the value of an EnvVar.
- message EnvVarSource {
- // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations,
- // spec.nodeName, spec.serviceAccountName, status.podIP.
- // +optional
- optional ObjectFieldSelector fieldRef = 1;
- // Selects a resource of the container: only resources limits and requests
- // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
- // +optional
- optional ResourceFieldSelector resourceFieldRef = 2;
- // Selects a key of a ConfigMap.
- // +optional
- optional ConfigMapKeySelector configMapKeyRef = 3;
- // Selects a key of a secret in the pod's namespace
- // +optional
- optional SecretKeySelector secretKeyRef = 4;
- }
- // Event is a report of an event somewhere in the cluster.
- // TODO: Decide whether to store these separately or with the object they apply to.
- message Event {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // The object that this event is about.
- optional ObjectReference involvedObject = 2;
- // This should be a short, machine understandable string that gives the reason
- // for the transition into the object's current status.
- // TODO: provide exact specification for format.
- // +optional
- optional string reason = 3;
- // A human-readable description of the status of this operation.
- // TODO: decide on maximum length.
- // +optional
- optional string message = 4;
- // The component reporting this event. Should be a short machine understandable string.
- // +optional
- optional EventSource source = 5;
- // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;
- // The time at which the most recent occurrence of this event was recorded.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;
- // The number of times this event has occurred.
- // +optional
- optional int32 count = 8;
- // Type of this event (Normal, Warning), new types could be added in the future
- // +optional
- optional string type = 9;
- }
- // EventList is a list of events.
- message EventList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of events
- repeated Event items = 2;
- }
- // EventSource contains information for an event.
- message EventSource {
- // Component from which the event is generated.
- // +optional
- optional string component = 1;
- // Node name on which the event is generated.
- // +optional
- optional string host = 2;
- }
- // ExecAction describes a "run in container" action.
- message ExecAction {
- // Command is the command line to execute inside the container, the working directory for the
- // command is root ('/') in the container's filesystem. The command is simply exec'd, it is
- // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
- // a shell, you need to explicitly call out to that shell.
- // Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
- // +optional
- repeated string command = 1;
- }
- // Represents a Fibre Channel volume.
- // Fibre Channel volumes can only be mounted as read/write once.
- // Fibre Channel volumes support ownership management and SELinux relabeling.
- message FCVolumeSource {
- // Required: FC target worldwide names (WWNs)
- repeated string targetWWNs = 1;
- // Required: FC target lun number
- optional int32 lun = 2;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- // +optional
- optional string fsType = 3;
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // +optional
- optional bool readOnly = 4;
- }
- // FlexVolume represents a generic volume resource that is
- // provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.
- message FlexVolumeSource {
- // Driver is the name of the driver to use for this volume.
- optional string driver = 1;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
- // +optional
- optional string fsType = 2;
- // Optional: SecretRef is reference to the secret object containing
- // sensitive information to pass to the plugin scripts. This may be
- // empty if no secret object is specified. If the secret object
- // contains more than one secret, all secrets are passed to the plugin
- // scripts.
- // +optional
- optional LocalObjectReference secretRef = 3;
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // +optional
- optional bool readOnly = 4;
- // Optional: Extra command options if any.
- // +optional
- map<string, string> options = 5;
- }
- // Represents a Flocker volume mounted by the Flocker agent.
- // One and only one of datasetName and datasetUUID should be set.
- // Flocker volumes do not support ownership management or SELinux relabeling.
- message FlockerVolumeSource {
- // Name of the dataset stored as metadata -> name on the dataset for Flocker
- // should be considered as deprecated
- // +optional
- optional string datasetName = 1;
- // UUID of the dataset. This is unique identifier of a Flocker dataset
- // +optional
- optional string datasetUUID = 2;
- }
- // Represents a Persistent Disk resource in Google Compute Engine.
- //
- // A GCE PD must exist before mounting to a container. The disk must
- // also be in the same GCE project and zone as the kubelet. A GCE PD
- // can only be mounted as read/write once or read-only many times. GCE
- // PDs support ownership management and SELinux relabeling.
- message GCEPersistentDiskVolumeSource {
- // Unique name of the PD resource in GCE. Used to identify the disk in GCE.
- // More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
- optional string pdName = 1;
- // Filesystem type of the volume that you want to mount.
- // Tip: Ensure that the filesystem type is supported by the host operating system.
- // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- // +optional
- optional string fsType = 2;
- // The partition in the volume that you want to mount.
- // If omitted, the default is to mount by volume name.
- // Examples: For volume /dev/sda1, you specify the partition as "1".
- // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
- // More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
- // +optional
- optional int32 partition = 3;
- // ReadOnly here will force the ReadOnly setting in VolumeMounts.
- // Defaults to false.
- // More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
- // +optional
- optional bool readOnly = 4;
- }
- // Represents a volume that is populated with the contents of a git repository.
- // Git repo volumes do not support ownership management.
- // Git repo volumes support SELinux relabeling.
- message GitRepoVolumeSource {
- // Repository URL
- optional string repository = 1;
- // Commit hash for the specified revision.
- // +optional
- optional string revision = 2;
- // Target directory name.
- // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the
- // git repository. Otherwise, if specified, the volume will contain the git repository in
- // the subdirectory with the given name.
- // +optional
- optional string directory = 3;
- }
- // Represents a Glusterfs mount that lasts the lifetime of a pod.
- // Glusterfs volumes do not support ownership management or SELinux relabeling.
- message GlusterfsVolumeSource {
- // EndpointsName is the endpoint name that details Glusterfs topology.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
- optional string endpoints = 1;
- // Path is the Glusterfs volume path.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
- optional string path = 2;
- // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.
- // Defaults to false.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
- // +optional
- optional bool readOnly = 3;
- }
- // HTTPGetAction describes an action based on HTTP Get requests.
- message HTTPGetAction {
- // Path to access on the HTTP server.
- // +optional
- optional string path = 1;
- // Name or number of the port to access on the container.
- // Number must be in the range 1 to 65535.
- // Name must be an IANA_SVC_NAME.
- optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
- // Host name to connect to, defaults to the pod IP. You probably want to set
- // "Host" in httpHeaders instead.
- // +optional
- optional string host = 3;
- // Scheme to use for connecting to the host.
- // Defaults to HTTP.
- // +optional
- optional string scheme = 4;
- // Custom headers to set in the request. HTTP allows repeated headers.
- // +optional
- repeated HTTPHeader httpHeaders = 5;
- }
- // HTTPHeader describes a custom header to be used in HTTP probes
- message HTTPHeader {
- // The header field name
- optional string name = 1;
- // The header field value
- optional string value = 2;
- }
- // Handler defines a specific action that should be taken
- // TODO: pass structured data to these actions, and document that data here.
- message Handler {
- // One and only one of the following should be specified.
- // Exec specifies the action to take.
- // +optional
- optional ExecAction exec = 1;
- // HTTPGet specifies the http request to perform.
- // +optional
- optional HTTPGetAction httpGet = 2;
- // TCPSocket specifies an action involving a TCP port.
- // TCP hooks not yet supported
- // TODO: implement a realistic TCP lifecycle hook
- // +optional
- optional TCPSocketAction tcpSocket = 3;
- }
- // Represents a host path mapped into a pod.
- // Host path volumes do not support ownership management or SELinux relabeling.
- message HostPathVolumeSource {
- // Path of the directory on the host.
- // More info: http://kubernetes.io/docs/user-guide/volumes#hostpath
- optional string path = 1;
- }
- // Represents an ISCSI disk.
- // ISCSI volumes can only be mounted as read/write once.
- // ISCSI volumes support ownership management and SELinux relabeling.
- message ISCSIVolumeSource {
- // iSCSI target portal. The portal is either an IP or ip_addr:port if the port
- // is other than default (typically TCP ports 860 and 3260).
- optional string targetPortal = 1;
- // Target iSCSI Qualified Name.
- optional string iqn = 2;
- // iSCSI target lun number.
- optional int32 lun = 3;
- // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.
- // +optional
- optional string iscsiInterface = 4;
- // Filesystem type of the volume that you want to mount.
- // Tip: Ensure that the filesystem type is supported by the host operating system.
- // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: http://kubernetes.io/docs/user-guide/volumes#iscsi
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- // +optional
- optional string fsType = 5;
- // ReadOnly here will force the ReadOnly setting in VolumeMounts.
- // Defaults to false.
- // +optional
- optional bool readOnly = 6;
- // iSCSI target portal List. The portal is either an IP or ip_addr:port if the port
- // is other than default (typically TCP ports 860 and 3260).
- // +optional
- repeated string portals = 7;
- }
- // Maps a string key to a path within a volume.
- message KeyToPath {
- // The key to project.
- optional string key = 1;
- // The relative path of the file to map the key to.
- // May not be an absolute path.
- // May not contain the path element '..'.
- // May not start with the string '..'.
- optional string path = 2;
- // Optional: mode bits to use on this file, must be a value between 0
- // and 0777. If not specified, the volume defaultMode will be used.
- // This might be in conflict with other options that affect the file
- // mode, like fsGroup, and the result can be other mode bits set.
- // +optional
- optional int32 mode = 3;
- }
- // Lifecycle describes actions that the management system should take in response to container lifecycle
- // events. For the PostStart and PreStop lifecycle handlers, management of the container blocks
- // until the action is complete, unless the container process fails, in which case the handler is aborted.
- message Lifecycle {
- // PostStart is called immediately after a container is created. If the handler fails,
- // the container is terminated and restarted according to its restart policy.
- // Other management of the container blocks until the hook completes.
- // More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details
- // +optional
- optional Handler postStart = 1;
- // PreStop is called immediately before a container is terminated.
- // The container is terminated after the handler completes.
- // The reason for termination is passed to the handler.
- // Regardless of the outcome of the handler, the container is eventually terminated.
- // Other management of the container blocks until the hook completes.
- // More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details
- // +optional
- optional Handler preStop = 2;
- }
- // LimitRange sets resource usage limits for each kind of resource in a Namespace.
- message LimitRange {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the limits enforced.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional LimitRangeSpec spec = 2;
- }
- // LimitRangeItem defines a min/max usage limit for any resource that matches on kind.
- message LimitRangeItem {
- // Type of resource that this limit applies to.
- // +optional
- optional string type = 1;
- // Max usage constraints on this kind by resource name.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> max = 2;
- // Min usage constraints on this kind by resource name.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> min = 3;
- // Default resource requirement limit value by resource name if resource limit is omitted.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> default = 4;
- // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> defaultRequest = 5;
- // 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.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> maxLimitRequestRatio = 6;
- }
- // LimitRangeList is a list of LimitRange items.
- message LimitRangeList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is a list of LimitRange objects.
- // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md
- repeated LimitRange items = 2;
- }
- // LimitRangeSpec defines a min/max usage limit for resources that match on kind.
- message LimitRangeSpec {
- // Limits is the list of LimitRangeItem objects that are enforced.
- repeated LimitRangeItem limits = 1;
- }
- // List holds a list of objects, which may not be known by the server.
- message List {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of objects
- repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;
- }
- // ListOptions is the query options to a standard REST list call.
- // DEPRECATED: This type has been moved to meta/v1 and will be removed soon.
- // +k8s:openapi-gen=false
- message ListOptions {
- // A selector to restrict the list of returned objects by their labels.
- // Defaults to everything.
- // +optional
- optional string labelSelector = 1;
- // A selector to restrict the list of returned objects by their fields.
- // Defaults to everything.
- // +optional
- optional string fieldSelector = 2;
- // Watch for changes to the described resources and return them as a stream of
- // add, update, and remove notifications. Specify resourceVersion.
- // +optional
- optional bool watch = 3;
- // When specified with a watch call, shows changes that occur after that particular version of a resource.
- // Defaults to changes from the beginning of history.
- // When specified for list:
- // - if unset, then the result is returned from remote storage based on quorum-read flag;
- // - if it's 0, then we simply return what we currently have in cache, no guarantee;
- // - if set to non zero, then the result is at least as fresh as given rv.
- // +optional
- optional string resourceVersion = 4;
- // Timeout for the list/watch call.
- // +optional
- optional int64 timeoutSeconds = 5;
- }
- // LoadBalancerIngress represents the status of a load-balancer ingress point:
- // traffic intended for the service should be sent to an ingress point.
- message LoadBalancerIngress {
- // IP is set for load-balancer ingress points that are IP based
- // (typically GCE or OpenStack load-balancers)
- // +optional
- optional string ip = 1;
- // Hostname is set for load-balancer ingress points that are DNS based
- // (typically AWS load-balancers)
- // +optional
- optional string hostname = 2;
- }
- // LoadBalancerStatus represents the status of a load-balancer.
- message LoadBalancerStatus {
- // Ingress is a list containing ingress points for the load-balancer.
- // Traffic intended for the service should be sent to these ingress points.
- // +optional
- repeated LoadBalancerIngress ingress = 1;
- }
- // LocalObjectReference contains enough information to let you locate the
- // referenced object inside the same namespace.
- message LocalObjectReference {
- // Name of the referent.
- // More info: http://kubernetes.io/docs/user-guide/identifiers#names
- // TODO: Add other useful fields. apiVersion, kind, uid?
- // +optional
- optional string name = 1;
- }
- // Represents an NFS mount that lasts the lifetime of a pod.
- // NFS volumes do not support ownership management or SELinux relabeling.
- message NFSVolumeSource {
- // Server is the hostname or IP address of the NFS server.
- // More info: http://kubernetes.io/docs/user-guide/volumes#nfs
- optional string server = 1;
- // Path that is exported by the NFS server.
- // More info: http://kubernetes.io/docs/user-guide/volumes#nfs
- optional string path = 2;
- // ReadOnly here will force
- // the NFS export to be mounted with read-only permissions.
- // Defaults to false.
- // More info: http://kubernetes.io/docs/user-guide/volumes#nfs
- // +optional
- optional bool readOnly = 3;
- }
- // Namespace provides a scope for Names.
- // Use of multiple namespaces is optional.
- message Namespace {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the behavior of the Namespace.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional NamespaceSpec spec = 2;
- // Status describes the current status of a Namespace.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional NamespaceStatus status = 3;
- }
- // NamespaceList is a list of Namespaces.
- message NamespaceList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is the list of Namespace objects in the list.
- // More info: http://kubernetes.io/docs/user-guide/namespaces
- repeated Namespace items = 2;
- }
- // NamespaceSpec describes the attributes on a Namespace.
- message NamespaceSpec {
- // Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
- // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers
- // +optional
- repeated string finalizers = 1;
- }
- // NamespaceStatus is information about the current status of a Namespace.
- message NamespaceStatus {
- // Phase is the current lifecycle phase of the namespace.
- // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases
- // +optional
- optional string phase = 1;
- }
- // Node is a worker node in Kubernetes.
- // Each node will have a unique identifier in the cache (i.e. in etcd).
- message Node {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the behavior of a node.
- // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional NodeSpec spec = 2;
- // Most recently observed status of the node.
- // Populated by the system.
- // Read-only.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional NodeStatus status = 3;
- }
- // NodeAddress contains information for the node's address.
- message NodeAddress {
- // Node address type, one of Hostname, ExternalIP or InternalIP.
- optional string type = 1;
- // The node address.
- optional string address = 2;
- }
- // Node affinity is a group of node affinity scheduling rules.
- message NodeAffinity {
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to an update), the system
- // may or may not try to eventually evict the pod from its node.
- // +optional
- optional NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;
- // The scheduler will prefer to schedule pods to nodes that satisfy
- // the affinity expressions specified by this field, but it may choose
- // a node that violates one or more of the expressions. The node that is
- // most preferred is the one with the greatest sum of weights, i.e.
- // for each node that meets all of the scheduling requirements (resource
- // request, requiredDuringScheduling affinity expressions, etc.),
- // compute a sum by iterating through the elements of this field and adding
- // "weight" to the sum if the node matches the corresponding matchExpressions; the
- // node(s) with the highest sum are the most preferred.
- // +optional
- repeated PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
- }
- // NodeCondition contains condition information for a node.
- message NodeCondition {
- // Type of node condition.
- optional string type = 1;
- // Status of the condition, one of True, False, Unknown.
- optional string status = 2;
- // Last time we got an update on a given condition.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;
- // Last time the condition transit from one status to another.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
- // (brief) reason for the condition's last transition.
- // +optional
- optional string reason = 5;
- // Human readable message indicating details about last transition.
- // +optional
- optional string message = 6;
- }
- // NodeDaemonEndpoints lists ports opened by daemons running on the Node.
- message NodeDaemonEndpoints {
- // Endpoint on which Kubelet is listening.
- // +optional
- optional DaemonEndpoint kubeletEndpoint = 1;
- }
- // NodeList is the whole list of all Nodes which have been registered with master.
- message NodeList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of nodes
- repeated Node items = 2;
- }
- // NodeProxyOptions is the query options to a Node's proxy call.
- message NodeProxyOptions {
- // Path is the URL path to use for the current proxy request to node.
- // +optional
- optional string path = 1;
- }
- // NodeResources is an object for conveying resource information about a node.
- // see http://releases.k8s.io/HEAD/docs/design/resources.md for more details.
- message NodeResources {
- // Capacity represents the available resources of a node
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 1;
- }
- // A node selector represents the union of the results of one or more label queries
- // over a set of nodes; that is, it represents the OR of the selectors represented
- // by the node selector terms.
- message NodeSelector {
- // Required. A list of node selector terms. The terms are ORed.
- repeated NodeSelectorTerm nodeSelectorTerms = 1;
- }
- // A node selector requirement is a selector that contains values, a key, and an operator
- // that relates the key and values.
- message NodeSelectorRequirement {
- // The label key that the selector applies to.
- optional string key = 1;
- // Represents a key's relationship to a set of values.
- // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
- optional string operator = 2;
- // An array of string values. If the operator is In or NotIn,
- // the values array must be non-empty. If the operator is Exists or DoesNotExist,
- // the values array must be empty. If the operator is Gt or Lt, the values
- // array must have a single element, which will be interpreted as an integer.
- // This array is replaced during a strategic merge patch.
- // +optional
- repeated string values = 3;
- }
- // A null or empty node selector term matches no objects.
- message NodeSelectorTerm {
- // Required. A list of node selector requirements. The requirements are ANDed.
- repeated NodeSelectorRequirement matchExpressions = 1;
- }
- // NodeSpec describes the attributes that a node is created with.
- message NodeSpec {
- // PodCIDR represents the pod IP range assigned to the node.
- // +optional
- optional string podCIDR = 1;
- // External ID of the node assigned by some machine database (e.g. a cloud provider).
- // Deprecated.
- // +optional
- optional string externalID = 2;
- // ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID>
- // +optional
- optional string providerID = 3;
- // Unschedulable controls node schedulability of new pods. By default, node is schedulable.
- // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration
- // +optional
- optional bool unschedulable = 4;
- // If specified, the node's taints.
- // +optional
- repeated Taint taints = 5;
- }
- // NodeStatus is information about the current status of a node.
- message NodeStatus {
- // Capacity represents the total resources of a node.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 1;
- // Allocatable represents the resources of a node that are available for scheduling.
- // Defaults to Capacity.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> allocatable = 2;
- // NodePhase is the recently observed lifecycle phase of the node.
- // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase
- // The field is never populated, and now is deprecated.
- // +optional
- optional string phase = 3;
- // Conditions is an array of current observed node conditions.
- // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition
- // +optional
- repeated NodeCondition conditions = 4;
- // List of addresses reachable to the node.
- // Queried from cloud provider, if available.
- // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses
- // +optional
- repeated NodeAddress addresses = 5;
- // Endpoints of daemons running on the Node.
- // +optional
- optional NodeDaemonEndpoints daemonEndpoints = 6;
- // Set of ids/uuids to uniquely identify the node.
- // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info
- // +optional
- optional NodeSystemInfo nodeInfo = 7;
- // List of container images on this node
- // +optional
- repeated ContainerImage images = 8;
- // List of attachable volumes in use (mounted) by the node.
- // +optional
- repeated string volumesInUse = 9;
- // List of volumes that are attached to the node.
- // +optional
- repeated AttachedVolume volumesAttached = 10;
- }
- // NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
- message NodeSystemInfo {
- // MachineID reported by the node. For unique machine identification
- // in the cluster this field is prefered. Learn more from man(5)
- // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
- optional string machineID = 1;
- // SystemUUID reported by the node. For unique machine identification
- // MachineID is prefered. This field is specific to Red Hat hosts
- // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html
- optional string systemUUID = 2;
- // Boot ID reported by the node.
- optional string bootID = 3;
- // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
- optional string kernelVersion = 4;
- // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
- optional string osImage = 5;
- // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).
- optional string containerRuntimeVersion = 6;
- // Kubelet Version reported by the node.
- optional string kubeletVersion = 7;
- // KubeProxy Version reported by the node.
- optional string kubeProxyVersion = 8;
- // The Operating System reported by the node
- optional string operatingSystem = 9;
- // The Architecture reported by the node
- optional string architecture = 10;
- }
- // ObjectFieldSelector selects an APIVersioned field of an object.
- message ObjectFieldSelector {
- // Version of the schema the FieldPath is written in terms of, defaults to "v1".
- // +optional
- optional string apiVersion = 1;
- // Path of the field to select in the specified API version.
- optional string fieldPath = 2;
- }
- // ObjectMeta is metadata that all persisted resources must have, which includes all objects
- // users must create.
- // DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon.
- // +k8s:openapi-gen=false
- message ObjectMeta {
- // Name must be unique within a namespace. Is required when creating resources, although
- // some resources may allow a client to request the generation of an appropriate name
- // automatically. Name is primarily intended for creation idempotence and configuration
- // definition.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/identifiers#names
- // +optional
- optional string name = 1;
- // GenerateName is an optional prefix, used by the server, to generate a unique
- // name ONLY IF the Name field has not been provided.
- // If this field is used, the name returned to the client will be different
- // than the name passed. This value will also be combined with a unique suffix.
- // The provided value has the same validation rules as the Name field,
- // and may be truncated by the length of the suffix required to make the value
- // unique on the server.
- //
- // If this field is specified and the generated name exists, the server will
- // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason
- // ServerTimeout indicating a unique name could not be found in the time allotted, and the client
- // should retry (optionally after the time indicated in the Retry-After header).
- //
- // Applied only if Name is not specified.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency
- // +optional
- optional string generateName = 2;
- // Namespace defines the space within each name must be unique. An empty namespace is
- // equivalent to the "default" namespace, but "default" is the canonical representation.
- // Not all objects are required to be scoped to a namespace - the value of this field for
- // those objects will be empty.
- //
- // Must be a DNS_LABEL.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/namespaces
- // +optional
- optional string namespace = 3;
- // SelfLink is a URL representing this object.
- // Populated by the system.
- // Read-only.
- // +optional
- optional string selfLink = 4;
- // UID is the unique in time and space value for this object. It is typically generated by
- // the server on successful creation of a resource and is not allowed to change on PUT
- // operations.
- //
- // Populated by the system.
- // Read-only.
- // More info: http://kubernetes.io/docs/user-guide/identifiers#uids
- // +optional
- optional string uid = 5;
- // An opaque value that represents the internal version of this object that can
- // be used by clients to determine when objects have changed. May be used for optimistic
- // concurrency, change detection, and the watch operation on a resource or set of resources.
- // Clients must treat these values as opaque and passed unmodified back to the server.
- // They may only be valid for a particular resource or set of resources.
- //
- // Populated by the system.
- // Read-only.
- // Value must be treated as opaque by clients and .
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency
- // +optional
- optional string resourceVersion = 6;
- // A sequence number representing a specific generation of the desired state.
- // Populated by the system. Read-only.
- // +optional
- optional int64 generation = 7;
- // CreationTimestamp is a timestamp representing the server time when this object was
- // created. It is not guaranteed to be set in happens-before order across separate operations.
- // Clients may not set this value. It is represented in RFC3339 form and is in UTC.
- //
- // Populated by the system.
- // Read-only.
- // Null for lists.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time creationTimestamp = 8;
- // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This
- // field is set by the server when a graceful deletion is requested by the user, and is not
- // directly settable by a client. The resource is expected to be deleted (no longer visible
- // from resource lists, and not reachable by name) after the time in this field. Once set,
- // this value may not be unset or be set further into the future, although it may be shortened
- // or the resource may be deleted prior to this time. For example, a user may request that
- // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination
- // signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard
- // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the
- // API. In the presence of network partitions, this object may still exist after this
- // timestamp, until an administrator or automated process can determine the resource is
- // fully terminated.
- // If not set, graceful deletion of the object has not been requested.
- //
- // Populated by the system when a graceful deletion is requested.
- // Read-only.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deletionTimestamp = 9;
- // Number of seconds allowed for this object to gracefully terminate before
- // it will be removed from the system. Only set when deletionTimestamp is also set.
- // May only be shortened.
- // Read-only.
- // +optional
- optional int64 deletionGracePeriodSeconds = 10;
- // Map of string keys and values that can be used to organize and categorize
- // (scope and select) objects. May match selectors of replication controllers
- // and services.
- // More info: http://kubernetes.io/docs/user-guide/labels
- // +optional
- map<string, string> labels = 11;
- // Annotations is an unstructured key value map stored with a resource that may be
- // set by external tools to store and retrieve arbitrary metadata. They are not
- // queryable and should be preserved when modifying objects.
- // More info: http://kubernetes.io/docs/user-guide/annotations
- // +optional
- map<string, string> annotations = 12;
- // List of objects depended by this object. If ALL objects in the list have
- // been deleted, this object will be garbage collected. If this object is managed by a controller,
- // then an entry in this list will point to this controller, with the controller field set to true.
- // There cannot be more than one managing controller.
- // +optional
- repeated k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference ownerReferences = 13;
- // Must be empty before the object is deleted from the registry. Each entry
- // is an identifier for the responsible component that will remove the entry
- // from the list. If the deletionTimestamp of the object is non-nil, entries
- // in this list can only be removed.
- // +optional
- repeated string finalizers = 14;
- // The name of the cluster which the object belongs to.
- // This is used to distinguish resources with same name and namespace in different clusters.
- // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
- // +optional
- optional string clusterName = 15;
- }
- // ObjectReference contains enough information to let you inspect or modify the referred object.
- message ObjectReference {
- // Kind of the referent.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional string kind = 1;
- // Namespace of the referent.
- // More info: http://kubernetes.io/docs/user-guide/namespaces
- // +optional
- optional string namespace = 2;
- // Name of the referent.
- // More info: http://kubernetes.io/docs/user-guide/identifiers#names
- // +optional
- optional string name = 3;
- // UID of the referent.
- // More info: http://kubernetes.io/docs/user-guide/identifiers#uids
- // +optional
- optional string uid = 4;
- // API version of the referent.
- // +optional
- optional string apiVersion = 5;
- // Specific resourceVersion to which this reference is made, if any.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency
- // +optional
- optional string resourceVersion = 6;
- // If referring to a piece of an object instead of an entire object, this string
- // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
- // For example, if the object reference is to a container within a pod, this would take on a value like:
- // "spec.containers{name}" (where "name" refers to the name of the container that triggered
- // the event) or if no container name is specified "spec.containers[2]" (container with
- // index 2 in this pod). This syntax is chosen only to have some well-defined way of
- // referencing a part of an object.
- // TODO: this design is not final and this field is subject to change in the future.
- // +optional
- optional string fieldPath = 7;
- }
- // PersistentVolume (PV) is a storage resource provisioned by an administrator.
- // It is analogous to a node.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes
- message PersistentVolume {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines a specification of a persistent volume owned by the cluster.
- // Provisioned by an administrator.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes
- // +optional
- optional PersistentVolumeSpec spec = 2;
- // Status represents the current information/status for the persistent volume.
- // Populated by the system.
- // Read-only.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes
- // +optional
- optional PersistentVolumeStatus status = 3;
- }
- // PersistentVolumeClaim is a user's request for and claim to a persistent volume
- message PersistentVolumeClaim {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the desired characteristics of a volume requested by a pod author.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims
- // +optional
- optional PersistentVolumeClaimSpec spec = 2;
- // Status represents the current information/status of a persistent volume claim.
- // Read-only.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims
- // +optional
- optional PersistentVolumeClaimStatus status = 3;
- }
- // PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
- message PersistentVolumeClaimList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // A list of persistent volume claims.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims
- repeated PersistentVolumeClaim items = 2;
- }
- // PersistentVolumeClaimSpec describes the common attributes of storage devices
- // and allows a Source for provider-specific attributes
- message PersistentVolumeClaimSpec {
- // AccessModes contains the desired access modes the volume should have.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1
- // +optional
- repeated string accessModes = 1;
- // A label query over volumes to consider for binding.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
- // Resources represents the minimum resources the volume should have.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources
- // +optional
- optional ResourceRequirements resources = 2;
- // VolumeName is the binding reference to the PersistentVolume backing this claim.
- // +optional
- optional string volumeName = 3;
- // Name of the StorageClass required by the claim.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#class-1
- // +optional
- optional string storageClassName = 5;
- }
- // PersistentVolumeClaimStatus is the current status of a persistent volume claim.
- message PersistentVolumeClaimStatus {
- // Phase represents the current phase of PersistentVolumeClaim.
- // +optional
- optional string phase = 1;
- // AccessModes contains the actual access modes the volume backing the PVC has.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1
- // +optional
- repeated string accessModes = 2;
- // Represents the actual resources of the underlying volume.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 3;
- }
- // PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
- // This volume finds the bound PV and mounts that volume for the pod. A
- // PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another
- // type of volume that is owned by someone else (the system).
- message PersistentVolumeClaimVolumeSource {
- // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims
- optional string claimName = 1;
- // Will force the ReadOnly setting in VolumeMounts.
- // Default false.
- // +optional
- optional bool readOnly = 2;
- }
- // PersistentVolumeList is a list of PersistentVolume items.
- message PersistentVolumeList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of persistent volumes.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes
- repeated PersistentVolume items = 2;
- }
- // PersistentVolumeSource is similar to VolumeSource but meant for the
- // administrator who creates PVs. Exactly one of its members must be set.
- message PersistentVolumeSource {
- // GCEPersistentDisk represents a GCE Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod. Provisioned by an admin.
- // More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
- // +optional
- optional GCEPersistentDiskVolumeSource gcePersistentDisk = 1;
- // AWSElasticBlockStore represents an AWS Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod.
- // More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
- // +optional
- optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;
- // HostPath represents a directory on the host.
- // Provisioned by a developer or tester.
- // This is useful for single-node development and testing only!
- // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
- // More info: http://kubernetes.io/docs/user-guide/volumes#hostpath
- // +optional
- optional HostPathVolumeSource hostPath = 3;
- // Glusterfs represents a Glusterfs volume that is attached to a host and
- // exposed to the pod. Provisioned by an admin.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
- // +optional
- optional GlusterfsVolumeSource glusterfs = 4;
- // NFS represents an NFS mount on the host. Provisioned by an admin.
- // More info: http://kubernetes.io/docs/user-guide/volumes#nfs
- // +optional
- optional NFSVolumeSource nfs = 5;
- // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
- // +optional
- optional RBDVolumeSource rbd = 6;
- // ISCSI represents an ISCSI Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod. Provisioned by an admin.
- // +optional
- optional ISCSIVolumeSource iscsi = 7;
- // Cinder represents a cinder volume attached and mounted on kubelets host machine
- // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
- // +optional
- optional CinderVolumeSource cinder = 8;
- // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
- // +optional
- optional CephFSVolumeSource cephfs = 9;
- // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
- // +optional
- optional FCVolumeSource fc = 10;
- // 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
- // +optional
- optional FlockerVolumeSource flocker = 11;
- // FlexVolume represents a generic volume resource that is
- // provisioned/attached using an exec based plugin. This is an
- // alpha feature and may change in future.
- // +optional
- optional FlexVolumeSource flexVolume = 12;
- // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
- // +optional
- optional AzureFileVolumeSource azureFile = 13;
- // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
- // +optional
- optional VsphereVirtualDiskVolumeSource vsphereVolume = 14;
- // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
- // +optional
- optional QuobyteVolumeSource quobyte = 15;
- // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
- // +optional
- optional AzureDiskVolumeSource azureDisk = 16;
- // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
- optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;
- // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
- // +optional
- optional PortworxVolumeSource portworxVolume = 18;
- // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
- // +optional
- optional ScaleIOVolumeSource scaleIO = 19;
- }
- // PersistentVolumeSpec is the specification of a persistent volume.
- message PersistentVolumeSpec {
- // A description of the persistent volume's resources and capacity.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 1;
- // The actual volume backing the persistent volume.
- optional PersistentVolumeSource persistentVolumeSource = 2;
- // AccessModes contains all ways the volume can be mounted.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes
- // +optional
- repeated string accessModes = 3;
- // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
- // Expected to be non-nil when bound.
- // claim.VolumeName is the authoritative bind between PV and PVC.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding
- // +optional
- optional ObjectReference claimRef = 4;
- // What happens to a persistent volume when released from its claim.
- // Valid options are Retain (default) and Recycle.
- // Recycling must be supported by the volume plugin underlying this persistent volume.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy
- // +optional
- optional string persistentVolumeReclaimPolicy = 5;
- // Name of StorageClass to which this persistent volume belongs. Empty value
- // means that this volume does not belong to any StorageClass.
- // +optional
- optional string storageClassName = 6;
- }
- // PersistentVolumeStatus is the current status of a persistent volume.
- message PersistentVolumeStatus {
- // Phase indicates if a volume is available, bound to a claim, or released by a claim.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase
- // +optional
- optional string phase = 1;
- // A human-readable message indicating details about why the volume is in this state.
- // +optional
- optional string message = 2;
- // Reason is a brief CamelCase string that describes any failure and is meant
- // for machine parsing and tidy display in the CLI.
- // +optional
- optional string reason = 3;
- }
- // Represents a Photon Controller persistent disk resource.
- message PhotonPersistentDiskVolumeSource {
- // ID that identifies Photon Controller persistent disk
- optional string pdID = 1;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- optional string fsType = 2;
- }
- // Pod is a collection of containers that can run on a host. This resource is created
- // by clients and scheduled onto hosts.
- message Pod {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Specification of the desired behavior of the pod.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional PodSpec spec = 2;
- // Most recently observed status of the pod.
- // This data may not be up to date.
- // Populated by the system.
- // Read-only.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional PodStatus status = 3;
- }
- // Pod affinity is a group of inter pod affinity scheduling rules.
- message PodAffinity {
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system will try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- // +optional
- // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"`
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system may or may not try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- // +optional
- repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;
- // The scheduler will prefer to schedule pods to nodes that satisfy
- // the affinity expressions specified by this field, but it may choose
- // a node that violates one or more of the expressions. The node that is
- // most preferred is the one with the greatest sum of weights, i.e.
- // for each node that meets all of the scheduling requirements (resource
- // request, requiredDuringScheduling affinity expressions, etc.),
- // compute a sum by iterating through the elements of this field and adding
- // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
- // node(s) with the highest sum are the most preferred.
- // +optional
- repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
- }
- // Defines a set of pods (namely those matching the labelSelector
- // relative to the given namespace(s)) that this pod should be
- // co-located (affinity) or not co-located (anti-affinity) with,
- // where co-located is defined as running on a node whose value of
- // the label with key <topologyKey> tches that of any node on which
- // a pod of the set of pods is running
- message PodAffinityTerm {
- // A label query over a set of resources, in this case pods.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;
- // namespaces specifies which namespaces the labelSelector applies to (matches against);
- // null or empty list means "this pod's namespace"
- repeated string namespaces = 2;
- // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
- // the labelSelector in the specified namespaces, where co-located is defined as running on a node
- // whose value of the label with key topologyKey matches that of any node on which any of the
- // selected pods is running.
- // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies"
- // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains);
- // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.
- // +optional
- optional string topologyKey = 3;
- }
- // Pod anti affinity is a group of inter pod anti affinity scheduling rules.
- message PodAntiAffinity {
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // If the anti-affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the anti-affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system will try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- // +optional
- // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"`
- // If the anti-affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the anti-affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system may or may not try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- // +optional
- repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;
- // The scheduler will prefer to schedule pods to nodes that satisfy
- // the anti-affinity expressions specified by this field, but it may choose
- // a node that violates one or more of the expressions. The node that is
- // most preferred is the one with the greatest sum of weights, i.e.
- // for each node that meets all of the scheduling requirements (resource
- // request, requiredDuringScheduling anti-affinity expressions, etc.),
- // compute a sum by iterating through the elements of this field and adding
- // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
- // node(s) with the highest sum are the most preferred.
- // +optional
- repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
- }
- // PodAttachOptions is the query options to a Pod's remote attach call.
- // ---
- // TODO: merge w/ PodExecOptions below for stdin, stdout, etc
- // and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
- message PodAttachOptions {
- // Stdin if true, redirects the standard input stream of the pod for this call.
- // Defaults to false.
- // +optional
- optional bool stdin = 1;
- // Stdout if true indicates that stdout is to be redirected for the attach call.
- // Defaults to true.
- // +optional
- optional bool stdout = 2;
- // Stderr if true indicates that stderr is to be redirected for the attach call.
- // Defaults to true.
- // +optional
- optional bool stderr = 3;
- // TTY if true indicates that a tty will be allocated for the attach call.
- // This is passed through the container runtime so the tty
- // is allocated on the worker node by the container runtime.
- // Defaults to false.
- // +optional
- optional bool tty = 4;
- // The container in which to execute the command.
- // Defaults to only container if there is only one container in the pod.
- // +optional
- optional string container = 5;
- }
- // PodCondition contains details for the current condition of this pod.
- message PodCondition {
- // Type is the type of the condition.
- // Currently only Ready.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions
- optional string type = 1;
- // Status is the status of the condition.
- // Can be True, False, Unknown.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions
- optional string status = 2;
- // Last time we probed the condition.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
- // Last time the condition transitioned from one status to another.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
- // Unique, one-word, CamelCase reason for the condition's last transition.
- // +optional
- optional string reason = 5;
- // Human-readable message indicating details about last transition.
- // +optional
- optional string message = 6;
- }
- // PodExecOptions is the query options to a Pod's remote exec call.
- // ---
- // TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging
- // and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
- message PodExecOptions {
- // Redirect the standard input stream of the pod for this call.
- // Defaults to false.
- // +optional
- optional bool stdin = 1;
- // Redirect the standard output stream of the pod for this call.
- // Defaults to true.
- // +optional
- optional bool stdout = 2;
- // Redirect the standard error stream of the pod for this call.
- // Defaults to true.
- // +optional
- optional bool stderr = 3;
- // TTY if true indicates that a tty will be allocated for the exec call.
- // Defaults to false.
- // +optional
- optional bool tty = 4;
- // Container in which to execute the command.
- // Defaults to only container if there is only one container in the pod.
- // +optional
- optional string container = 5;
- // Command is the remote command to execute. argv array. Not executed within a shell.
- repeated string command = 6;
- }
- // PodList is a list of Pods.
- message PodList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of pods.
- // More info: http://kubernetes.io/docs/user-guide/pods
- repeated Pod items = 2;
- }
- // PodLogOptions is the query options for a Pod's logs REST call.
- message PodLogOptions {
- // The container for which to stream logs. Defaults to only container if there is one container in the pod.
- // +optional
- optional string container = 1;
- // Follow the log stream of the pod. Defaults to false.
- // +optional
- optional bool follow = 2;
- // Return previous terminated container logs. Defaults to false.
- // +optional
- optional bool previous = 3;
- // A relative time in seconds before the current time from which to show logs. If this value
- // precedes the time a pod was started, only logs since the pod start will be returned.
- // If this value is in the future, no logs will be returned.
- // Only one of sinceSeconds or sinceTime may be specified.
- // +optional
- optional int64 sinceSeconds = 4;
- // An RFC3339 timestamp from which to show logs. If this value
- // precedes the time a pod was started, only logs since the pod start will be returned.
- // If this value is in the future, no logs will be returned.
- // Only one of sinceSeconds or sinceTime may be specified.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;
- // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
- // of log output. Defaults to false.
- // +optional
- optional bool timestamps = 6;
- // If set, the number of lines from the end of the logs to show. If not specified,
- // logs are shown from the creation of the container or sinceSeconds or sinceTime
- // +optional
- optional int64 tailLines = 7;
- // If set, the number of bytes to read from the server before terminating the
- // log output. This may not display a complete final line of logging, and may return
- // slightly more or slightly less than the specified limit.
- // +optional
- optional int64 limitBytes = 8;
- }
- // PodPortForwardOptions is the query options to a Pod's port forward call
- // when using WebSockets.
- // The `port` query parameter must specify the port or
- // ports (comma separated) to forward over.
- // Port forwarding over SPDY does not use these options. It requires the port
- // to be passed in the `port` header as part of request.
- message PodPortForwardOptions {
- // List of ports to forward
- // Required when using WebSockets
- // +optional
- repeated int32 ports = 1;
- }
- // PodProxyOptions is the query options to a Pod's proxy call.
- message PodProxyOptions {
- // Path is the URL path to use for the current proxy request to pod.
- // +optional
- optional string path = 1;
- }
- // PodSecurityContext holds pod-level security attributes and common container settings.
- // Some fields are also present in container.securityContext. Field values of
- // container.securityContext take precedence over field values of PodSecurityContext.
- message PodSecurityContext {
- // The SELinux context to be applied to all containers.
- // If unspecified, the container runtime will allocate a random SELinux context for each
- // container. May also be set in SecurityContext. If set in
- // both SecurityContext and PodSecurityContext, the value specified in SecurityContext
- // takes precedence for that container.
- // +optional
- optional SELinuxOptions seLinuxOptions = 1;
- // The UID to run the entrypoint of the container process.
- // Defaults to user specified in image metadata if unspecified.
- // May also be set in SecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence
- // for that container.
- // +optional
- optional int64 runAsUser = 2;
- // Indicates that the container must run as a non-root user.
- // If true, the Kubelet will validate the image at runtime to ensure that it
- // does not run as UID 0 (root) and fail to start the container if it does.
- // If unset or false, no such validation will be performed.
- // May also be set in SecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- // +optional
- optional bool runAsNonRoot = 3;
- // A list of groups applied to the first process run in each container, in addition
- // to the container's primary GID. If unspecified, no groups will be added to
- // any container.
- // +optional
- repeated int64 supplementalGroups = 4;
- // A special supplemental group that applies to all containers in a pod.
- // Some volume types allow the Kubelet to change the ownership of that volume
- // to be owned by the pod:
- //
- // 1. The owning GID will be the FSGroup
- // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
- // 3. The permission bits are OR'd with rw-rw----
- //
- // If unset, the Kubelet will not modify the ownership and permissions of any volume.
- // +optional
- optional int64 fsGroup = 5;
- }
- // Describes the class of pods that should avoid this node.
- // Exactly one field should be set.
- message PodSignature {
- // Reference to controller whose pods should avoid this node.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;
- }
- // PodSpec is a description of a pod.
- message PodSpec {
- // List of volumes that can be mounted by containers belonging to the pod.
- // More info: http://kubernetes.io/docs/user-guide/volumes
- // +optional
- repeated Volume volumes = 1;
- // List of initialization containers belonging to the pod.
- // Init containers are executed in order prior to containers being started. If any
- // init container fails, the pod is considered to have failed and is handled according
- // to its restartPolicy. The name for an init container or normal container must be
- // unique among all containers.
- // Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes.
- // The resourceRequirements of an init container are taken into account during scheduling
- // by finding the highest request/limit for each resource type, and then using the max of
- // of that value or the sum of the normal containers. Limits are applied to init containers
- // in a similar fashion.
- // Init containers cannot currently be added or removed.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/containers
- repeated Container initContainers = 20;
- // List of containers belonging to the pod.
- // Containers cannot currently be added or removed.
- // There must be at least one container in a Pod.
- // Cannot be updated.
- // More info: http://kubernetes.io/docs/user-guide/containers
- repeated Container containers = 2;
- // Restart policy for all containers within the pod.
- // One of Always, OnFailure, Never.
- // Default to Always.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy
- // +optional
- optional string restartPolicy = 3;
- // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
- // Value must be non-negative integer. The value zero indicates delete immediately.
- // If this value is nil, the default grace period will be used instead.
- // The grace period is the duration in seconds after the processes running in the pod are sent
- // a termination signal and the time when the processes are forcibly halted with a kill signal.
- // Set this value longer than the expected cleanup time for your process.
- // Defaults to 30 seconds.
- // +optional
- optional int64 terminationGracePeriodSeconds = 4;
- // Optional duration in seconds the pod may be active on the node relative to
- // StartTime before the system will actively try to mark it failed and kill associated containers.
- // Value must be a positive integer.
- // +optional
- optional int64 activeDeadlineSeconds = 5;
- // Set DNS policy for containers within the pod.
- // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'.
- // Defaults to "ClusterFirst".
- // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.
- // +optional
- optional string dnsPolicy = 6;
- // NodeSelector is a selector which must be true for the pod to fit on a node.
- // Selector which must match a node's labels for the pod to be scheduled on that node.
- // More info: http://kubernetes.io/docs/user-guide/node-selection/README
- // +optional
- map<string, string> nodeSelector = 7;
- // ServiceAccountName is the name of the ServiceAccount to use to run this pod.
- // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md
- // +optional
- optional string serviceAccountName = 8;
- // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
- // Deprecated: Use serviceAccountName instead.
- // +k8s:conversion-gen=false
- // +optional
- optional string serviceAccount = 9;
- // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
- // +optional
- optional bool automountServiceAccountToken = 21;
- // NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
- // the scheduler simply schedules this pod onto that node, assuming that it fits resource
- // requirements.
- // +optional
- optional string nodeName = 10;
- // Host networking requested for this pod. Use the host's network namespace.
- // If this option is set, the ports that will be used must be specified.
- // Default to false.
- // +k8s:conversion-gen=false
- // +optional
- optional bool hostNetwork = 11;
- // Use the host's pid namespace.
- // Optional: Default to false.
- // +k8s:conversion-gen=false
- // +optional
- optional bool hostPID = 12;
- // Use the host's ipc namespace.
- // Optional: Default to false.
- // +k8s:conversion-gen=false
- // +optional
- optional bool hostIPC = 13;
- // SecurityContext holds pod-level security attributes and common container settings.
- // Optional: Defaults to empty. See type description for default values of each field.
- // +optional
- optional PodSecurityContext securityContext = 14;
- // 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.
- // If specified, these secrets will be passed to individual puller implementations for them to use. For example,
- // in the case of docker, only DockerConfig type secrets are honored.
- // More info: http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod
- // +optional
- repeated LocalObjectReference imagePullSecrets = 15;
- // Specifies the hostname of the Pod
- // If not specified, the pod's hostname will be set to a system-defined value.
- // +optional
- optional string hostname = 16;
- // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
- // If not specified, the pod will not have a domainname at all.
- // +optional
- optional string subdomain = 17;
- // If specified, the pod's scheduling constraints
- // +optional
- optional Affinity affinity = 18;
- // If specified, the pod will be dispatched by specified scheduler.
- // If not specified, the pod will be dispatched by default scheduler.
- // +optional
- optional string schedulerName = 19;
- // If specified, the pod's tolerations.
- // +optional
- repeated Toleration tolerations = 22;
- }
- // PodStatus represents information about the status of a pod. Status may trail the actual
- // state of a system.
- message PodStatus {
- // Current condition of the pod.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-phase
- // +optional
- optional string phase = 1;
- // Current service state of pod.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions
- // +optional
- repeated PodCondition conditions = 2;
- // A human readable message indicating details about why the pod is in this condition.
- // +optional
- optional string message = 3;
- // A brief CamelCase message indicating details about why the pod is in this state.
- // e.g. 'OutOfDisk'
- // +optional
- optional string reason = 4;
- // IP address of the host to which the pod is assigned. Empty if not yet scheduled.
- // +optional
- optional string hostIP = 5;
- // IP address allocated to the pod. Routable at least within the cluster.
- // Empty if not yet allocated.
- // +optional
- optional string podIP = 6;
- // RFC 3339 date and time at which the object was acknowledged by the Kubelet.
- // This is before the Kubelet pulled the container image(s) for the pod.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;
- // The list has one entry per init container in the manifest. The most recent successful
- // init container will have ready = true, the most recently started container will have
- // startTime set.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses
- repeated ContainerStatus initContainerStatuses = 10;
- // The list has one entry per container in the manifest. Each entry is currently the output
- // of `docker inspect`.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses
- // +optional
- repeated ContainerStatus containerStatuses = 8;
- // The Quality of Service (QOS) classification assigned to the pod based on resource requirements
- // See PodQOSClass type for available QOS classes
- // More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md
- // +optional
- optional string qosClass = 9;
- }
- // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
- message PodStatusResult {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Most recently observed status of the pod.
- // This data may not be up to date.
- // Populated by the system.
- // Read-only.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional PodStatus status = 2;
- }
- // PodTemplate describes a template for creating copies of a predefined pod.
- message PodTemplate {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Template defines the pods that will be created from this pod template.
- // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional PodTemplateSpec template = 2;
- }
- // PodTemplateList is a list of PodTemplates.
- message PodTemplateList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of pod templates
- repeated PodTemplate items = 2;
- }
- // PodTemplateSpec describes the data a pod should have when created from a template
- message PodTemplateSpec {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Specification of the desired behavior of the pod.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional PodSpec spec = 2;
- }
- // PortworxVolumeSource represents a Portworx volume resource.
- message PortworxVolumeSource {
- // VolumeID uniquely identifies a Portworx volume
- optional string volumeID = 1;
- // FSType represents the filesystem type to mount
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
- optional string fsType = 2;
- // Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // +optional
- optional bool readOnly = 3;
- }
- // Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
- // +k8s:openapi-gen=false
- message Preconditions {
- // Specifies the target UID.
- // +optional
- optional string uid = 1;
- }
- // Describes a class of pods that should avoid this node.
- message PreferAvoidPodsEntry {
- // The class of pods.
- optional PodSignature podSignature = 1;
- // Time at which this entry was added to the list.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;
- // (brief) reason why this entry was added to the list.
- // +optional
- optional string reason = 3;
- // Human readable message indicating why this entry was added to the list.
- // +optional
- optional string message = 4;
- }
- // An empty preferred scheduling term matches all objects with implicit weight 0
- // (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
- message PreferredSchedulingTerm {
- // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
- optional int32 weight = 1;
- // A node selector term, associated with the corresponding weight.
- optional NodeSelectorTerm preference = 2;
- }
- // Probe describes a health check to be performed against a container to determine whether it is
- // alive or ready to receive traffic.
- message Probe {
- // The action taken to determine the health of a container
- optional Handler handler = 1;
- // Number of seconds after the container has started before liveness probes are initiated.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
- // +optional
- optional int32 initialDelaySeconds = 2;
- // Number of seconds after which the probe times out.
- // Defaults to 1 second. Minimum value is 1.
- // More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
- // +optional
- optional int32 timeoutSeconds = 3;
- // How often (in seconds) to perform the probe.
- // Default to 10 seconds. Minimum value is 1.
- // +optional
- optional int32 periodSeconds = 4;
- // Minimum consecutive successes for the probe to be considered successful after having failed.
- // Defaults to 1. Must be 1 for liveness. Minimum value is 1.
- // +optional
- optional int32 successThreshold = 5;
- // Minimum consecutive failures for the probe to be considered failed after having succeeded.
- // Defaults to 3. Minimum value is 1.
- // +optional
- optional int32 failureThreshold = 6;
- }
- // Represents a projected volume source
- message ProjectedVolumeSource {
- // list of volume projections
- repeated VolumeProjection sources = 1;
- // Mode bits to use on created files by default. Must be a value between
- // 0 and 0777.
- // Directories within the path are not affected by this setting.
- // This might be in conflict with other options that affect the file
- // mode, like fsGroup, and the result can be other mode bits set.
- // +optional
- optional int32 defaultMode = 2;
- }
- // Represents a Quobyte mount that lasts the lifetime of a pod.
- // Quobyte volumes do not support ownership management or SELinux relabeling.
- message QuobyteVolumeSource {
- // Registry represents a single or multiple Quobyte Registry services
- // specified as a string as host:port pair (multiple entries are separated with commas)
- // which acts as the central registry for volumes
- optional string registry = 1;
- // Volume is a string that references an already created Quobyte volume by name.
- optional string volume = 2;
- // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions.
- // Defaults to false.
- // +optional
- optional bool readOnly = 3;
- // User to map volume access to
- // Defaults to serivceaccount user
- // +optional
- optional string user = 4;
- // Group to map volume access to
- // Default is no group
- // +optional
- optional string group = 5;
- }
- // Represents a Rados Block Device mount that lasts the lifetime of a pod.
- // RBD volumes support ownership management and SELinux relabeling.
- message RBDVolumeSource {
- // A collection of Ceph monitors.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
- repeated string monitors = 1;
- // The rados image name.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
- optional string image = 2;
- // Filesystem type of the volume that you want to mount.
- // Tip: Ensure that the filesystem type is supported by the host operating system.
- // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: http://kubernetes.io/docs/user-guide/volumes#rbd
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- // +optional
- optional string fsType = 3;
- // The rados pool name.
- // Default is rbd.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it.
- // +optional
- optional string pool = 4;
- // The rados user name.
- // Default is admin.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
- // +optional
- optional string user = 5;
- // Keyring is the path to key ring for RBDUser.
- // Default is /etc/ceph/keyring.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
- // +optional
- optional string keyring = 6;
- // SecretRef is name of the authentication secret for RBDUser. If provided
- // overrides keyring.
- // Default is nil.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
- // +optional
- optional LocalObjectReference secretRef = 7;
- // ReadOnly here will force the ReadOnly setting in VolumeMounts.
- // Defaults to false.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
- // +optional
- optional bool readOnly = 8;
- }
- // RangeAllocation is not a public type.
- message RangeAllocation {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Range is string that identifies the range represented by 'data'.
- optional string range = 2;
- // Data is a bit array containing all allocated addresses in the previous segment.
- optional bytes data = 3;
- }
- // ReplicationController represents the configuration of a replication controller.
- message ReplicationController {
- // If the Labels of a ReplicationController are empty, they are defaulted to
- // be the same as the Pod(s) that the replication controller manages.
- // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the specification of the desired behavior of the replication controller.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional ReplicationControllerSpec spec = 2;
- // Status is the most recently observed status of the replication controller.
- // This data may be out of date by some window of time.
- // Populated by the system.
- // Read-only.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional ReplicationControllerStatus status = 3;
- }
- // ReplicationControllerCondition describes the state of a replication controller at a certain point.
- message ReplicationControllerCondition {
- // Type of replication controller condition.
- optional string type = 1;
- // Status of the condition, one of True, False, Unknown.
- optional string status = 2;
- // The last time the condition transitioned from one status to another.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
- // The reason for the condition's last transition.
- // +optional
- optional string reason = 4;
- // A human readable message indicating details about the transition.
- // +optional
- optional string message = 5;
- }
- // ReplicationControllerList is a collection of replication controllers.
- message ReplicationControllerList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of replication controllers.
- // More info: http://kubernetes.io/docs/user-guide/replication-controller
- repeated ReplicationController items = 2;
- }
- // ReplicationControllerSpec is the specification of a replication controller.
- message ReplicationControllerSpec {
- // Replicas is the number of desired replicas.
- // This is a pointer to distinguish between explicit zero and unspecified.
- // Defaults to 1.
- // More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller
- // +optional
- optional int32 replicas = 1;
- // Minimum number of seconds for which a newly created pod should be ready
- // without any of its container crashing, for it to be considered available.
- // Defaults to 0 (pod will be considered available as soon as it is ready)
- // +optional
- optional int32 minReadySeconds = 4;
- // Selector is a label query over pods that should match the Replicas count.
- // If Selector is empty, it is defaulted to the labels present on the Pod template.
- // Label keys and values that must match in order to be controlled by this replication
- // controller, if empty defaulted to labels on Pod template.
- // More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
- // +optional
- map<string, string> selector = 2;
- // Template is the object that describes the pod that will be created if
- // insufficient replicas are detected. This takes precedence over a TemplateRef.
- // More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template
- // +optional
- optional PodTemplateSpec template = 3;
- }
- // ReplicationControllerStatus represents the current status of a replication
- // controller.
- message ReplicationControllerStatus {
- // Replicas is the most recently oberved number of replicas.
- // More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller
- optional int32 replicas = 1;
- // The number of pods that have labels matching the labels of the pod template of the replication controller.
- // +optional
- optional int32 fullyLabeledReplicas = 2;
- // The number of ready replicas for this replication controller.
- // +optional
- optional int32 readyReplicas = 4;
- // The number of available replicas (ready for at least minReadySeconds) for this replication controller.
- // +optional
- optional int32 availableReplicas = 5;
- // ObservedGeneration reflects the generation of the most recently observed replication controller.
- // +optional
- optional int64 observedGeneration = 3;
- // Represents the latest available observations of a replication controller's current state.
- // +optional
- repeated ReplicationControllerCondition conditions = 6;
- }
- // ResourceFieldSelector represents container resources (cpu, memory) and their output format
- message ResourceFieldSelector {
- // Container name: required for volumes, optional for env vars
- // +optional
- optional string containerName = 1;
- // Required: resource to select
- optional string resource = 2;
- // Specifies the output format of the exposed resources, defaults to "1"
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;
- }
- // ResourceQuota sets aggregate quota restrictions enforced per namespace
- message ResourceQuota {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the desired quota.
- // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional ResourceQuotaSpec spec = 2;
- // Status defines the actual enforced quota and its current usage.
- // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional ResourceQuotaStatus status = 3;
- }
- // ResourceQuotaList is a list of ResourceQuota items.
- message ResourceQuotaList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is a list of ResourceQuota objects.
- // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota
- repeated ResourceQuota items = 2;
- }
- // ResourceQuotaSpec defines the desired hard limits to enforce for Quota.
- message ResourceQuotaSpec {
- // Hard is the set of desired hard limits for each named resource.
- // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> hard = 1;
- // A collection of filters that must match each object tracked by a quota.
- // If not specified, the quota matches all objects.
- // +optional
- repeated string scopes = 2;
- }
- // ResourceQuotaStatus defines the enforced hard limits and observed use.
- message ResourceQuotaStatus {
- // Hard is the set of enforced hard limits for each named resource.
- // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> hard = 1;
- // Used is the current observed total usage of the resource in the namespace.
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> used = 2;
- }
- // ResourceRequirements describes the compute resource requirements.
- message ResourceRequirements {
- // Limits describes the maximum amount of compute resources allowed.
- // More info: http://kubernetes.io/docs/user-guide/compute-resources/
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> limits = 1;
- // Requests describes the minimum amount of compute resources required.
- // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
- // otherwise to an implementation-defined value.
- // More info: http://kubernetes.io/docs/user-guide/compute-resources/
- // +optional
- map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> requests = 2;
- }
- // SELinuxOptions are the labels to be applied to the container
- message SELinuxOptions {
- // User is a SELinux user label that applies to the container.
- // +optional
- optional string user = 1;
- // Role is a SELinux role label that applies to the container.
- // +optional
- optional string role = 2;
- // Type is a SELinux type label that applies to the container.
- // +optional
- optional string type = 3;
- // Level is SELinux level label that applies to the container.
- // +optional
- optional string level = 4;
- }
- // ScaleIOVolumeSource represents a persistent ScaleIO volume
- message ScaleIOVolumeSource {
- // The host address of the ScaleIO API Gateway.
- optional string gateway = 1;
- // The name of the storage system as configured in ScaleIO.
- optional string system = 2;
- // SecretRef references to the secret for ScaleIO user and other
- // sensitive information. If this is not provided, Login operation will fail.
- optional LocalObjectReference secretRef = 3;
- // Flag to enable/disable SSL communication with Gateway, default false
- // +optional
- optional bool sslEnabled = 4;
- // The name of the Protection Domain for the configured storage (defaults to "default").
- // +optional
- optional string protectionDomain = 5;
- // The Storage Pool associated with the protection domain (defaults to "default").
- // +optional
- optional string storagePool = 6;
- // Indicates whether the storage for a volume should be thick or thin (defaults to "thin").
- // +optional
- optional string storageMode = 7;
- // The name of a volume already created in the ScaleIO system
- // that is associated with this volume source.
- optional string volumeName = 8;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // +optional
- optional string fsType = 9;
- // Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- // +optional
- optional bool readOnly = 10;
- }
- // Secret holds secret data of a certain type. The total bytes of the values in
- // the Data field must be less than MaxSecretSize bytes.
- message Secret {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN
- // or leading dot followed by valid DNS_SUBDOMAIN.
- // The serialized form of the secret data is a base64 encoded string,
- // representing the arbitrary (possibly non-string) data value here.
- // Described in https://tools.ietf.org/html/rfc4648#section-4
- // +optional
- map<string, bytes> data = 2;
- // stringData allows specifying non-binary secret data in string form.
- // It is provided as a write-only convenience method.
- // All keys and values are merged into the data field on write, overwriting any existing values.
- // It is never output when reading from the API.
- // +k8s:conversion-gen=false
- // +optional
- map<string, string> stringData = 4;
- // Used to facilitate programmatic handling of secret data.
- // +optional
- optional string type = 3;
- }
- // SecretEnvSource selects a Secret to populate the environment
- // variables with.
- //
- // The contents of the target Secret's Data field will represent the
- // key-value pairs as environment variables.
- message SecretEnvSource {
- // The Secret to select from.
- optional LocalObjectReference localObjectReference = 1;
- // Specify whether the Secret must be defined
- // +optional
- optional bool optional = 2;
- }
- // SecretKeySelector selects a key of a Secret.
- message SecretKeySelector {
- // The name of the secret in the pod's namespace to select from.
- optional LocalObjectReference localObjectReference = 1;
- // The key of the secret to select from. Must be a valid secret key.
- optional string key = 2;
- // Specify whether the Secret or it's key must be defined
- // +optional
- optional bool optional = 3;
- }
- // SecretList is a list of Secret.
- message SecretList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // Items is a list of secret objects.
- // More info: http://kubernetes.io/docs/user-guide/secrets
- repeated Secret items = 2;
- }
- // Adapts a secret into a projected volume.
- //
- // The contents of the target Secret's Data field will be presented in a
- // projected volume as files using the keys in the Data field as the file names.
- // Note that this is identical to a secret volume source without the default
- // mode.
- message SecretProjection {
- optional LocalObjectReference localObjectReference = 1;
- // If unspecified, each key-value pair in the Data field of the referenced
- // Secret will be projected into the volume as a file whose name is the
- // key and content is the value. If specified, the listed keys will be
- // projected into the specified paths, and unlisted keys will not be
- // present. If a key is specified which is not present in the Secret,
- // the volume setup will error unless it is marked optional. Paths must be
- // relative and may not contain the '..' path or start with '..'.
- // +optional
- repeated KeyToPath items = 2;
- // Specify whether the Secret or its key must be defined
- // +optional
- optional bool optional = 4;
- }
- // Adapts a Secret into a volume.
- //
- // The contents of the target Secret's Data field will be presented in a volume
- // as files using the keys in the Data field as the file names.
- // Secret volumes support ownership management and SELinux relabeling.
- message SecretVolumeSource {
- // Name of the secret in the pod's namespace to use.
- // More info: http://kubernetes.io/docs/user-guide/volumes#secrets
- // +optional
- optional string secretName = 1;
- // If unspecified, each key-value pair in the Data field of the referenced
- // Secret will be projected into the volume as a file whose name is the
- // key and content is the value. If specified, the listed keys will be
- // projected into the specified paths, and unlisted keys will not be
- // present. If a key is specified which is not present in the Secret,
- // the volume setup will error unless it is marked optional. Paths must be
- // relative and may not contain the '..' path or start with '..'.
- // +optional
- repeated KeyToPath items = 2;
- // Optional: mode bits to use on created files by default. Must be a
- // value between 0 and 0777. Defaults to 0644.
- // Directories within the path are not affected by this setting.
- // This might be in conflict with other options that affect the file
- // mode, like fsGroup, and the result can be other mode bits set.
- // +optional
- optional int32 defaultMode = 3;
- // Specify whether the Secret or it's keys must be defined
- // +optional
- optional bool optional = 4;
- }
- // SecurityContext holds security configuration that will be applied to a container.
- // Some fields are present in both SecurityContext and PodSecurityContext. When both
- // are set, the values in SecurityContext take precedence.
- message SecurityContext {
- // The capabilities to add/drop when running containers.
- // Defaults to the default set of capabilities granted by the container runtime.
- // +optional
- optional Capabilities capabilities = 1;
- // Run container in privileged mode.
- // Processes in privileged containers are essentially equivalent to root on the host.
- // Defaults to false.
- // +optional
- optional bool privileged = 2;
- // The SELinux context to be applied to the container.
- // If unspecified, the container runtime will allocate a random SELinux context for each
- // container. May also be set in PodSecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- // +optional
- optional SELinuxOptions seLinuxOptions = 3;
- // The UID to run the entrypoint of the container process.
- // Defaults to user specified in image metadata if unspecified.
- // May also be set in PodSecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- // +optional
- optional int64 runAsUser = 4;
- // Indicates that the container must run as a non-root user.
- // If true, the Kubelet will validate the image at runtime to ensure that it
- // does not run as UID 0 (root) and fail to start the container if it does.
- // If unset or false, no such validation will be performed.
- // May also be set in PodSecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- // +optional
- optional bool runAsNonRoot = 5;
- // Whether this container has a read-only root filesystem.
- // Default is false.
- // +optional
- optional bool readOnlyRootFilesystem = 6;
- }
- // SerializedReference is a reference to serialized object.
- message SerializedReference {
- // The reference to an object in the system.
- // +optional
- optional ObjectReference reference = 1;
- }
- // Service is a named abstraction of software service (for example, mysql) consisting of local port
- // (for example 3306) that the proxy listens on, and the selector that determines which pods
- // will answer requests sent through the proxy.
- message Service {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Spec defines the behavior of a service.
- // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional ServiceSpec spec = 2;
- // Most recently observed status of the service.
- // Populated by the system.
- // Read-only.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
- // +optional
- optional ServiceStatus status = 3;
- }
- // ServiceAccount binds together:
- // * a name, understood by users, and perhaps by peripheral systems, for an identity
- // * a principal that can be authenticated and authorized
- // * a set of secrets
- message ServiceAccount {
- // Standard object's metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount.
- // More info: http://kubernetes.io/docs/user-guide/secrets
- // +optional
- repeated ObjectReference secrets = 2;
- // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
- // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
- // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
- // More info: http://kubernetes.io/docs/user-guide/secrets#manually-specifying-an-imagepullsecret
- // +optional
- repeated LocalObjectReference imagePullSecrets = 3;
- // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
- // Can be overridden at the pod level.
- // +optional
- optional bool automountServiceAccountToken = 4;
- }
- // ServiceAccountList is a list of ServiceAccount objects
- message ServiceAccountList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of ServiceAccounts.
- // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts
- repeated ServiceAccount items = 2;
- }
- // ServiceList holds a list of services.
- message ServiceList {
- // Standard list metadata.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // List of services
- repeated Service items = 2;
- }
- // ServicePort contains information on service's port.
- message ServicePort {
- // The name of this port within the service. This must be a DNS_LABEL.
- // All ports within a ServiceSpec must have unique names. This maps to
- // the 'Name' field in EndpointPort objects.
- // Optional if only one ServicePort is defined on this service.
- // +optional
- optional string name = 1;
- // The IP protocol for this port. Supports "TCP" and "UDP".
- // Default is TCP.
- // +optional
- optional string protocol = 2;
- // The port that will be exposed by this service.
- optional int32 port = 3;
- // Number or name of the port to access on the pods targeted by the service.
- // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
- // If this is a string, it will be looked up as a named port in the
- // target Pod's container ports. If this is not specified, the value
- // of the 'port' field is used (an identity map).
- // This field is ignored for services with clusterIP=None, and should be
- // omitted or set equal to the 'port' field.
- // More info: http://kubernetes.io/docs/user-guide/services#defining-a-service
- // +optional
- optional k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;
- // The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
- // Usually assigned by the system. If specified, it will be allocated to the service
- // if unused or else creation of the service will fail.
- // Default is to auto-allocate a port if the ServiceType of this Service requires one.
- // More info: http://kubernetes.io/docs/user-guide/services#type--nodeport
- // +optional
- optional int32 nodePort = 5;
- }
- // ServiceProxyOptions is the query options to a Service's proxy call.
- message ServiceProxyOptions {
- // Path is the part of URLs that include service endpoints, suffixes,
- // and parameters to use for the current proxy request to service.
- // For example, the whole request URL is
- // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
- // Path is _search?q=user:kimchy.
- // +optional
- optional string path = 1;
- }
- // ServiceSpec describes the attributes that a user creates on a service.
- message ServiceSpec {
- // The list of ports that are exposed by this service.
- // More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
- repeated ServicePort ports = 1;
- // Route service traffic to pods with label keys and values matching this
- // selector. If empty or not present, the service is assumed to have an
- // external process managing its endpoints, which Kubernetes will not
- // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
- // Ignored if type is ExternalName.
- // More info: http://kubernetes.io/docs/user-guide/services#overview
- // +optional
- map<string, string> selector = 2;
- // clusterIP is the IP address of the service and is usually assigned
- // randomly by the master. If an address is specified manually and is not in
- // use by others, it will be allocated to the service; otherwise, creation
- // of the service will fail. This field can not be changed through updates.
- // Valid values are "None", empty string (""), or a valid IP address. "None"
- // can be specified for headless services when proxying is not required.
- // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if
- // type is ExternalName.
- // More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
- // +optional
- optional string clusterIP = 3;
- // type determines how the Service is exposed. Defaults to ClusterIP. Valid
- // options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
- // "ExternalName" maps to the specified externalName.
- // "ClusterIP" allocates a cluster-internal IP address for load-balancing to
- // endpoints. Endpoints are determined by the selector or if that is not
- // specified, by manual construction of an Endpoints object. If clusterIP is
- // "None", no virtual IP is allocated and the endpoints are published as a
- // set of endpoints rather than a stable IP.
- // "NodePort" builds on ClusterIP and allocates a port on every node which
- // routes to the clusterIP.
- // "LoadBalancer" builds on NodePort and creates an
- // external load-balancer (if supported in the current cloud) which routes
- // to the clusterIP.
- // More info: http://kubernetes.io/docs/user-guide/services#overview
- // +optional
- optional string type = 4;
- // externalIPs is a list of IP addresses for which nodes in the cluster
- // will also accept traffic for this service. These IPs are not managed by
- // Kubernetes. The user is responsible for ensuring that traffic arrives
- // at a node with this IP. A common example is external load-balancers
- // that are not part of the Kubernetes system. A previous form of this
- // functionality exists as the deprecatedPublicIPs field. When using this
- // field, callers should also clear the deprecatedPublicIPs field.
- // +optional
- repeated string externalIPs = 5;
- // deprecatedPublicIPs is deprecated and replaced by the externalIPs field
- // with almost the exact same semantics. This field is retained in the v1
- // API for compatibility until at least 8/20/2016. It will be removed from
- // any new API revisions. If both deprecatedPublicIPs *and* externalIPs are
- // set, deprecatedPublicIPs is used.
- // +k8s:conversion-gen=false
- // +optional
- repeated string deprecatedPublicIPs = 6;
- // Supports "ClientIP" and "None". Used to maintain session affinity.
- // Enable client IP based session affinity.
- // Must be ClientIP or None.
- // Defaults to None.
- // More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
- // +optional
- optional string sessionAffinity = 7;
- // Only applies to Service Type: LoadBalancer
- // LoadBalancer will get created with the IP specified in this field.
- // This feature depends on whether the underlying cloud-provider supports specifying
- // the loadBalancerIP when a load balancer is created.
- // This field will be ignored if the cloud-provider does not support the feature.
- // +optional
- optional string loadBalancerIP = 8;
- // If specified and supported by the platform, this will restrict traffic through the cloud-provider
- // load-balancer will be restricted to the specified client IPs. This field will be ignored if the
- // cloud-provider does not support the feature."
- // More info: http://kubernetes.io/docs/user-guide/services-firewalls
- // +optional
- repeated string loadBalancerSourceRanges = 9;
- // externalName is the external reference that kubedns or equivalent will
- // return as a CNAME record for this service. No proxying will be involved.
- // Must be a valid DNS name and requires Type to be ExternalName.
- // +optional
- optional string externalName = 10;
- }
- // ServiceStatus represents the current status of a service.
- message ServiceStatus {
- // LoadBalancer contains the current status of the load-balancer,
- // if one is present.
- // +optional
- optional LoadBalancerStatus loadBalancer = 1;
- }
- message Sysctl {
- optional string name = 1;
- optional string value = 2;
- }
- // TCPSocketAction describes an action based on opening a socket
- message TCPSocketAction {
- // Number or name of the port to access on the container.
- // Number must be in the range 1 to 65535.
- // Name must be an IANA_SVC_NAME.
- optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;
- }
- // The node this Taint is attached to has the effect "effect" on
- // any pod that that does not tolerate the Taint.
- message Taint {
- // Required. The taint key to be applied to a node.
- optional string key = 1;
- // Required. The taint value corresponding to the taint key.
- // +optional
- optional string value = 2;
- // Required. The effect of the taint on pods
- // that do not tolerate the taint.
- // Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
- optional string effect = 3;
- // TimeAdded represents the time at which the taint was added.
- // It is only written for NoExecute taints.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
- }
- // The pod this Toleration is attached to tolerates any taint that matches
- // the triple <key,value,effect> using the matching operator <operator>.
- message Toleration {
- // Key is the taint key that the toleration applies to. Empty means match all taint keys.
- // If the key is empty, operator must be Exists; this combination means to match all values and all keys.
- // +optional
- optional string key = 1;
- // Operator represents a key's relationship to the value.
- // Valid operators are Exists and Equal. Defaults to Equal.
- // Exists is equivalent to wildcard for value, so that a pod can
- // tolerate all taints of a particular category.
- // +optional
- optional string operator = 2;
- // Value is the taint value the toleration matches to.
- // If the operator is Exists, the value should be empty, otherwise just a regular string.
- // +optional
- optional string value = 3;
- // Effect indicates the taint effect to match. Empty means match all taint effects.
- // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
- // +optional
- optional string effect = 4;
- // TolerationSeconds represents the period of time the toleration (which must be
- // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
- // it is not set, which means tolerate the taint forever (do not evict). Zero and
- // negative values will be treated as 0 (evict immediately) by the system.
- // +optional
- optional int64 tolerationSeconds = 5;
- }
- // Volume represents a named volume in a pod that may be accessed by any container in the pod.
- message Volume {
- // Volume's name.
- // Must be a DNS_LABEL and unique within the pod.
- // More info: http://kubernetes.io/docs/user-guide/identifiers#names
- optional string name = 1;
- // VolumeSource represents the location and type of the mounted volume.
- // If not specified, the Volume is implied to be an EmptyDir.
- // This implied behavior is deprecated and will be removed in a future version.
- optional VolumeSource volumeSource = 2;
- }
- // VolumeMount describes a mounting of a Volume within a container.
- message VolumeMount {
- // This must match the Name of a Volume.
- optional string name = 1;
- // Mounted read-only if true, read-write otherwise (false or unspecified).
- // Defaults to false.
- // +optional
- optional bool readOnly = 2;
- // Path within the container at which the volume should be mounted. Must
- // not contain ':'.
- optional string mountPath = 3;
- // Path within the volume from which the container's volume should be mounted.
- // Defaults to "" (volume's root).
- // +optional
- optional string subPath = 4;
- }
- // Projection that may be projected along with other supported volume types
- message VolumeProjection {
- // information about the secret data to project
- optional SecretProjection secret = 1;
- // information about the downwardAPI data to project
- optional DownwardAPIProjection downwardAPI = 2;
- // information about the configMap data to project
- optional ConfigMapProjection configMap = 3;
- }
- // Represents the source of a volume to mount.
- // Only one of its members may be specified.
- message VolumeSource {
- // HostPath represents a pre-existing file or directory on the host
- // machine that is directly exposed to the container. This is generally
- // used for system agents or other privileged things that are allowed
- // to see the host machine. Most containers will NOT need this.
- // More info: http://kubernetes.io/docs/user-guide/volumes#hostpath
- // ---
- // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
- // mount host directories as read/write.
- // +optional
- optional HostPathVolumeSource hostPath = 1;
- // EmptyDir represents a temporary directory that shares a pod's lifetime.
- // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir
- // +optional
- optional EmptyDirVolumeSource emptyDir = 2;
- // GCEPersistentDisk represents a GCE Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod.
- // More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
- // +optional
- optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3;
- // AWSElasticBlockStore represents an AWS Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod.
- // More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
- // +optional
- optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;
- // GitRepo represents a git repository at a particular revision.
- // +optional
- optional GitRepoVolumeSource gitRepo = 5;
- // Secret represents a secret that should populate this volume.
- // More info: http://kubernetes.io/docs/user-guide/volumes#secrets
- // +optional
- optional SecretVolumeSource secret = 6;
- // NFS represents an NFS mount on the host that shares a pod's lifetime
- // More info: http://kubernetes.io/docs/user-guide/volumes#nfs
- // +optional
- optional NFSVolumeSource nfs = 7;
- // ISCSI represents an ISCSI Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md
- // +optional
- optional ISCSIVolumeSource iscsi = 8;
- // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
- // +optional
- optional GlusterfsVolumeSource glusterfs = 9;
- // PersistentVolumeClaimVolumeSource represents a reference to a
- // PersistentVolumeClaim in the same namespace.
- // More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims
- // +optional
- optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;
- // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
- // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
- // +optional
- optional RBDVolumeSource rbd = 11;
- // FlexVolume represents a generic volume resource that is
- // provisioned/attached using an exec based plugin. This is an
- // alpha feature and may change in future.
- // +optional
- optional FlexVolumeSource flexVolume = 12;
- // Cinder represents a cinder volume attached and mounted on kubelets host machine
- // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
- // +optional
- optional CinderVolumeSource cinder = 13;
- // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
- // +optional
- optional CephFSVolumeSource cephfs = 14;
- // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
- // +optional
- optional FlockerVolumeSource flocker = 15;
- // DownwardAPI represents downward API about the pod that should populate this volume
- // +optional
- optional DownwardAPIVolumeSource downwardAPI = 16;
- // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
- // +optional
- optional FCVolumeSource fc = 17;
- // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
- // +optional
- optional AzureFileVolumeSource azureFile = 18;
- // ConfigMap represents a configMap that should populate this volume
- // +optional
- optional ConfigMapVolumeSource configMap = 19;
- // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
- // +optional
- optional VsphereVirtualDiskVolumeSource vsphereVolume = 20;
- // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
- // +optional
- optional QuobyteVolumeSource quobyte = 21;
- // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
- // +optional
- optional AzureDiskVolumeSource azureDisk = 22;
- // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
- optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;
- // Items for all in one resources secrets, configmaps, and downward API
- optional ProjectedVolumeSource projected = 26;
- // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
- // +optional
- optional PortworxVolumeSource portworxVolume = 24;
- // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
- // +optional
- optional ScaleIOVolumeSource scaleIO = 25;
- }
- // Represents a vSphere volume resource.
- message VsphereVirtualDiskVolumeSource {
- // Path that identifies vSphere volume vmdk
- optional string volumePath = 1;
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // +optional
- optional string fsType = 2;
- }
- // The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
- message WeightedPodAffinityTerm {
- // weight associated with matching the corresponding podAffinityTerm,
- // in the range 1-100.
- optional int32 weight = 1;
- // Required. A pod affinity term, associated with the corresponding weight.
- optional PodAffinityTerm podAffinityTerm = 2;
- }
|