구문 : kubectl [명령] [유형] [이름] [깃발]
①command : 명령 작업는 Kubernetes 클러스터 리소스 개체에 대한 하위 명령 등이 같은 적용, 수, 설명, 생성, 삭제 등
②type는 : 이러한 포드 등의 서비스, RC, 배포 노드와 같은 자원 객체의 유형, 단수, 복수 및 약어 (포드, 포드, PO / 서비스, 서비스, SVC)이 될 수있다
③name : 자원 객체의 이름이 모두 수익을 반환합니다 같은 GET 포드 포드로, 전혀 지정되지 않은, GET 포드의 nginx, nginx를 만 반환 포드
④flags : 선택적 매개 변수 kubectl 하위 명령은, 예를 들어, -n 네임 스페이스를 지정 URL의 apiserver을 지정 -s
예 : kubectl GET 포드 바람둥이-p9x0h
[루트 @ K8S ~] # kubectl GET 포드 tomcat- p9x0h NAME READY 상태는 나이를 다시 시작 바람둥이 -p9x0h (1) / (1) 실행 0 1 시간
첫째, 자원 객체 유형 목록
1 : get 명령
설명 kubectl 或kubectl API를-자원을
名称简写 componentsstatuses CS daemonsets의 DS 배포 배포 이벤트 EV 엔드 포인트 EP horizontalpodautoscalers 고전력 증폭기 ingresses 보내고 작업 limitranges 한계 에 노드 namspaces NS 포드 포 persistentvolumes 태양 광 발전 persistentvolumeclaims PVC resourcequotas 할당량 replicationcontrollers RC 비밀 serviceaccounts SA의 서비스 SVC
둘째, 특수 사용
1 : 쿼리 자세한 내용은 포드
kubectl GET 포드 【pod1】 【pod2】
예 :
[루트 @ K8S ~] # kubectl GET 포드는 바람둥이 - p9x0h mysql을 - 19h65 NAME READY 상태는 AGE가 다시 시작 TOMCAT-p9x0h 1/1 0 1 시간 실행 mysql을 - 19h65 1/1 0 2 시간 실행을
2 : 동일한 쿼리 포드에서, RC 정보
kubectl GET 아래 / 1 RC 아래 / RC1
예 :
[루트 @ K8S ~] # kubectl GET 포드 / 바람둥이 - p9x0h RC / mysql을 NAME READY 상태가 다시 시작 연령 포 / 바람둥이 - p9x0h 0 1 시간에 실행 1/1 현재 준비 AGE 원하는 이름 RC / mysql을 1 일 2 시간을
3 : RC를 만드는 동안, SVC
kubectl create -f 【rc1.yaml】-f 【service1.yaml】
示例:
[root@k8s ~]# kubectl create -f mysql-rc.yaml -f mysql-svc.yaml replicationcontroller "mysql" created service "mysql" created
三、kubectl子命令
主要包括对资源的创建、删除、查看、修改、配置、运行等
1:查看所有子命令
kubectl --help
2:kubectl参数
kubectl options 可以查看支持的参数,例如--namespace指定所在namespace
3:kubectl输出格式
kubectl命令可以用多种格式对结果进行显示,输出格式通过-o参数指定:-o支持的格式有
输出格式 说明 custom-columns=<spec> 根据自定义列名进行输出,逗号分隔 custom-columns-file=<filename> 从文件中获取自定义列名进行输出 json 以JSON格式显示结果 jsonpath=<template> 输出jasonpath表达式定义的字段信息 jasonpath-file=<filename> 输出jsonpath表达式定义的字段信息,来源于文件 name 仅输出资源对象的名称 wide 输出更多信息,比如会输出node名 yaml 以yaml格式输出
2:举例
kubectl get pod -o wide
kubectl get pod -o yaml
kubectl get pod -o custom-columns=NAME:.metadata.name,RESC:.metadata.resourceVersion
kubectl get pod --sort-by=.metadata.name //按name排序
四、创建资源对象
1:根据yaml文件创建service和deployment
kubectl create -f 【rc-yaml-name】 -f 【svc-yaml-name】
示例
[root@k8s ~]# kubectl create -f mysql-rc.yaml -f mysql-svc.yaml replicationcontroller "mysql" created service "mysql" created
2:可以指定一个目录,这样可以一次性根据该目录下所有yaml或json文件定义资源
kubectl create -f 【directory】
示例
[root@k8s ~]# kubectl create -f /data/k8s-yaml-root/ replicationcontroller "mysql" created service "mysql" created
五、查看资源对象
1:查看所有pod
kubectl get pods
示例:
[root@k8s ~]# kubectl get pods NAME READY STATUS RESTARTS AGE mysql-512rz 1/1 Running 0 2m mysql-5kmht 1/1 Running 0 2m tomcat-p9x0h 1/1 Running 0 2h
2:查看rc和service
kubectl get rc,svc
示例:
[root@k8s ~]# kubectl get rc,svc NAME DESIRED CURRENT READY AGE rc/mysql 10 10 10 4m NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes 10.254.0.1 <none> 443/TCP 4h svc/mysql 10.254.244.102 <none> 3306/TCP 4m svc/tomcat 10.254.250.150 <nodes> 8080:30001/TCP 2h
六、描述资源对象
1:显示node的详细信息
kubectl describe nodes 【node-name】
示例:
[root@k8s ~]# kubectl describe nodes 127.0.0.1 Name: 127.0.0.1 Role: Labels: beta.kubernetes.io/arch=amd64 beta.kubernetes.io/os=linux kubernetes.io/hostname=127.0.0.1 Taints: <none> CreationTimestamp: Fri, 29 Nov 2019 05:46:33 +0800 Phase: Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- OutOfDisk False Fri, 29 Nov 2019 09:47:58 +0800 Fri, 29 Nov 2019 05:46:33 +0800 KubeletHasSufficientDisk kubelet has sufficient disk space available MemoryPressure False Fri, 29 Nov 2019 09:47:58 +0800 Fri, 29 Nov 2019 05:46:33 +0800 KubeletHasSufficientMemory kubelet has sufficient memory available DiskPressure False Fri, 29 Nov 2019 09:47:58 +0800 Fri, 29 Nov 2019 05:46:33 +0800 KubeletHasNoDiskPressure kubelet has no disk pressure Ready True Fri, 29 Nov 2019 09:47:58 +0800 Fri, 29 Nov 2019 05:46:33 +0800 KubeletReady kubelet is posting ready status Addresses: 127.0.0.1,127.0.0.1,127.0.0.1 Capacity: alpha.kubernetes.io/nvidia-gpu: 0 cpu: 1 memory: 2902952Ki pods: 110 Allocatable: alpha.kubernetes.io/nvidia-gpu: 0 cpu: 1 memory: 2902952Ki pods: 110 System Info: Machine ID: c1cc26a06e9e405aa56fa81c7fcc0ca7 System UUID: 564DEF43-F784-4106-FBC8-E81C9DC9216F Boot ID: 9df7d476-41e9-412d-bde4-9b9ba119ba25 Kernel Version: 3.10.0-123.el7.x86_64 OS Image: CentOS Linux 7 (Core) Operating System: linux Architecture: amd64 Container Runtime Version: docker://1.13.1 Kubelet Version: v1.5.2 Kube-Proxy Version: v1.5.2 ExternalID: 127.0.0.1 Non-terminated Pods: (11 in total) Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits --------- ---- ------------ ---------- --------------- ------------- default mysql-05ktg 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-5tvkd 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-dccp5 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-f3195 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-h6h4h 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-hbhhl 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-hws8f 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-jt4sf 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-m8z1d 0 (0%) 0 (0%) 0 (0%) 0 (0%) default mysql-xkgcn 0 (0%) 0 (0%) 0 (0%) 0 (0%) default tomcat-c5995 0 (0%) 0 (0%) 0 (0%) 0 (0%) Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted. CPU Requests CPU Limits Memory Requests Memory Limits ------------ ---------- --------------- ------------- 0 (0%) 0 (0%) 0 (0%) 0 (0%) Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 32m 32m 1 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-vgtbf_default(ae73965a-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-twqs3_default(ae73c4c4-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-x61sl_default(ae7378c1-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-5kmht_default(ae7440a0-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 1 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-rp3pz_default(ae744a31-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-8znqq_default(ae73a01f-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-512rz_default(ae7386c6-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-6vf6j_default(ae73b850-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-cwmlr_default(ae73a8e3-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 32m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-8739b_default(ae73b0a3-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 28m 28m 1 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-j8s9g_default(3708c328-1246-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 28m 28m 1 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-rlprq_default(376b8d4e-1246-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-hbhhl_default(b0441080-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-dccp5_default(b043a874-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-05ktg_default(b0442004-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-hws8f_default(b0441a6c-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-xkgcn_default(b04429a8-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-jt4sf_default(b0508921-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-f3195_default(b0759f67-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-5tvkd_default(b0e0a048-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 4m 4m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-m8z1d_default(b0c00ce6-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy. 32m 4m 24 {kubelet 127.0.0.1}
2:显示pod的详细信息
kubectl describe pods【pod-name】
示例:
[root@k8s ~]# kubectl describe pods mysql-f3195 Name: mysql-f3195 Namespace: default Node: 127.0.0.1/127.0.0.1 Start Time: Fri, 29 Nov 2019 09:43:49 +0800 Labels: app=mysql Status: Running IP: 172.17.0.4 Controllers: ReplicationController/mysql Containers: mysql: Container ID: docker://25d5f66e45a3650e8dc054ab3644f73a726b008d2160c8496d72a09832242662 Image: mysql:5.6 Image ID: docker-pullable://docker.io/mysql@sha256:5345afaaf1712e60bbc4d9ef32cc62acf41e4160584142f8d73115f16ad94af4 Port: 3306/TCP State: Running Started: Fri, 29 Nov 2019 09:44:03 +0800 Ready: True Restart Count: 0 Volume Mounts: <none> Environment Variables: MYSQL_ROOT_PASSWORD: 123456 Conditions: Type Status Initialized True Ready True PodScheduled True No volumes. QoS Class: BestEffort Tolerations: <none> Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 3m 3m 1 {default-scheduler } Normal Scheduled Successfully assigned mysql-f3195 to 127.0.0.1 3m 3m 2 {kubelet 127.0.0.1} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy. 3m 3m 1 {kubelet 127.0.0.1} spec.containers{mysql} Normal Pulled Container image "mysql:5.6" already present on machine 3m 3m 1 {kubelet 127.0.0.1} spec.containers{mysql} Normal Created Created container with docker id 25d5f66e45a3; Security:[seccomp=unconfined] 3m 3m 1 {kubelet 127.0.0.1} spec.containers{mysql} Normal Started Started container with docker id 25d5f66e45a3
3:显示deployment管理的pod信息
kubectl describe pods 【deployment-name】
七、删除资源对象
1:基于yaml文件删除,-f指定文件
kubectl delete -f 【pod.yaml】
示例:
[root@k8s ~]# kubectl delete -f mysql-rc.yaml replicationcontroller "mysql" deleted [root@k8s ~]# kubectl get rc NAME DESIRED CURRENT READY AGE tomcat 1 1 1 2h
2:删除所有包含某个label的pod和service
kubectl delete po,svc -l name=【lable-name】
示例:
[root@k8s ~]# kubectl delete po,svc -l app=mysql pod "mysql-0f7b6" deleted pod "mysql-0fs9s" deleted pod "mysql-1zmvc" deleted pod "mysql-9d6vk" deleted pod "mysql-gbtvh" deleted
3:删除所有pod
kubectl delete pods --all
示例:
[root@k8s ~]# kubectl delete pods --all pod "mysql-512rz" deleted pod "mysql-5kmht" deleted pod "tomcat-p9x0h" deleted
八、执行容器的命令
1:指定pod的某个容器执行命令
kubectl exec 【pod-name】 uname
示例:
[root@k8s ~]# kubectl exec mysql-0f7b6 uname Linux
2:进入到pod的容器里
kubectl exec-it 【pod-name】 bash
示例:
[root@k8s ~]# kubectl exec -it mysql-0f7b6 bash root@mysql-0f7b6:/# ls bin boot dev docker-entrypoint-initdb.d entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
九、查看日志命令
1:查看某个容器日志
kubectl logs 【pod-name】
示例:
[root@k8s ~]# kubectl logs mysql-0f7b6 2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.6.46-1debian9 started. 2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.6.46-1debian9 started. 2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Initializing database files 2019-11-29 01:19:11 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-11-29 01:19:11 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap. 2019-11-29 01:19:11 0 [Note] /usr/sbin/mysqld (mysqld 5.6.46) starting as process 47 ... 2019-11-29 01:19:11 47 [Note] InnoDB: Using atomics to ref count buffer pool pages
2:动态查看日志,类似于tail-f
kubectl logs -f 【pod-name】
示例:
[root@k8s ~]# kubectl logs -f mysql-0f7b6 2019-11-29 01:20:40 1 [Warning] 'proxies_priv' entry '@ root@mysql-0f7b6' ignored in --skip-name-resolve mode. 2019-11-29 01:20:41 1 [Note] Event Scheduler: Loaded 0 events 2019-11-29 01:20:41 1 [Note] mysqld: ready for connections. Version: '5.6.46' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)