​kubernetes运维指南

上一节, 我们已经知道kubernetes的常用术语和一些思想, 那接下来, 我们是不是应该来一个简单的例子, 跑起来试试呢?

kubernetes要想进行二次开发, 或者简单的说跑起来, 运行一个小实例, 那就要求我们需要对ta的常用操作相当的熟悉, 那入手了解kubectl, 是非常快速的可以玩起来的一个方式, 下面, 我们就先来看看kubectl的命令行操作的常用方式。

1. kubectl用法详解

1. kubectl语法

kubectl [command] [Type] [NAME] [flags]
  • command: 子命令, 用于操作kubernetes集群资源对象的命令, 例如:create, delete, describe, get, apply等等

  • TYPE: 资源对象的类型, 区分大小写, 能以单数,复数或者简写形式表示。例如以下3中TYPE是等价的。

kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
  • NAME:资源对象的名称, 区分大小写。如果不指定名称, 系统则将返回属于TYPE的全部对象的列表,例如:kubectl get pods 将返回所有pod的列表

  • flags: kubectl 子命令的可选参数, 例如使用 -s  指定api server的url地址而不用默认值。

kubectl可操作的资源对象类型以及缩写

资源类型缩写说明
clusters
集群
componentstatusescs查看各组件信息
configmapscmConfigMap是用来存储配置文件的kubernetes资源对象
daemonsetsdsDaemonSet只管理Pod对象,通过nodeAffinity和Toleration两个调度器,保证每个节点上只有一个Pod
集群动态加入了新Node,DaemonSet中的Pod也会添加在新加入Node上
删除一个DaemonSet也会级联删除所有其创建的Pod。
deploymentsdeployDeployment为pod和ReplicaSet提供了一个声明式定义方法, 用来替代以前的ReplicationController来方便的管理应用
endpointsep节点
eventsevEvents  它是Kubelet负责用来记录多个容器运行过程中的事件,命名由被记录的对象和时间戳构成
horizontalpodautoscalershpa
ingressesing
jobs

limitrangeslimits
namespacesns
networkpolicies

statefulsets

persistentvolumeclaimspvc
persistentvolumespv
podspo
podsecuritypoliciespsp
podtemplates

replicasetsrs
replicationcontrollersrc
resourcequotasquota
conjob

secrets

serviceaccounts

servicessvs
storageclassessc
thirdpartyresources

在一个命令行中也可以同时对多个资源对象进行操作, 以多个TYPE和NAME的组合表示, 示例如下:

获取多个pod的信息

kubectl get pods pod1 pod2

获取多种对象的信息:

kubectl get pod/pod1  rc/rc1

同时应用多个YAML文件, 以多个-f file参数表示

kubectl get pod -f pod1.yaml -f pod2.yaml
kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml

2. kubectl 子命令详解

kebectl的子命令非常丰富, 涵盖了对kubernetes集群的主要操作, 包括资源对象的创建, 删除, 查看, 修改, 配置, 运行等, 详细的子命令如表2.10表示:

子命令语法说明
annotatekubectl annotate (-f Filename | type name | type/name)
k1=v1, k2=v2....
添加或更新资源对象的annotation信息
api-versionkubectl api-version [flags]列出当前系统支持的api版本列表, 格式为“group/version”
applykubectl apply -f filename [flags]从配置文件或stdin中对资源对象进行配置更新
attachkubectl attach POD -c container [flags]附着到一个正在运行的容器上
authkubectl auth [flags] [optioins]检测RBAC权限设置
autoscalekubectl antoscale (-f filename | type name | type/name)对deployment, replicaSet或replicationController进行水平自动扩容和缩容的设置
cluster-infokubectl cluster-info [flags]显示集群master和内置服务的信息
completionkubectl completion shell [flags]输出shell命令的执行结果吗(bash或zsh)
configkubectl config subcommand [flags]修改kebeconfig文件
convertkubectl convert -f filename [flags]转换配置文件为不同的api版本
cordonkubectl cordon node [flags]将node标记为unschedulable,即隔离出集群调度范围
createkubectl create -f filename [flags]从配置文件或stdin中创建资源对象
deletekubectl delete  (-f filename | type name | -l label) [flags]从配置文件, stdin, 资源名称或label selector 删除资源对象
describekubectl describe (-f filename | type name) [flags]描述一个或多个资源对象的详细信息
diffkubectl diff -f filename [options]查看配置文件与当前系统中正在运行的资源对象的差异
drainkubectl drain node [flags]首先将node设置为unschedulable, 然后删除在该node上运行的所有pod, 但不会删除不由api server管理的pod
editkubectl edit (-f filename | type name | type/name) [flags]编辑资源对象的属性, 在线更新
execkubectl exec pod [-c container] [-i] [-t] [flags] [-- command [args...]]执行一个容器中的命令
explainkubectl explain [--include-extended-apis=true] [--recursive=false] [flags]对资源对象属性的详细说明
exposekubectl expose (-f filename | type name) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [----external-ip=external-ip-of-service] [--type=type]将已经存在的的一个rc, service, deployment 或pod暴露为一个新的service
getkubect get (-f filename | type name | -l label) [--watch] [--sort-by-FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]显示一个或者多个资源对象的概要信息
labelkubect label (-f filename | type name) k1=v1...kn=vn [--overwrite] [--all] [--resource-version=version] [flags]设置或者资源对象的label
logskubectl logs pod [-c container] [--follow] [flags]在屏幕上打印一个容器的日志
patchkubectl patch kubectl patch (-f filename | type name) --patch patch [flags]以merge形式对资源对象的那部分字段的值进行修改
pluginkubectl plugin [flags] [optioins]在kubectl命令行适用用户自定义的插件
port-forwardkubectl port-forward pod [local_port:] remote_port [...[local_port_n:]remote_port_n] [flags]将本机的某个端口映射到到pod的端口号, 通常用于测试
porxykubectl porxy [--port=port] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]将本机某个端口号映射到api server
replacekubectl replace -f filename [flags]从配置文件或stdin替换资源对象
rolling-updatekubectl rolling-update old_controller_name ([new_controller_name] --image=new_container_image | -f new_controller_spec) [flags]对rc进行滚动升级
rolloutkubectl rollout subcommand [flags]对deployment进行管理, 可用操作包括:history, pause, resume, undo, status
runkubectl run name --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]基于一个镜像在kubernetes集群上启动一个deployment
scalekubectl scale (-f filename | type name) --replicas=count [--resource-version=version] [--current-replicas=count] [flags]扩容, 缩容一个deployment, replicaset, RC或job中pod的数量
setkubectl set subcommand [flags]设置资源对象的某个特定信息, 目前仅支持修改容器的镜像
taintkubect taint node name k1=v1: taint_effect_1...kv=vn:taint_effect_n [flags]设置node的taint信息, 用于将特定的pod调度到特定的node的操作, 为alpha版本的功能
topkubectl top node查看node或pod的资源使用情况, 需要在集群中运行metics server
uncordonkubectl uncordon Node
versionkubectl version打印系统的版本信息

3. kubectl参数列表

Kubectl命令行的公共启动参数如下所示:

80d9aa91c524e7f5f00083a46e5aee4d.png

4. Kubectl 输出格式

kubectl命令可以用多种格式对结果进行显示, 输出的格式通过-o 参数指定:

498b391a530022ee01cae0779e5648b1.png

5. kubectl操作示例

1、根据yaml配置文件一次性创建service和rc

kubectl create -f my-service.yaml -f my-rc.yaml

2、根据目录下所有.yaml、.yml、.json文件的定义进行创建操作

kubectl create -f <directory>

3、查看所有Pod列表

kubectl get pods

4、查看rc和service列表

kubectl get rc,service

5、显示Node的详细信息

kubectl describe nodes <node-name>

6、显示Pod的详细信息

kubectl describe pods/<pod-name>

7、显示由RC管理的Pod信息

kubectl describe pods <rc-name>

8、删除基于pod.yaml文件定义的Pod

kubectl delete -f pod.yaml

9、删除所有包含某个label的Pod和Service

kubectl delete pods,services -l name=<label-name>

10、删除所有Pod

kubectl delete pods --all

11、在Pod的容器里执行date命令,默认使用Pod中的第1个容器执行

kubectl exec <pod-name> date

12、指定Pod中某个容器执行date命令

kubectl exec <pod-name> -c <container-name> date

13、以bash方式登陆到Pod中的某个容器里

kubectl exec -it <pod-name> -c <container-name> /bin/bash

14、查看容器输出到stdout的日志

kubectl logs <pod-name>

15、跟踪查看容器的日志,相当于tail -f命令的结果

kubectl logs -f <pod-name> -c <container-name>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值