는 Kubernetes kubectl 명령 개요

관리 도구 클러스터는 Kubernetes는 대한 명령 kubectl를 실행합니다.

문법

kubectl [command] [TYPE] [NAME] [flags]
  • 명령을 지정 작업이 하나 개 이상의 자원에 의해 수행
  • TYPE : 지정 자원 유형 자원 유형. 자원 유형은 또한 약어의 단수 또는 복수 형태를 지정할 수 있습니다, 대소 문자를 구분합니다
  • 이름이 생략 된 경우 이름, 디스플레이 자원의 모든 세부 사항 대소 문자를 구분합니다
  • 명령 줄 지정된 플래그는 기본값 및 해당 환경 변수를 무시합니다

포맷 출력 포맷 출력

모든 기본 형식 kubectl 명령 출력은 일반 텍스트로 읽을 수 있습니다. 더 많은 정보가 특정 포맷으로 터미널 창에 출력하기 위해서는,지지 kubectl -o 플래그 - 출력 또는 명령에 부가 될 수있다.

문법

kubectl [command] [TYPE] [NAME] -o=<output_format>

그것은 다음과 같은 출력 형식을 지원합니다 :

출력 형식 기술
-o = 사용자 정의 열 = 사양 사용자 정의 테이블을 인쇄 할 컬럼의 쉼표로 구분 된 목록을 사용하여
-o = 사용자 정의 열 파일 = 파일 이름 템플릿 파일 이름 인쇄 테이블 파일을 사용하여 사용자 정의 열
오 = JSON API의 객체 출력 JSON 형식
-o = jsonpath 파일 = 파일 이름 파일에 정의 된 jsonpath 파일 이름 필드 식으로 인쇄
-o = 이름 유일한 자원 이름을 인쇄하지 않고 다른 콘텐츠를 인쇄
-o = 넓은 일반 텍스트 출력 추가 정보. 노드 이름을 포함 포드, 들어
O = YAML API의 객체 출력 형식 YAML
-o = jsonpath = 템플릿 인쇄 필드는 jsonpath 표현에 정의

종류 종류

윈도우의 출력 단자 객체 목록을 정렬하기 위해 첨가 될 수있다 kubectl --sort별로 플래그 지원 명령, 임의의 수 또는 문자열 대상물을 정렬 필드 플래그 --sort - 더를 사용하여 지정된 지정된 필드를 사용 jsonpath 식입니다.

$ kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
#打印按名称排序的pod列表
$ kubectl get pods --sort-by=.metadata.name

kubectl 명령은 상세

옵션 :

      --alsologtostderr[=false]: 同时输出日志到标准错误控制台和文件。
      --api-version="": 和服务端交互使用的API版本。
      --certificate-authority="": 用以进行认证授权的.cert文件路径。
      --client-certificate="": TLS使用的客户端证书路径。
      --client-key="": TLS使用的客户端密钥路径。
      --cluster="": 指定使用的kubeconfig配置文件中的集群名。
      --context="": 指定使用的kubeconfig配置文件中的环境名。
      --insecure-skip-tls-verify[=false]: 如果为true,将不会检查服务器凭证的有效性,这会导致你的HTTPS链接变得不安全。
      --kubeconfig="": 命令行请求使用的配置文件路径。
      --log-backtrace-at=:0: 当日志长度超过定义的行数时,忽略堆栈信息。
      --log-dir="": 如果不为空,将日志文件写入此目录。
      --log-flush-frequency=5s: 刷新日志的最大时间间隔。
      --logtostderr[=true]: 输出日志到标准错误控制台,不输出到文件。
      --match-server-version[=false]: 要求服务端和客户端版本匹配。
      --namespace="": 如果不为空,命令将使用此namespace。
      --password="": API Server进行简单认证使用的密码。
  -s, --server="": Kubernetes API Server的地址和端口号。
      --stderrthreshold=2: 高于此级别的日志将被输出到错误控制台。
      --token="": 认证到API Server使用的令牌。
      --user="": 指定使用的kubeconfig配置文件中的用户名。
      --username="": API Server进行简单认证使用的用户名。
      --v=0: 指定输出日志的级别。
      --vmodule=: 指定输出日志的模块,格式如下:pattern=N,使用逗号分隔。

kubectl 실행

  • 작성 및 미러링 하나 개 이상의 컨테이너를 실행합니다.
  • 또는 컨테이너를 관리 할 수있는 배포 작업을 만듭니다.

구문 :

$ run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

예 :

# 启动nginx实例。
$ kubectl run nginx --image=nginx
# 启动hazelcast实例,暴露容器端口 5701。
$ kubectl run hazelcast --image=hazelcast --port=5701
# 启动hazelcast实例,在容器中设置环境变量“DNS_DOMAIN = cluster”和“POD_NAMESPACE = default”。
$ kubectl run hazelcast --image=hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
# 启动nginx实例,设置副本数5。
$ kubectl run nginx --image=nginx --replicas=5
# 运行 Dry  打印相应的API对象而不创建它们。
$ kubectl run nginx --image=nginx --dry-run

kubectl 주석

업데이트 하나 이상의 자원 주석 정보를 제공합니다.

  • 키 / 값 구성 요소에 의해 주석.
  • 특수 목적 현재 보조 데이터, 툴 및 시스템, 특히, 데이터의 확장 동작 자세한 설명을 저장하는 것이다.
  • --overwrite true의 경우, 기존의 주석을 포함 할 수있다, 그렇지 않으면 오류가 커버 주석을 시도.
  • 당신이 --resource 버전을 설정하면 업데이트가 그렇지 않으면 기존 자원 버전을 사용합니다,이 자원 버전을 사용합니다.
  • 지원 리소스는하지만 (구분하지 않습니다)에 국한되지 않습니다 포함 : 포드 (PO), 서비스 (SVC), replicationcontrollers (RC), 노드 (아니오), 이벤트 (EV), componentstatuses (CS), limitranges (한계), persistentvolumes (태양 광 발전), persistentvolumeclaims (PVC), resourcequotas (할당량) 및 비밀.
$ kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

예 :

# 更新pod “foo”,设置其注解description的值为my frontend。
# 如果同一个注解被赋值了多次,只保存最后一次设置的值。
$ kubectl annotate pods foo description='my frontend'

# 更新“pod.json”文件中type和name字段指定的pod的注解。
$ kubectl annotate -f pod.json description='my frontend'

# 更新pod “foo”,设置其注解description的值为my frontend running nginx,已有的值将被覆盖。
$ kubectl annotate --overwrite pods foo description='my frontend running nginx'

# 更新同一namespace下所有的pod。
$ kubectl annotate pods --all description='my frontend running nginx'

# 仅当pod “foo”当前版本为1时,更新其注解
$ kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

# 更新pod “foo”,删除其注解description。
# 不需要--override选项。
$ kubectl annotate pods foo description-

옵션 :

--all[=false]: 选择namespace中所有指定类型的资源。
-f, --filename=[]: 用来指定待升级资源的文件名,目录名或者URL。
--overwrite[=false]: 如果设置为true,允许覆盖更新注解,否则拒绝更新已存在的注解。
--resource-version="": 如果不为空,仅当资源当前版本和指定版本相同时才能更新注解。仅当更新单个资源时有效。

나머지 옵션은 상위 명령에서 상속됩니다!

kubectl 자동 스케일

포드는 Kubernetes 클러스터 (수평 자동 늘이기)에서 실행의 수 autoscaler가 있습니다 .BREAK 자동 설정을 사용합니다.
배포, ReplicaSet 또는 ReplicationController을 지정하고, 견인기를 정의 된 자원을 만듭니다. 사용 견인기가 자동으로 증가 또는 포드 시스템 구축에 따라 수를 감소 할 수있다.

$ autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

예 :

# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。
$ kubectl autoscale deployment foo --min=2 --max=10

# 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%。
$ kubectl autoscale rc foo --max=5 --cpu-percent=80

적용 kubectl

파일 이름이나 콘솔 입력에 의한 자원의 구성.
JSON과 YAML 설명 파일 형식을 허용합니다.

$ kubectl apply -f FILENAME

예 :

# 将pod.json中的配置应用到pod
$ kubectl apply -f ./pod.json

# 将控制台输入的JSON配置应用到Pod
$ cat pod.json | kubectl apply -f -

옵션 :

  -f, --filename=[]: 包含配置信息的文件名,目录名或者URL。
  -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
      --schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
      --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。

첨부 kubectl

컨테이너 실행의 기존 프로세스에 연결되었습니다.

$ kubectl attach POD -c CONTAINER

예 :

# 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
$ kubectl attach 123456-7890

# 获取pod 123456-7890中ruby-container的输出
$ kubectl attach 123456-7890 -c ruby-container date

# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl attach 123456-7890 -c ruby-container -i -t

옵션 :

  -c, --container="": 容器名。
  -i, --stdin[=false]: 将控制台输入发送到容器。
  -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。

kubectl 설정

구성은 같은 "kubectl 구성 설정 전류 컨텍스트 내로서, kubeconfig 프로필을 수정하는 데 사용되는 하위 명령 -context".
다음과 같은 규칙에 구성 파일을 읽습니다 :

  • --kubeconfig 옵션이 지정되는 경우, 지정된 파일이로드됩니다. 이 옵션은 한 번만 설정할 수 있으며, 다른 파일과 결합되지 않습니다.
  • 당신이 환경 변수 $ KUBECONFIG를 설정하면 모든 파일의 목록 (운영 체제의 기본 시퀀스를 사용) 지정된이 환경 변수, 모든 파일이 병합됩니다를 사용합니다. 값, 문서 세트의 수정 된 값을 수정하는 경우. 값을 생성 할 때, 그 값은 첫 번째 파일 목록에 생성됩니다. 모든 파일의 목록이 존재하지 않는 경우, 목록의 마지막 파일이 생성됩니다.
  • 처음 두가 설정되지 않은 경우, $ {HOME} /. KUBE / 설정 및 기타 파일을 병합하지 않습니다.

kubectl 설정 세트 클러스터
kubeconfig 프로필 클러스터 항목을 설정합니다. 기존의 이름이 지정된 경우, 새로운 분야를 통합하고 기존 필드를 덮어 씁니다.

$ kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certficate/authority] [--api-version=apiversion] [--insecure-skip-tls-verify=true]

# 仅设置e2e集群项中的server字段,不影响其他字段
$ kubectl config set-cluster e2e --server=https://1.2.3.4

# 向e2e集群项中添加认证鉴权数据
$ kubectl config set-cluster e2e --certificate-authority=~/.kube/e2e/kubernetes.ca.crt

# 取消dev集群项中的证书检查
$ kubectl config set-cluster e2e --insecure-skip-tls-verify=true

옵션

      --api-version="": 设置kuebconfig配置文件中集群选项中的api-version。
      --certificate-authority="": 设置kuebconfig配置文件中集群选项中的certificate-authority路径。
      --embed-certs=false: 设置kuebconfig配置文件中集群选项中的embed-certs开关。
      --insecure-skip-tls-verify=false: 设置kuebconfig配置文件中集群选项中的insecure-skip-tls-verify开关。
      --server="": 设置kuebconfig配置文件中集群选项中的server。

kubectl의 구성 셋 컨텍스트
kubeconfig 프로필 환경 항목 설정. 기존의 이름이 지정된 경우, 새로운 분야를 통합하고 기존 필드를 덮어 씁니다.

$ kubectl config set-context NAME [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]

# 设置gce环境项中的user字段,不影响其他字段。
$ kubectl config set-context gce --user=cluster-admin

옵션

      --cluster="": 设置kuebconfig配置文件中环境选项中的集群。
      --namespace="": 设置kuebconfig配置文件中环境选项中的命名空间。
      --user="": 设置kuebconfig配置文件中环境选项中的用户。

kubectl의 설정 세트 - 자격 증명을
구성 파일에 사용자 항목을 kubeconfig 제공. 기존의 이름이 지정된 경우, 새로운 분야를 통합하고 기존 필드를 덮어 씁니다.

클라이언트 인증서 설정 : -client 인증서 = certfile -client- 키 =이 키 파일
비밀 토큰이 제공 : -token = bearer_token
기반 인증 설정 : -username = basic_user -password = basic_password
비밀 토큰 기반 인증을 동시에 사용할 수 없습니다.

$ kubectl config set-credentials NAME [--client-certificate=path/to/certfile] [--client-key=path/to/keyfile] [--token=bearer_token] [--username=basic_user] [--password=basic_password]

# 仅设置cluster-admin用户项下的client-key字段,不影响其他值
$ kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key

# 为cluster-admin用户项设置基础认证选项
$ kubectl config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif

# 为cluster-admin用户项开启证书验证并设置证书文件路径
$ kubectl config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true

옵션

      --client-certificate="": 设置kuebconfig配置文件中用户选项中的证书文件路径。
      --client-key="": 设置kuebconfig配置文件中用户选项中的证书密钥路径。
      --embed-certs=false: 设置kuebconfig配置文件中用户选项中的embed-certs开关。
      --password="": 设置kuebconfig配置文件中用户选项中的密码。
      --token="": 设置kuebconfig配置文件中用户选项中的令牌。
      --username="": 设置kuebconfig配置文件中用户选项中的用户名。

kubectl 구성 설정
한 설정 파일 kubeconfig 값 배치
PROPERTY_NAME 사용. ","분리 된 각 속성 이름 또는 키 맵의 키 맵을 포함 할 수있다. 나타내는 "." 새 값은 PROPERTY_VALUE을 설정합니다.

$ kubectl config set PROPERTY_NAME PROPERTY_VALUE  

kubectl 설정 해제
한 값 kubeconfig 프로파일을 제거한다. PROPERTY_NAME 사용. ""분리는 각각의 특성 이름이나 키 맵 키 맵을 포함 할 수 있습니다. 나타냅니다 "."

$ kubectl config unset PROPERTY_NAME

kubectl의 구성을 사용 문맥은
현재의 구성으로 환경 kubeconfig 항목에 사용한다.

$ kubectl config use-context CONTEXT_NAME

kubectl 구성 뷰
디스플레이 kubeconfig 조합, 또는 지정된 프로파일 kubeconfig 제공한다. 사용자가 지정한 값의 출력을 선택 - 출력 = 템플릿 -template = 템플릿을 사용할 수있다.

$ kubectl config view

# 显示合并后的kubeconfig设置
$ kubectl config view

# 获取e2e用户的密码
$ kubectl config view -o template --template='{{range .users}}{{ if eq .name "e2e" }}{{ index .user.password }}{{end}}{{end}}'

옵션

      --flatten[=false]: 将读取的kubeconfig配置文件扁平输出为自包含的结构(对创建可迁移的kubeconfig配置文件有帮助)
      --merge=true: 按照继承关系合并所有的kubeconfig配置文件。
      --minify[=false]: 如果为true,不显示目前环境未使用到的任何信息。
      --no-headers[=false]: 当使用默认输出格式时不打印标题栏。
  -o, --output="": 输出格式,只能使用json|yaml|wide|name|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...中的一种。参见golang模板[http://golang.org/pkg/text/template/#pkg-overview]和jsonpath模板[http://releases.k8s.io/release-1.1/docs/user-guide/jsonpath.md]。
      --output-version="": 输出资源使用的API版本(默认使用api-version)。
      --raw[=false]: 显示未经格式化的字节信息。
  -a, --show-all[=false]: 打印输出时,显示所有的资源(默认隐藏状态为terminated的pod)。
      --sort-by="": 如果不为空,对输出的多个结果根据指定字段进行排序。该字段使用jsonpath表达式(如“ObjectMeta.Name”)描述,并且该字段只能为字符串或者整数类型。
      --template="": 当指定了-o=go-template或-o=go-template-file时使用的模板字符串或者模板文件。模板的格式为golang模板[http://golang.org/pkg/text/template/#pkg-overview]。

만들 kubectl

파일 이름이나 콘솔 입력으로 자원을 만듭니다.
JSON과 YAML 설명 파일 형식을 허용합니다.

$ kubectl create -f FILENAME

# 使用pod.json文件创建一个pod
$ kubectl create -f ./pod.json

# 通过控制台输入的JSON创建一个pod
$ cat pod.json | kubectl create -f -

# 创建一个名为my-dep的deployment,运行busybox镜像。
$ kubectl create deployment my-dep --image=busybox

# 创建一个名为my-namespace的namespace
$ kubectl create namespace my-namespace

# 创建Service名为my-cs为的clusterIP
$ kubectl create service clusterip my-cs --tcp=5678:8080

# 创建Service名为my-ns的ExternalName
$ kubectl create service externalname my-ns --external-name bar.com

# 创建一个Service名为my-lbs的LoadBalancer。
$ kubectl create service loadbalancer my-lbs --tcp=5678:8080

# 创建service名为my-ns的新的nodeport。
$ kubectl create service nodeport my-ns --tcp=5678:8080

# 创建一个名为my-service-account的 service account
$ kubectl create serviceaccount my-service-account

옵션

  -f, --filename=[]: 用以创建资源的文件名,目录名或者URL。
  -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
      --schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
      --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。

삭제 kubectl

파일 이름, 콘솔 입력, 자원 이름 또는 레이블 선택 삭제 자원으로. JSON과 YAML 설명 파일 형식을 허용합니다.
파일 이름, 유형 및 자원 이름, 자원 유형 및 레이블 선택 : 당신은 다음 매개 변수 유형 중 하나를 지정할 수 있습니다. 참고 : 삭제 작업을 수행하는 동안 삭제 명령은, 만약 누군가 업데이트 작업을 자원의 버전을 확인하지 않습니다, 그가 수행 한 업데이트는 자원과 함께 삭제됩니다.

$ kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

# 通过pod.json文件中指定的资源类型和名称删除一个pod
$ kubectl delete -f ./pod.json

# 通过控制台输入的JSON所指定的资源类型和名称删除一个pod
$ cat pod.json | kubectl delete -f -

# 删除所有名为“baz”和“foo”的pod和service
$ kubectl delete pod,service baz foo

# 删除所有带有lable name=myLabel的pod和service
$ kubectl delete pods,services -l name=myLabel

# 删除UID为1234-56-7890-234234-456456的pod
$ kubectl delete pod 1234-56-7890-234234-456456

# 删除所有的pod
$ kubectl delete pods --all

옵션

      --all[=false]: 使用[-all]选择所有指定的资源。
      --cascade[=true]: 如果为true,级联删除指定资源所管理的其他资源(例如:被replication controller管理的所有pod)。默认为true。
  -f, --filename=[]: 用以指定待删除资源的文件名,目录名或者URL。
      --grace-period=-1: 安全删除资源前等待的秒数。如果为负值则忽略该选项。
      --ignore-not-found[=false]: 当待删除资源未找到时,也认为删除成功。如果设置了--all选项,则默认为true。
  -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
  -l, --selector="": 用于过滤资源的Label。
      --timeout=0: 删除资源的超时设置,0表示根据待删除资源的大小由系统决定。

설명 kubectl

한 / 출력 자원의 세부 사항은 지정했습니다.
설명 API 자세한 명령의 조합, 출력은 자원 세트 또는 통화의 복수를 지정합니다.

$ kubectl describe TYPE NAME_PREFIX

정확하게 일치하는 유형 자원과 NAME_PREFIX, 그렇지 않은 경우 자세한 내용은 자원 NAME_PREFIX로 시작하는 모든 이름이 될 것입니다 출력 존재하는 경우 검사.

지원 리소스는하지만 (구분하지 않습니다)에 국한되지 않습니다 포함 : 포드 (PO), 서비스 (SVC), replicationcontrollers (RC), 노드 (아니오), 이벤트 (EV), componentstatuses (CS), limitranges (한계), persistentvolumes (태양 광 발전), persistentvolumeclaims (PVC), resourcequotas (할당량) 및 비밀.

$ kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)

# 描述一个node
$ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal

# 描述一个pod
$ kubectl describe pods/nginx

# 描述pod.json中的资源类型和名称指定的pod
$ kubectl describe -f pod.json

# 描述所有的pod
$ kubectl describe pods

# 描述所有包含label name=myLabel的pod
$ kubectl describe po -l name=myLabel

# 描述所有被replication controller “frontend”管理的pod(rc创建的pod都以rc的名字作为前缀)
$ kubectl describe pods frontend

옵션

  -f, --filename=[]: 用来指定待描述资源的文件名,目录名或者URL。
  -l, --selector="": 用于过滤资源的Label。

kubectl 편집

기본 리소스 편집기 서버 편집기를 사용합니다.
편집 명령은 직접 자원을 얻기 위해 명령 줄 도구를 사용하여 편집 할 수 있습니다. 이 명령은 "VI"를 사용하여 직접 KUBE_EDITOR, GIT_EDITOR 또는 EDITOR 환경 변수, 또는에 의해 정의 된 편집기를 엽니 다. 여러 소스를 편집 할 수 있지만 모든 변경 사항은 한 번만 제출됩니다. 명령 줄 매개 변수뿐만 아니라, 명령은 파일 이름을 허용하지만, 직선 지정된 파일이 자원의 현재 버전보다 이전이어야합니다.
편집 된 파일은 API 출력의 기본 버전을 사용하거나 명시 적 - 출력 - 버전 옵션에 의해 지정됩니다. 당신은 JSON 형식으로 편집을 사용 -o JSON 옵션을 사용해야 할 경우 기본 출력 형식, YAML입니다.
업데이트 된 자원이 오류가 발생하면하면 실패 업데이 트를 기록, 디스크에 임시 파일을 생성합니다. 다른 사람의 자료를 업데이트 할 때 가장 일반적인 오류는 서버의 자원을 업데이트합니다. 이 경우, 당신은 당신이 최신 자원의 버전 또는 편집 자원의 최신 버전을 사용하여 저장 임시 파일의 변경 사항을 적용해야합니다.

kubectl edit (RESOURCE/NAME | -f FILENAME)

  # 编辑名为“docker-registry”的service
  $ kubectl edit svc/docker-registry

  # 使用一个不同的编辑器
  $ KUBE_EDITOR="nano" kubectl edit svc/docker-registry

  # 编辑名为“docker-registry”的service,使用JSON格式、v1 API版本
  $ kubectl edit svc/docker-registry --output-version=v1 -o json

옵션

  -f, --filename=[]: 用来指定待编辑资源的文件名,目录名或者URL。
  -o, --output="yaml": 输出格式,可选yaml或者json中的一种。
      --output-version="": 输出资源使用的API版本(默认使用api-version)。

kubectl 간부

컨테이너 내부에서 실행합니다.

$ kubectl exec POD [-c CONTAINER] -- COMMAND 
[args...]

# 默认在pod 123456-7890的第一个容器中运行“date”并获取输出
$ kubectl exec 123456-7890 date

# 在pod 123456-7890的容器ruby-container中运行“date”并获取输出
$ kubectl exec 123456-7890 -c ruby-container date

# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl exec 123456-7890 -c ruby-container -i -t -- bash -il

옵션

  -c, --container="": 容器名。如果未指定,使用pod中的一个容器。
  -p, --pod="": Pod名。
  -i, --stdin[=false]: 将控制台输入发送到容器。
  -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。

kubectl GET

목록에 하나 이상의 자원 정보를 가져옵니다.

$ get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags]

# 列出所有运行的Pod信息。
$ kubectl get pods

# 列出Pod以及运行Pod节点信息。
$ kubectl get pods -o wide

# 列出指定NAME的 replication controller信息。
$ kubectl get replicationcontroller web

# 以JSON格式输出一个pod信息。
$ kubectl get -o json pod web-pod-13je7

# 以“pod.yaml”配置文件中指定资源对象和名称输出JSON格式的Pod信息。
$ kubectl get -f pod.yaml -o json

# 返回指定pod的相位值。
$ kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}

# 列出所有replication controllers和service信息。
$ kubectl get rc,services

# 按其资源和名称列出相应信息。
$ kubectl get rc/web service/frontend pods/web-pod-13je7

# 列出所有不同的资源对象。
$ kubectl get all

kubectl 라벨

리소스에 대한 업데이트 (추가, 수정 또는 삭제) 레이블 (라벨).

  • 라벨은 63 자까지, 문자, 숫자, 하이픈 및 밑줄을 사용할 수 있습니다, 문자 나 숫자로 시작해야합니다.
  • --overwrite이 사실이라면, 당신은 그렇지 않으면 라벨 오류를 충당하기 위해 노력할 것입니다, 기존 라벨을 덮어 쓸 수 있습니다.
  • --resource 버전을 지정하면, 업데이트 된 버전 그렇지 않으면 기존 자원 버전을 사용합니다,이 자원을 사용합니다.
$ label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

给名为foo的Pod添加label unhealthy=true。

kubectl label pods foo unhealthy=true
给名为foo的Pod修改label 为 'status' / value 'unhealthy',且覆盖现有的value。

kubectl label --overwrite pods foo status=unhealthy
给 namespace 中的所有 pod 添加 label

kubectl label pods --all status=unhealthy
仅当resource-version=1时才更新 名为foo的Pod上的label。

kubectl label pods foo status=unhealthy --resource-version=1
删除名为“bar”的label 。(使用“ - ”减号相连)

kubectl label pods foo bar-

kubectl 로그

로그 출력 포드 컨테이너입니다. 컨테이너가 포함되어있는 경우 하나의 포드 컨테이너 이름을 생략 할 수 있습니다.

$ kubectl logs [-f] [-p] POD [-c CONTAINER]

# 返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx

# 返回pod ruby中已经停止的容器web-1的日志快照
$ kubectl logs -p -c ruby web-1

# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1

# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx

# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx

옵션

  -c, --container="": 容器名。
  -f, --follow[=false]: 指定是否持续输出日志。
      --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
      --limit-bytes=0: 输出日志的最大字节数。默认无限制。
  -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
      --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
      --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
      --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
      --timestamps[=false]: 在日志中包含时间戳。

대체 kubectl

자원 사용 프로필 또는 표준 입력을 대체합니다.
JSON과 YAML 형식을 지원합니다.

$ replace -f FILENAME

# 使用pod.json中的数据替换pod。
$ kubectl replace -f ./pod.json

# 根据传入的JSON替换pod。
$ cat pod.json | kubectl replace -f -

# 更新镜像版本(tag)到v4
$ kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -

# 强制替换,删除原有资源,然后重新创建资源
$kubectl replace --force -f ./pod.json

kubectl 규모

확장 또는 수축 배포, ReplicaSet, 복제 컨트롤러 포드 또는 작업 번호를 수용.
스케일은 또한 여러 전제 조건을 지정할 수 설정 연신 배율 전에 수행 --resource 사본 또는 버전의 현재 번호 시스템이 먼저 전제 조건이 성립하는지 여부를 확인한다.

$ scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

# 将名为foo中的pod副本数设置为3。
$ kubectl scale --replicas=3 rs/foo

# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3。
$ kubectl scale --replicas=3 -f foo.yaml

# 如果当前副本数为2,则将其扩展至3。
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

# 设置多个RC中Pod副本数量。
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz

추천

출처www.cnblogs.com/aresxin/p/Kubernetes-kubectl.html