文章目录

  • 一、kubectl管理
    • 1.1 Kubectl 自动补全
    • 1.2 Kubectl 上下文和配置
  • 二 、创建对象和显示和查找资源
    • 2.1 创建对象
    • 2.2 显示和查找资源
  • 四、更新资源和修补资源
    • 4.1 更新资源
    • 4.2 修补资源
    • 4.3 编辑资源
    • 4.4 Scale 资源
    • 4.5 删除资源
    • 4.6 与运行中的 Pod 交互
    • 4.7 与节点和集群交互
  • 五、set 命令
    • 5.1 kubectl set resources 命令
    • 5.2 kubectl set selector 命令
    • 5.3 kubectl set image 命令
  • 六、资源类型
  • 七、使用步骤
    • 7.1:使用kubectl命令管理项目的生命周期
      • 7.1.1:创建
      • 7.1.2、发布
      • 7.1.3:更新
      • 7.1.4:回滚
      • 7.1.5:删除
    • 7.2:其他常规操作

一、kubectl管理

Kubectl 命令是操作 kubernetes 集群的最直接的方式,特别是运维人员,需要对这些命令有一个详细的掌握

1.1 Kubectl 自动补全

 # setup autocomplete in bash, bash-completion package should be installed first.
$ source <(kubectl completion bash) # setup autocomplete in zsh
$ source <(kubectl completion zsh)

1.2 Kubectl 上下文和配置

设置 kubectl 命令交互的 kubernetes 集群并修改配置信息。参阅 使用 kubeconfig 文件进行跨集群验证 获取关于配置文件的详细信息。

# 显示合并后的 kubeconfig 配置
$ kubectl config view
# 同时使用多个 kubeconfig 文件并查看合并后的配置
$ KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view
# 获取 e2e 用户的密码
$ kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
# 显示当前的上下文
$ kubectl config current-context
# 设置默认上下文为 my-cluster-name
$ kubectl config use-context my-cluster-name
# 向 kubeconf 中增加支持基本认证的新集群
$ kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
# 使用指定的用户名和 namespace 设置上下文
$ kubectl config set-context gce --user=cluster-admin --namespace=foo \&& kubectl config use-context gce

二 、创建对象和显示和查找资源

2.1 创建对象

Kubernetes 的清单文件可以使用 json 或 yaml 格式定义。可以以 .yaml、.yml、或者 .json 为扩展名。

创建资源
$ kubectl create -f ./my-manifest.yaml
# 使用多个文件创建资源
$ kubectl create -f ./my1.yaml -f ./my2.yaml
# 使用目录下的所有清单文件来创建资源
$ kubectl create -f ./dir
# 使用 url 来创建资源
$ kubectl create -f https://git.io/vPieo
# 启动一个 nginx 实例
$ kubectl run nginx --image=nginx  # 获取 pod 和 svc 的文档
$ kubectl explain pods,svc
# 从 stdin 输入中创建多个 YAML 对象
$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:name: busybox-sleep
spec:containers:- name: busyboximage: busyboxargs:- sleep- "1000000"
---
apiVersion: v1
kind: Pod
metadata:name: busybox-sleep-less
spec:containers:- name: busyboximage: busyboxargs:- sleep- "1000"
EOF
# 创建包含几个 key 的 Secret
$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:password: $(echo "s33msi4" | base64)username: $(echo "jane" | base64)
EOF

2.2 显示和查找资源

# Get commands with basic output
# 列出所有 namespace 中的所有 service
$ kubectl get services            # 列出所有 namespace 中的所有 pod
$ kubectl get pods --all-namespaces  # 列出所有 pod 并显示详细信息
$ kubectl get pods -o wide      # 列出指定 deployment
$ kubectl get deployment my-dep      # 列出该 namespace 中的所有 pod 包括未初始化的
$ kubectl get pods --include-uninitialized      # 使用详细输出来描述命令
$ kubectl describe nodes my-node
$ kubectl describe pods my-pod# List Services Sorted by Name
$ kubectl get services --sort-by=.metadata.name # 根据重启次数排序列出 pod
$ kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'# 获取所有具有 app=cassandra 的 pod 中的 version 标签
$ kubectl get pods --selector=app=cassandra rc -o \jsonpath='{.items[*].metadata.labels.version}'# 获取所有节点的 ExternalIP
$ kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'# 列出属于某个 PC 的 Pod 的名字
# “jq”命令用于转换复杂的 jsonpath,参考 https://stedolan.github.io/jq/
$ sel=${$(kubectl get rc my-rc --output=json | jq -j '.spec.selector | to_entries | .[] | "\(.key)=\(.value),"')%?}
$ echo $(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name})# 查看哪些节点已就绪
$ JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' \&& kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"# 列出当前 Pod 中使用的 Secret
$ kubectl get pods -o json | jq '.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name' | grep -v null | sort | uniq

四、更新资源和修补资源

4.1 更新资源

$ kubectl rolling-update frontend-v1 -f frontend-v2.json           # 滚动更新 pod frontend-v1
$ kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2  # 更新资源名称并更新镜像
$ kubectl rolling-update frontend --image=image:v2                 # 更新 frontend pod 中的镜像
$ kubectl rolling-update frontend-v1 frontend-v2 --rollback        # 退出已存在的进行中的滚动更新
$ cat pod.json | kubectl replace -f -                              # 基于 stdin 输入的 JSON 替换 pod
# 强制替换,删除后重新创建资源。会导致服务中断。
$ kubectl replace --force -f ./pod.json
# 为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口
$ kubectl expose rc nginx --port=80 --target-port=8000
# 更新单容器 pod 的镜像版本(tag)到 v4
$ kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
# 添加标签
$ kubectl label pods my-pod new-label=awesome        # 添加注解
$ kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq
# 自动扩展 deployment “foo”
$ kubectl autoscale deployment foo --min=2 --max=10

4.2 修补资源

使用策略合并补丁并修补资源。

# 部分更新节点
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
# 更新容器镜像;spec.containers[*].name 是必须的,因为这是合并的关键字
$ kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'
# 使用具有位置数组的 json 补丁更新容器镜像
$ kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
# 使用具有位置数组的 json 补丁禁用 deployment 的 livenessProbe
$ kubectl patch deployment valid-deployment  --type json   -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/livenessProbe"}]'

4.3 编辑资源

在编辑器中编辑任何 API 资源。

# 编辑名为 docker-registry 的 service
$ kubectl edit svc/docker-registry
# 使用其它编辑器
$ KUBE_EDITOR="nano" kubectl edit svc/docker-registry

4.4 Scale 资源

# Scale a replicaset named 'foo' to 3
$ kubectl scale --replicas=3 rs/foo
# Scale a resource specified in "foo.yaml" to 3
$ kubectl scale --replicas=3 -f foo.yaml
# If the deployment named mysql's current size is 2, scale mysql to 3
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# Scale multiple replication controllers
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz

4.5 删除资源

# 删除 pod.json 文件中定义的类型和名称的 pod
$ kubectl delete -f ./pod.json
# 删除名为“baz”的 pod 和名为“foo”的 service
$ kubectl delete pod,service baz foo
# 删除具有 name=myLabel 标签的 pod 和 serivce
$ kubectl delete pods,services -l name=myLabel
# 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
$ kubectl delete pods,services -l name=myLabel --include-uninitialized
# 删除 my-ns namespace 下的所有 pod 和 serivce包
$ kubectl -n my-ns delete po,svc --all

4.6 与运行中的 Pod 交互

# dump 输出 pod 的日志(stdout)
$ kubectl logs my-pod  # dump 输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
$ kubectl logs my-pod -c my-container
# 流式输出 pod 的日志(stdout)
$ kubectl logs -f my-pod
# 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
$ kubectl logs -f my-pod -c my-container
# 交互式 shell 的方式运行 pod
$ kubectl run -i --tty busybox --image=busybox -- sh  # 连接到运行中的容器
$ kubectl attach my-pod -i
# 转发 pod 中的 6000 端口到本地的 5000 端口
$ kubectl port-forward my-pod 5000:6000   # 在已存在的容器中执行命令(只有一个容器的情况下)
$ kubectl exec my-pod -- ls /
# 在已存在的容器中执行命令(pod 中有多个容器的情况下)
$ kubectl exec my-pod -c my-container -- ls /
# 显示指定 pod 和容器的指标度量
$ kubectl top pod POD_NAME --containers

4.7 与节点和集群交互

# 标记 my-node 不可调度
$ kubectl cordon my-node
# 清空 my-node 以待维护
$ kubectl drain my-node
# 标记 my-node 可调度
$ kubectl uncordon my-node             # 显示 my-node 的指标度量
$ kubectl top node my-node
$ kubectl cluster-info          # 将当前集群状态输出到 stdout
$ kubectl cluster-info dump                                                               # 将当前集群状态输出到 /path/to/cluster-state
$ kubectl cluster-info dump --output-directory=/path/to/cluster-state
# 如果该键和影响的污点(taint)已存在,则使用指定的值替换
$ kubectl taint nodes foo dedicated=special-user:NoSchedule

五、set 命令

配置应用的一些特定资源,也可以修改应用已有的资源
使用 kubectl set --help查看

  1. 子命令
env,image,resources,selector,serviceaccount,subject。
语法:
resources (-f FILENAME | TYPE NAME) ([—limits=LIMITS & —requests=REQUESTS]

5.1 kubectl set resources 命令

这个命令用于设置资源的一些范围限制。

  1. 资源对象中的Pod可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。
  2. 对于每个Pod资源,如果指定了Limits(限制)值,并省略了Requests(请求),则Requests默认为Limits的值。
可用资源对象包括(支持大小写):replicationcontroller、deployment、daemonset、job、replicaset。
  1. 例如:
# 将deployment的nginx容器cpu限制为“200m”,将内存设置为“512Mi”
$ kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
# 设置所有nginx容器中 Requests和Limits
$ kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
# 删除nginx中容器的计算资源值
$ kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0

5.2 kubectl set selector 命令

  1. 设置资源的 selector(选择器)。如果在调用”set selector”命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。
  2. selector必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符” - “ 、点”.”和下划线” _ “。如果指定了—resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

注意:目前selector命令只能用于Service对象。

语法:selector (-f FILENAME | TYPE NAME) EXPRESSIONS [—resource-version=version]

5.3 kubectl set image 命令

  1. 用于更新现有资源的容器镜像。
  2. 可用资源对象包括:pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)
语法:image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 … CONTAINER_NAME_N=CONTAINER_IMAGE_N
# 将deployment中的nginx容器镜像设置为“nginx:1.9.1”
$ kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
# 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1”
$ kubectl set image deployments,rc nginx=nginx:1.9.1 --all
# 将daemonset abc的所有容器镜像更新为“nginx:1.9.1”
$ kubectl set image daemonset abc *=nginx:1.9.1
# 从本地文件中更新nginx容器镜像
$ kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml

六、资源类型

  1. 下表列出的是 kubernetes 中所有支持的类型和缩写的别名。
资源类型 缩写别名
clusters
componentstatuses cs
configmaps cm
daemonsets ds
deploymebts deploy
endpoints ep
event ev
horizontalpodautoscalers hpa
ingresses ing
jobs
limitranges limits
namsepaces ns
networkpolicies
nodes no
statefuisets sts
persistentvolumeclaims pvs
persiserntvolumes pv
pods po
podsecuritypolicies psp
podtempalates
replicasets rs
replicationcontrollers rc
resourcequotas quota
cronjob
secrets
serviceaccount sa
services svc
storageciasses
thirdpartyresources中
  1. 格式化输出
    要以特定的格式向终端窗口输出详细信息,可以在 kubectl 命令中添加 -o 或者 -output 标志。
输出格式 描述
-o=custom-columns=《spec》 使用逗号分隔的自定义列列表打印表格
-o=custom-columns-file=《filename》 使用文件的自定义列表模板打印表格
-o=json 输出JSON格式的API对象
-o=jsonpath=《template》 打印jsonpath表达式中定义的字段
-o=jsonpath-file=《filename》 打印由文件中jsonpath表达式定义的字段
-o=name 仅打印资源名称
-o=wide 以纯文本格式输出任何附加信息,对于Pod,包含节点名称
-o=yaml 输出YAML格式的API对象
  1. Kubectl 详细输出和调试

使用 -v 或 --v 标志跟着一个整数来指定日志级别。

七、使用步骤

  • kubectl是管理k8s的命令行工具,通过生成json格式传递给apiserver进行一些操作
  • 更全的kubectl命令请查看kubectl --help,以下仅列出常用的命令
 [root@master ~]# kubectl --help
kubectl controls the Kubernetes cluster manager. Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/Basic Commands (Beginner):create         Create a resource from a file or from stdin.expose         使用 replication controller, service, deployment 或者 pod 并暴露它作为一个 新的 Kubernetes Servicerun            在集群中运行一个指定的镜像set            为 objects 设置一个指定的特征Basic Commands (Intermediate):explain        查看资源的文档get            显示一个或更多 resourcesedit           在服务器上编辑一个资源delete         Delete resources by filenames, stdin, resources and names, or by resources and label selectorDeploy Commands:rollout        Manage the rollout of a resourcescale          为 Deployment, ReplicaSet, Replication Controller 或者 Job 设置一个新的副本数量autoscale      自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量Cluster Management Commands:certificate    修改 certificate 资源.cluster-info   显示集群信息top            Display Resource (CPU/Memory/Storage) usage.cordon         标记 node 为 unschedulableuncordon       标记 node 为 schedulabledrain          Drain node in preparation for maintenancetaint          更新一个或者多个 node 上的 taintsTroubleshooting and Debugging Commands:describe       显示一个指定 resource 或者 group 的 resources 详情logs           输出容器在 pod 中的日志attach         Attach 到一个运行中的 containerexec           在一个 container 中执行一个命令port-forward   Forward one or more local ports to a podproxy          运行一个 proxy 到 Kubernetes API servercp             复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.auth           Inspect authorizationAdvanced Commands:apply          通过文件名或标准输入流(stdin)对资源进行配置patch          使用 strategic merge patch 更新一个资源的 field(s)replace        通过 filename 或者 stdin替换一个资源wait           Experimental: Wait for a specific condition on one or many resources.convert        在不同的 API versions 转换配置文件Settings Commands:label          更新在这个资源上的 labelsannotate       更新一个资源的注解completion     Output shell completion code for the specified shell (bash or zsh)Other Commands:alpha          Commands for features in alphaapi-resources  Print the supported API resources on the serverapi-versions   Print the supported API versions on the server, in the form of "group/version"config         修改 kubeconfig 文件plugin         Provides utilities for interacting with plugins.version        输出 client 和 server 的版本信息Usage:kubectl [flags] [options]Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

7.1:使用kubectl命令管理项目的生命周期

  • 项目的生命周期:创建、发布、更新、回滚、删除
7.1.1:创建
  • 创建一个nginx的pod
[root@master ~]# kubectl run nginx-test --image=nginx:latest --port=80 --replicas=3
kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
deployment.apps/nginx-test created
[root@master ~]# kubectl get pods -w   '//-w:动态查看'
[root@master ~]# kubectl  get pods -o wide '//查看资源创建在那个节点上'
[root@master ~]# kubectl get all   '//查看更详细信息:副本资源和控制器资源'
[root@master ~]# kubectl get deployment,replicaset '//仅查询pod资源的两个项'
7.1.2、发布
 [root@master ~]# kubectl get svc   '//查看原有的service服务'
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   92m
[root@master ~]# kubectl expose deployment nginx-test --port=80 --target-port=80 --name=nginx-service --type=NodePort  '//将刚刚创建的暴露出来'
service/nginx-service exposed
[root@master ~]# kubectl get svc   '//再次查看'
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        92m
nginx-service   NodePort    10.0.0.176   <none>        80:36355/TCP   3s
[root@master ~]# kubectl get pods -o wide  '//查看pods在哪个节点上'
NAME                          READY   STATUS    RESTARTS   AGE     IP            NODE              NOMINATED NODE
nginx-dbddb74b8-5s6h7         1/1     Running   0          7d10h   172.17.26.2   192.168.233.132   <none>
nginx-test-59f87d55d6-4rvpl   1/1     Running   0          9m55s   172.17.4.3    192.168.233.133   <none>
nginx-test-59f87d55d6-qwrc6   1/1     Running   0          9m55s   172.17.4.2    192.168.233.133   <none>
nginx-test-59f87d55d6-xhtpb   1/1     Running   0          9m55s   172.17.26.4   192.168.233.132   <none>
[root@master ~]# kubectl get endpoints '//查看pod资源的endpoint'
NAME            ENDPOINTS                                    AGE
kubernetes      192.168.233.130:6443,192.168.233.131:6443    93m
nginx-service   172.17.26.4:80,172.17.4.2:80,172.17.4.3:80   38s
  • 可以查看资源对象的缩写
[root@master dashboard]# kubectl api-resources
  • pod资源的调度

当我们创建多个pod、service资源时,kube-proxy会做负载均衡,此时我们通过访问任意node节点ip可以访问所有的资源
kubernetes中kube-proxy支持三种模式,在v1.8之前我们使用的是iptables以及userspace两种模式,在kubernetes1.8之后加入了ipvs

[root@node01 ~]# yum -y install ipvsadm
[root@node01 ~]# ipvsadm -L -n '//查看调度'
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  127.0.0.1:30005 rr-> 172.17.26.3:8443             Masq    1      0          0
TCP  127.0.0.1:36355 rr '//发现可以访问本地地址可以自动轮询给三个pod资源,node02也是一样的'-> 172.17.4.2:80                Masq    1      0          0         -> 172.17.4.3:80                Masq    1      0          0         -> 172.17.26.4:80               Masq    1      0          0
  • 访问网页,查看日志
[root@master ~]# kubectl logs nginx-test-59f87d55d6-4rvpl
[root@master ~]# kubectl logs nginx-test-59f87d55d6-qwrc6
[root@master ~]# kubectl logs nginx-test-59f87d55d6-xhtpb  '//网页只访问了一次,所以只有一个pod资源有日志'...省略内容
172.17.26.1 - - [08/May/2020:04:03:06 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://192.168.233.132:36355/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" "-"
7.1.3:更新
  • 开发者模式查看版本号(我使用的是谷歌浏览器),一般使用谷歌浏览器
[root@master ~]# kubectl set image deployment/nginx-test nginx-test=nginx:1.13     '//更新版本'
deployment.extensions/nginx-test image updated
[root@master ~]# kubectl get pods -w   '//动态查看'
'//容器的更新:滚动更新,容器只有删除和创建,没有重启的'
  • 重新访问网页,再次查看版本
7.1.4:回滚
[root@master ~]# kubectl rollout history deployment/nginx-test
deployment.extensions/nginx-test
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
  • 执行回滚
[root@master ~]# kubectl rollout undo deployment/nginx-test
deployment.extensions/nginx-test
[root@master ~]# kubectl get pods -w   '//动态查看'
7.1.5:删除
  • 删除不仅仅是pod,还有service
[root@master ~]# kubectl delete deployment/nginx-test
deployment.extensions "nginx-test" deleted
[root@master ~]# kubectl get pods -w
NAME                          READY   STATUS        RESTARTS   AGE
nginx-dbddb74b8-5s6h7         1/1     Running       0          7d10h
nginx-test-59f87d55d6-xgbrd   0/1     Terminating   0          3m13s
nginx-test-59f87d55d6-zs5nf   0/1     Terminating   0          2m59s
nginx-test-59f87d55d6-zs5nf   0/1   Terminating   0     3m4s
nginx-test-59f87d55d6-zs5nf   0/1   Terminating   0     3m4s
nginx-test-59f87d55d6-xgbrd   0/1   Terminating   0     3m18s
nginx-test-59f87d55d6-xgbrd   0/1   Terminating   0     3m18s
^C[root@master ~]# kubectl get pods    '//再次查看pod资源'
NAME                    READY   STATUS    RESTARTS   AGE
nginx-dbddb74b8-5s6h7   1/1     Running   0          7d10h
[root@master ~]# kubectl get svc   '//查看service'
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        137m
nginx-service   NodePort    10.0.0.176   <none>        80:36355/TCP   44m
[root@master ~]# kubectl delete svc/nginx-service  '//删除service'
service "nginx-service" deleted
[root@master ~]# kubectl get svc   '//重新查看'
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   137m

7.2:其他常规操作

  • 查看资源的详细信息
[root@master ~]# kubectl get all
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-dbddb74b8-5s6h7   1/1     Running   0          7d11hNAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   163mNAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   1         1         1            1           7d11hNAME                              DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-dbddb74b8   1         1         1       7d11h
  • 查看service资源
[root@master ~]# kubectl describe service/kubernetes
Name:              kubernetes
Namespace:         default
Labels:            component=apiserverprovider=kubernetes
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.0.0.1
Port:              https  443/TCP
TargetPort:        6443/TCP
Endpoints:         192.168.233.130:6443,192.168.233.131:6443
Session Affinity:  None
Events:            <none>
  • 查看deployment资源
[root@master ~]# kubectl describe deployment.apps/nginx
Name:                   nginx
Namespace:              default
CreationTimestamp:      Fri, 01 May 2020 01:31:30 +0800
Labels:                 run=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               run=nginx
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:Labels:  run=nginxContainers:nginx:Image:        nginxPort:         <none>Host Port:    <none>Environment:  <none>Mounts:       <none>Volumes:        <none>
Conditions:Type           Status  Reason----           ------  ------Available      True    MinimumReplicasAvailableProgressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-dbddb74b8 (1/1 replicas created)
Events:          <none>
  • 进入pod
[root@master ~]# kubectl exec -it nginx-dbddb74b8-5s6h7 bash
root@nginx-dbddb74b8-5s6h7:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@nginx-dbddb74b8-5s6h7:/# exit
exit

kubectl 常用命令指南相关推荐

  1. Kubectl 常用命令, 开发人员常用k8s命令

    Kubectl 常用命令: 什么是常用,我用的,就是常用的

  2. k8s pod分类、核心组件、网络模型、kubectl常用命令

    k8s的pod分类.核心组件.网络模型.kubectl常用命令 K8s基本概念 pod分类 核心组件 K8s的三种网络模型 kubectl常用操作 kubeconfig配置文件 kubectl管理命令 ...

  3. kubernetes基础介绍及kubectl常用命令

    kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...

  4. Kubernetes之kubectl常用命令使用指南:3:故障对应

    kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具.这里我们会通过一些简单的实例来展现其中 ...

  5. kubectl常用命令_《蹲坑学kubernetes》之十五:kubectl命令详解

    kubectl用于运行Kubernetes集群命令的管理工具.本章节主要讲了kubectl基本语法和使用方法.在以后的实际工作中,使用越来越多,也会越来越熟悉. 1.kubectl语法 kubectl ...

  6. 容器技术之kubectl常用命令

    kubectl用于运行Kubernetes集群命令的管理工具.本文概述涵盖了kubectl语法,对命令操作的描述,并列举了常用命令. Kubectl命令详细列表请查看:Kubernetes kubec ...

  7. kubectl常用命令大全详解

    文章目录 说明 基础命令详解:create.delete.get.run.expose.set.explain.edit create 命令:根据文件或者输入来创建资源 创建Deployment和Se ...

  8. Kubectl 常用命令大全(*)

    前言 Kubectl是一个用于操作kubernetes(k8s)集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具. Kubectl 常用 ...

  9. Kubernetes之kubectl常用命令

    本文转自:http://blog.csdn.net/xingwangc2014/article/details/51204224 官网命令介绍:http://kubernetes.io/docs/us ...

最新文章

  1. 智能物联网(AIoT,2020年)(中)
  2. Why to do,What to do,Where to do 与 Lambda表达式!
  3. 鸿蒙系统的功能如何,华为鸿蒙系统发布会,这个功能怎么那么像小米MIUI的
  4. LeetCode——Contains Duplicate III
  5. linux03-用户与组
  6. java连接hbase_HBase 工具 | hbasesdk 推出HQL功能
  7. 【Android】可以下拉刷新的webview,使你的webview效果更加好看,封装自己的WebView...
  8. 没有CLOB类型却报ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
  9. java 名称可以包含-吗_java – “标签属性名称包含无效字符”. “Android Manifest
  10. 用Starlink填补5G和光纤之间的空白
  11. Delta架构:统一Lambda架构并利用Hadoop / REST中的Storm
  12. java future用法_纯干货:Java学习过程中的21个知识点和技术点
  13. Upload LABS Pass-4
  14. 用Python抓取网页并解析
  15. 接口测试常用工具及测试方法(超全)干货
  16. nfc和红外线的区别_红外,蓝牙,WiFi,NFC区别及优缺点
  17. hashmap储存有向图_HashMap的存储结构及原理
  18. 小技巧:如何在R语言与excel/word之间进行复制粘贴
  19. 微信公众号-定位之地址逆解析导航
  20. dellr320故障_用于对 PowerEdge 服务器进行高级故障处理的诊断工具

热门文章

  1. zblog网址导航 网站目模板
  2. MapStruct - Consider defining a bean of type in your configuration.
  3. OpenCV人脸识别(二) 初步实现人脸签到
  4. libiec61850学习2(动态获取模型)
  5. 瑞芯微、海思研发方案技术交流群/解决方案交流群
  6. 战舰触摸屏数字密码锁
  7. IEEE会议(期刊)检索(查找)
  8. 电大系统服务器的性能测试报告表,电大2016年度(精编新版)传感器与检测技术期末复习题及详细答案参考.doc...
  9. Android屏幕切换
  10. 2021年中国产业电商上市公司经营现状分析:九家公司总营收超2500亿元[图]