`
lykops
  • 浏览: 86238 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

kubernetes-kubectl命令说明

 
阅读更多

本文基于kubernetes 1.5.2版本编写

kubectl

kubectl controls the K8S cluster manager. 

Find more information at https://github.com/K8S/K8S.

Basic Commands (Beginner):
  create         Create a resource by filename or stdin
  expose         Take a replication controller, service, deployment or pod and expose it as a new K8S Service
  run            Run a particular image on the cluster
  set            Set specific features on objects

Basic Commands (Intermediate):
  get            Display one or many resources
  explain        Documentation of resources
  edit           Edit a resource on the server
  delete         Delete resources by filenames, stdin, resources and names, or by resources and label selector

Deploy Commands:
  rollout        Manage a deployment rollout
  rolling-update Perform a rolling update of the given ReplicationController
  scale          Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job
  autoscale      Auto-scale a Deployment, ReplicaSet, or ReplicationController

Cluster Management Commands:
  certificate    Modify certificate resources.
  cluster-info   Display cluster info
  top            Display Resource (CPU/Memory/Storage) usage
  cordon         Mark node as unschedulable
  uncordon       Mark node as schedulable
  drain          Drain node in preparation for maintenance
  taint          Update the taints on one or more nodes

Troubleshooting and Debugging Commands:
  describe       Show details of a specific resource or group of resources
  logs           Print the logs for a container in a pod
  attach         Attach to a running container
  exec           Execute a command in a container
  port-forward   Forward one or more local ports to a pod
  proxy          Run a proxy to the K8S API server
  cp             Copy files and directories to and from containers.

Advanced Commands:
  apply          Apply a configuration to a resource by filename or stdin
  patch          Update field(s) of a resource using strategic merge patch
  replace        Replace a resource by filename or stdin
  convert        Convert config files between different API versions

Settings Commands:
  label          Update the labels on a resource
  annotate       Update the annotations on a resource
  completion     Output shell completion code for the given shell (bash or zsh)

Other Commands:
  api-versions   Print the supported API versions on the server, in the form of "group/version"
  config         Modify kubeconfig files
  help           Help about any command
  version        Print the client and server version information

基本命令

get

get命令用于获取集群的一个或一些resource信息。

参数-o格式,输出对应的格式,yaml、json等

create

用于根据文件或输入创建资源对象。如果已经定义了相应资源对象的yaml或json文件,直接kubectl create -f filename即可创建文件内定义的资源对象。也可以直接只用子命令[namespace/secret/configmap/serviceaccount]等直接创建相应的资源对象。从追踪和维护的角度出发,建议使用json或yaml的方式定义资源。

expose

主要是做NAT的

run

类似于docker的run命令,直接运行一个image。

kubectl run -it --image=web:apache run lykops /bin/bash

也可以运行计划任务

Start the cron job to compute to 2000 places and print it out every 5 minutes.
kubectl run pi --schedule="0/5 * * * *" --image=perl --restart=OnFailure -- perl -Mbignum=bpi -wle 'print bpi(2000)'

edit

edit提供了另一种更新资源对象的操作。例如,使用edit直接更新前面创建的pod的命令为:

kubectl edit pod rc-nginx-btv4j   

上面命令的效果等效于:

kubectl get pod rc-nginx-btv4j -o yaml >> /tmp/nginx-tmp.yaml   
vim /tmp/nginx-tmp.yaml   
……
kubectl replace -f /tmp/nginx-tmp.yaml  

delete

根据资源对象名或label删除资源对象。

服务部署

rollout

deployment回退到指定版本

kubectl rollout undo deployment/lykops --to-revision=2

rolling-update

只能适用于RC

使用配置文件升级

kubectl rolling-update lykops-rc-v1 -f lykops-rc.yaml --update-period=10s

直接使用images

rolling-update lykops-rc --image=webapache:v3

scale

扩容Pod的副本数目到10

kubectl scale relicationcontroller lykops --replicas=10

缩容Pod的副本数目到1

kubectl scale relicationcontroller lykops --replicas=1

autoscale

scale虽然能够很方便的对副本数进行扩展或缩小,但是仍然需要人工介入,不能实时自动的根据系统负载对副本数进行扩、缩。autoscale命令提供了自动根据pod负载对其副本进行扩缩的功能。

autoscale命令会给一个rc指定一个副本数的范围(同HPA,http://blog.csdn.net/liyingke112/article/details/77101673),在实际运行中根据pod中运行的程序的负载自动在指定的范围内对pod进行扩容或缩容。如前面创建的nginx,可以用如下命令指定副本范围在1~4

kubectl autoscale rc lykops-rc --min=1 --max=4   

集群管理

certificate

修改集群认证信息

cluster-info

显示集群api信息,包括URL

top

显示系统资源(CPU/Memory/Storage)使用情况

cordon、uncordon、drain

cordon,启用后,该节点处于非活动节点,新建的资源对象不会分配到该机上。

uncordon,将非活动节点转为活动节点

drain,让节点处于维修状态

这三个命令是正式release的1.2新加入的命令,三个命令一起介绍,是因为三个命令配合使用可以实现节点的维护。

在1.2之前,因为没有相应的命令支持,如果要维护一个节点,只能stop该节点上的kubelet将该节点退出集群,是集群不在将新的pod调度到该节点上。如果该节点上本生就没有pod在运行,则不会对业务有任何影响。如果该节点上有pod正在运行,kubelet停止后,master会发现该节点不可达,而将该节点标记为notReady状态,不会将新的节点调度到该节点上。同时,会在其他节点上创建新的pod替换该节点上的pod。这种方式虽然能够保证集群的健壮性,但是让然有些暴力,如果业务只有一个副本,而且该副本正好运行在被维护节点上的话,可能仍然会造成业务的短暂中断。

1.2中新加入的这3个命令可以保证维护节点时,平滑的将被维护节点上的业务迁移到其他节点上,保证业务不受影响。

taint

调试和bug处理

describe

describe类似于get,同样用于获取resource的相关信息。不同的是,get获得的是更详细的resource个性的详细信息,describe获得的是resource集群相关的信息。describe命令同get类似,但是describe不支持-o选项,对于同一类型resource,describe输出的信息格式,内容域相同。

logs

logs命令用于显示pod运行中,容器内程序输出到标准输出的内容。跟docker的logs命令类似。如果要获得tail -f 的方式,也可以使用-f选项。

attach

attach命令类似于docker的attach命令,可以直接查看容器中以daemon形式运行的进程的输出,效果类似于logs -f,退出查看使用ctrl-c。如果一个pod中有多个容器,要查看具体的某个容器的的输出,需要在pod名后使用-c containers name指定运行的容器。如下示例的命令为查看kube-system namespace中的kube-dns-v9-rcfuk pod中的skydns容器的输出。 kubectl attach kube-dns-v9-rcfuk -c skydns

exec

exec命令同样类似于docker的exec命令,为在一个已经运行的容器中执行一条shell命令,如果一个pod容器中,有多个容器,需要使用-c选项指定容器。

port-forward

转发一个本地端口到容器端口,一般都是使用yaml的方式编排容器,所以基本不使用此命令。

proxy

cp

拷贝文件到pod的容器中

高级命令

apply

apply命令提供了比patch,edit等更严格的更新resource的方式。通过apply,用户可以将resource的configuration使用source control的方式维护在版本库中。每次有更新时,将配置文件push到server,然后使用kubectl apply将更新应用到resource。K8S会在引用更新前将当前配置文件中的配置同已经应用的配置做比较,并只更新更改的部分,而不会主动更改任何用户未指定的部分。

apply命令的使用方式同replace相同,不同的是,apply不会删除原有resource,然后创建新的。apply直接在原有resource的基础上进行更新。同时kubectl apply还会resource中添加一条注释,标记当前的apply。类似于git操作。

patch

如果一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新。K8S还提供了一种在容器运行时,直接对容器进行修改的方式,就是patch命令。类似打补丁。 如前面创建pod的label是app=lykops-1,如果在运行过程中,需要把其label改为app=lykops-2,这patch命令如下: kubectl patch pod lykops-1-kpiqt -p '{"metadata":{"labels":{"app":"lykops-2"}}}'

replace

replace命令用于对已有资源进行更新、替换。如前面create中创建的lykops,当需要更新resource的一些属性时,如果修改副本数量,增加、修改label,更改image版本,修改端口等。都可以直接修改原yaml文件,然后执行replace命令。

注:名字不能被更更新。另外,如果是更新label,原有标签的pod将会与更新label后的rc断开联系,有新label的rc将会创建指定副本数的新的pod,但是默认并不会删除原来的pod。所以此时如果使用get pod将会发现pod数翻倍,进一步check会发现原来的pod已经不会被新rc控制。

convert

Convert config files between different API versions

配置

label

为K8S集群的resource打标签,如前面实例中提到的为rc打标签对rc分组。还可以对nodes打标签,这样在编排容器时,可以为容器指定nodeSelector将容器调度到指定lable的机器上,如如果集群中有IO密集型,计算密集型的机器分组,可以将不同的机器打上不同标签,然后将不同特征的容器调度到不同分组上。

在1.2之前的版本中,使用kubectl get nodes则可以列出所有节点的信息,包括节点标签,1.2版本中不再列出节点的标签信息,如果需要查看节点被打了哪些标签,需要使用describe查看节点的信息。

annotate

Update the annotations on a resource

completion

Output shell completion code for the given shell (bash or zsh)

其他

api-versions

Print the supported API versions on the server, in the form of "group/version"

config

修改K8S配置文件
分享到:
评论

相关推荐

    PyPI 官网下载 | zalando-kubectl-1.11.3.63.tar.gz

    4. **Python库**:说明`zalando-kubectl`是一个用Python语言编写的功能库,可以被其他Python项目导入和使用。 根据压缩包子文件的文件名称列表,我们没有具体的子文件信息,但通常`.tar.gz`压缩包解压后会包含源...

    PyPI 官网下载 | zalando-kubectl-1.10.4.49.tar.gz

    它可能包括自定义的kubectl命令、Kubernetes资源的处理逻辑、与Zalando服务集成的API调用等。 使用这个库的开发者或运维人员,可以通过Python环境安装它,如使用pip命令: ```bash pip install zalando-kubectl-...

    kubernetes-client-linux-amd64.tar.gz

    - 插件机制:kubectl可以通过安装插件扩展其功能,如`kubectl-explain`用于查看资源定义的详细说明。 - 自定义资源:通过API Server的CRD(CustomResourceDefinition)功能,可以定义并操作自定义资源类型。 4. *...

    Kubernetes-Setup:设置Kubernetes的一些脚本和配置

    以下是关于Kubernetes安装和配置的详细说明。 首先,了解Kubernetes的基本概念至关重要。Kubernetes是一个开源平台,旨在自动管理容器化应用程序的部署、扩展和运行。它由Google开发并贡献给了Cloud Native ...

    5-k8s部署之Dashboard1

    使用 `kubectl get secret -n kubernetes-dashboard` 命令找到名为 `kubernetes-dashboard-token-<random-string>` 的 Secret,然后解码 Token 并用其登录。 4. **其他操作** - 删除 Dashboard:如果不再需要 ...

    kubernetes-network-policy-recipes:您可以复制粘贴的Kubernetes网络策略的示例配方

    在实际操作中,使用`kubectl apply -f <yaml_file>`命令可以将这些策略部署到Kubernetes集群中。在调整和测试策略时,记得先备份现有配置,并在非生产环境中进行实验,以避免对生产环境造成影响。 总的来说,...

    kubectl-plugin-ssh-jump:一个使用SSH跳转主机Pod SSH到Kubernetes节点的kubectl插件

    [笔记] Kubectl版本> = 1.12.0 (首选) 从Kubernetes 1.12开始,kubectl现在允许添加外部可执行文件作为子命令。 有关更多详细信息,请参见 您可以使用kubectl ssh-jump ...运行插件kubectl ssh-jump ... Kubectl...

    Kubernetes Cookbook - Hideto Saito 2016

    本书通过对实际案例和操作步骤的讲解,帮助读者了解Kubernetes的架构组成、安装部署、操作命令以及应用管理等方面的知识。 从文档提供的部分内容来看,该书涵盖了以下几个方面的知识点: 1. Kubernetes架构和组件...

    kubernetes-reference

    `kubernetes-reference-main` 这个文件可能是一个 Kubernetes 参考文档的主目录,通常会包含各种 YAML 示例配置文件、命令行使用示例、最佳实践以及深入的技术说明。通过阅读这些文档,用户可以学习如何配置和管理 ...

    11-Flink kubernetes operator 常用的命令

    内容概要:本文档详细介绍了如何使用 Flink Kubernetes Operator 进行 Flink 应用程序的管理和监控。...文档中的命令适用于 Flink Kubernetes Operator 的常用操作流程,能有效减少实际工作中遇到的问题。

    1下载kubectl(kubectl下载)

    以下是关于 `kubectl` 下载和安装的详细步骤,以及如何验证其版本信息的说明。 **下载 `kubectl`** 下载 `kubectl` 的过程通常涉及以下步骤: 1. **确定最新版本**:通过访问 Kubernetes 官方下载页面或使用 curl...

    linux-Spawn特定kubectl上下文集群的一个shell

    在标题“linux-Spawn特定kubectl上下文集群的一个shell”和描述“Spawn特定kubectl上下文(集群)的一个shell”中,我们关注的是如何在特定的kubectl上下文中启动一个新的shell会话,以直接与Kubernetes集群进行交互...

    kubernetes1.10 client 安装包

    现在,你可以使用`kubectl`命令与Kubernetes集群交互,例如列出所有命名空间、节点或部署。 ```bash kubectl get namespaces kubectl get nodes kubectl get deployments ``` 以上就是手动安装Kubernetes 1.10...

    kubernetes技术最佳实践

    文件中提到了使用命令"kubectl apply -f [podnetworkyamlfile]"来部署一个Pod网络,但没有具体说明是哪种网络插件。在实际操作中,需要根据所选择的网络插件进行相应的操作。 以上步骤完成后,就成功搭建了基础的...

    kubernetes中文文档

    - **基本命令**: 如何使用 `kubectl` 进行基本的操作,例如创建、查看、更新和删除资源。 - **Pod 和容器**: 解释 Pod 的概念,以及如何创建和管理 Pod 中的容器。 - **服务与负载均衡**: 介绍如何定义和使用服务,...

    Kubernetes核心实战11

    使用`kubectl get pod`、`kubectl describe pod`、`kubectl delete pod`和`kubectl logs`命令来管理和查看Pod的状态和日志。 4. Deployment: Deployment是用来管理Pod的控制器,它可以确保Pod的副本数量、实现...

    carvel-simple-app-on-kubernetes:使用k14s工具部署的K8s简单Go应用程序示例

    k8s-简单应用示例 例如回购展示了如何使用工具从卡维尔开发: , ,和...成功部署后,您可以通过kubectl port-forward命令在浏览器中以127.0.0.1:8080访问前端服务: kubectl port-forward svc/simple-app 8080:80 在

    kube-flannel.yml

    通过运行 `kubectl apply -f kube-flannel.yml` 命令,我们可以将这个 YAML 文件应用到 Kubernetes 集群中,从而安装并配置 Flannel。 在 Kubernetes 中,每个节点都需要一个网络插件来提供容器间的网络通信。...

    Kubernetes Cheatsheet

    以下是一些核心概念和命令的详细说明: 1. **Cluster State Metrics**: - **Running Pods**: `kube_pod_status_phase` 命令如 `kubectl get pods` 可以显示集群中运行的Pod状态,包括Pending、Running、Succeeded...

    aws-kops-instalation:使用Windows 10(linux bash)在AWS上设置Kubernetes集群

    您可以按照所用平台的说明之一进行安装,也可以自行安装。 Windows- Linux- MacOS- 配置头盔 使用以下命令将标准图表添加到掌舵很重要 helm repo add stable http://storage.googleapis.com/kubernetes-charts ...

Global site tag (gtag.js) - Google Analytics