Kubernetes
Kubernetes是一个开源的容器编排引擎,用来对容器化应用进行自动化部署。
Kubectl
Kubectl是Kubernetes集群的命令行工具,通过Kubectl能够对集群本身进行管理。并能够在集群上进行容器化得部署和安装。
Kubectl命令语法格式:
$ kubectl [command] [TYPE] [NAME] [flags]
1、 command:指定要对一个或者多个资源执行的操作,例如 create、get、delete等。
2、 TYPE:指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写的形式 。例如,一下命令输出的结果相同:
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
3、NAME:指定资源的名称。名称区分大小写。如果省略名称。则显示所有资源的详细信息。 kubectl get pods.
在对多个资源执行操作时,可以按类型和名称指定指定每个资源。或指定一个或多个文件。
(1)要按类型和名称指定资源:
.要对所有类型相同的资源进行分组,执行以下操作:TYPE1 name1 name2 name3 name<#>,例如:kubectl get pod example-pod1 example-pod2
.分别指定多个类型的资源:TYPE1/name1 TYPE1/name2 TYPE<#>/name<#> 。例如:kubectl get pad/example-pod1 replicationcontroller。
(2)用一个或多个文件指定资源: -f file1 -f file2 -f file<#>
4、flags:指定可选的参数。例如,可以使用 -s 或者 -server 参数指定kubernetes API 服务器的地址和端口
注意:从命令行指定的参数会覆盖默认值和任何相应的环境变量。
kubectl的常用命令
kubectl 作为Kubernetes的命令行工具。主要的职责就是对集群中的资源对象进行操作。这些操作包括资源队形的创建、删除和查看等。
操作 | 语法 | 描述 |
---|---|---|
annotate | kubectl annotate | 添加或更新一个或多个资源的注释 |
api-versions | kubectl api-versions [flogs] | 列出可用的API版本 |
apply | kubectl apply -f FILENAME [flags] | 将来自于文件或stdin的配置变更应用到主要对象中 |
attch | kubectl attach POD -c CONTAINER [-i] [-t] [flags] | 连接到正在运行的容器上,可以查看输出流与文件交互 |
查看资源状态
● get 最常用的查看命令,显示一个或多个资源的详细信息
# Usage:
kubectl get
[(-o|--output=)](TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]
[options]
# Examples:
kubectl get services # 列出当前NS中所有service资源
kubectl get pods --all-namespaces # 列出集群所有NS中所有的Pod
kubectl get pods -o wide # -o wide也比较常用,可以显示更多资源信息,比如pod的IP等
kubectl get deployment my-dep # 可以直接指定资源名查看
kubectl get deployment my-dep --watch # --watch 参数可以监控资源的状态,在状态变换时输出。在跟踪服务部署情况时很有用
kubectl get pod my-pod -o yaml # 查看yaml格式的资源配置,这里包括资实际的status,可以用--export排除
kubectl get pod my-pod -l app=nginx # 查看所有带有标签app: nginx的pod
● describe
describe命令同样用于查看资源信息,但相比与get只输出资源本身的信息,describe聚合了相关资源的信息并输出。比如,在describe node信息时,同时会输出该node下的pod的资源利用情况。所以describe命令在排错和调试时非常有用。
# Usage:
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]
# Examples:
kubectl describe nodes my-node # 查看节点my-node的详细信息
kubectl describe pods my-pod # 查看pod my-pod的详细信息
容器管理
虽然逻辑上,Kubernetes的最小管理单位是Pod,但是实际上还是免不了与容器直接交互,特别是对于多容器的Pod,任意容器有问题,都会导致Pod不可用。
● 查看日志
# Usage:
kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]
# Examples:
kubectl logs my-pod
# 输出一个单容器pod my-pod的日志到标准输出
kubectl logs nginx-78f5d695bd-czm8z -c nginx
# 输出多容器pod中的某个nginx容器的日志
kubectl logs -l app=nginx
# 输出所有包含app-nginx标签的pod日志
kubectl logs -f my-pod
# 加上-f参数跟踪日志,类似tail -f
kubectl logs my-pod -p
# 输出该pod的上一个退出的容器实例日志。在pod容器异常退出时很有用
kubectl logs my-pod --since-time=2018-11-01T15:00:00Z
# 指定时间戳输出日志
kubectl logs my-pod --since=1h
# 指定时间段输出日志,单位s/m/h
kubectl ConfigMap
//查看ConfigMap
kubectl get cm
//编辑ConfigMap
kubectl edit cm cmName
/*修改 ConfigMap,先进入服务的ConfigMap,然后按i进入编辑模式,修改ConfigMap中的相关配置,
按 esc 退出编辑状态,然后再英文状态下输入:wq,保存并退出, :q 退出不保存, :w 保存不退出
*/