文章目录
前言:
-
基于上一篇多master节点二进制部署的环境,部署Web管理页面,多master节点二进制部署入口:多master二进制集群
通过对管理界面的操作,会调用集群中master节点的apiserver,创建Pod资源。
-
kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理(删除、更新、回滚)控制着Pod的生命周期,同时能够在集群上进行容器化应用的安装部署。
一、Kubectl 概述
1.1 kuerber 命令行的语法
- 语法:
kubectl [command] [TYPE] [NAME] [flags]
-
基本参数介绍:
-
① command:
子命令,用于操作kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
-
② TYPE:
指定资源类型。资源类型不区分大小写,您可以指定单数,复数或缩写形式。例如,以下命令产生相同的输出
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
-
③ NAME:
指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息
例如:kubectl gets pods
对多个资源执行操作时,可以按类型和名称指定每个资源,也可以指定一个或多个文件 :
-
Ⅰ 通过类型和名称指定资源:
-
如果资源均为同一类型,则将其分组:
格式:TYPE1 name1 name2 name<#>
示例:kubectl get pod pod1 example-pod2
-
若分别指定多个资源类型:
格式: TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
示例: kubectl get pod/example-pod1 replicationcontroller/example-rc1
-
Ⅱ 若需要使用一个或多个文件指定资源:
格式: -f file1 -f file2 -f file<#>
示例: kubectl get pod -f ./pod.yaml
一般使用YAML而不是JSON,主要因为YAML往往更加的友好,尤其是对配置文件
-
④ flags:
指定可选标志。例如,可以使用 -s 或 --server 标志来指定Kubernetes API服务器的地址和端口
PS: 在命令行中指定的标志将覆盖默认值和任何相应的环境变量。
-
1.2 Kubectl 常用命令
1.2.1 常用子命令
- kubectl作为kubernetes的命令行工具,主要的职责就是对集群中的资源的对象进行操作,这些操作包括对资源对象的创建、删除和查看等。下表中显示了kubectl支持的所有操作,以及这些操作的语法和描述信息
1.2.2 常用参数
1.2.3 kubectl 输出选项
-
kubectl 默认的输出格式为纯文本格式,可以通过-o或者-output字段指定命令的输出格式
语法如下:
kubectl [command] [TYPE] [NAME] -o=<output_format>
- 以下为可选的输出格式及对应功能
-o=custom-columns=<spec> 根据自定义列名进行输出,以逗号分隔
-o=custom-columns-file=<filename> 从文件中获取自定义列名进行输出
-o=json
以JSON格式显示结果
-o=jsonpath=<template> 输出jsonpath表达式定义的字段信息
-o=jsonpath-file=<filename>
输出jsonpath表达式定义的字段信息,来源于文件
-o=name
仅输出资源对象的名称
-o=wide
输出额外信息,对于pod,将输出pod所在的Node名称
-o=yaml
以YAML格式显示结果
- 输出pod额外信息,示例:
kubectl get pod <pod-name> -o wide
- 以YAML格式显示Pod详细信息,示例:
kubect get pod <pod-name> -o yaml
- 自定义列表显示Pod信息,示例:
kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
- 基于文件的自定义列名输出
kubectl get pods <pod-name> -o=custom-columns-file=template.txt
-
kubectl 还可以将输出的结果按指定字段进行排序,使用–sort-by参数以jsonpath表达式进行指定即可~
示例:
格式:kebuctl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
按照名称进行排序
示例:
kubectl get pods --sort-by=.metadata.name
二、部署流程
2.1 环境
- 基于上一篇博客部署的多master集群的环境,部署Web界面,然后进行kubectl 命令操作演示
- 首先,需要至dashboard官网下载5个YAML文件,官方入口:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard
- 下载后,在master1节点上创建dashboard工作目录,并上传已下载的五个文件,如下:
[root@master ~]# mkdir dashboard
[root@master ~]# cd dashboard/
[root@master dashboard]# rz -E
[root@master dashboard]# ls
dashboard-configmap.yaml dashboard-rbac.yaml dashboard-service.yaml
dashboard-controller.yaml dashboard-secret.yaml k8s-admin.yaml
#k8s-admin.yaml 是在本地创建的管理员命令资源配置,下文会进行说明
- 创建顺序:rbac.yaml---->secret.yaml---->configmap.yaml---->controller.yaml----->dashboard.yaml
2.1 创建、加载所有文件
- ① dashboard-rbac.yaml 角色控制,访问控制资源
kind: Role #角色
apiVersion: rbac.authorization.k8s.io/v1 #api版本号(有专门的版本号控制)
metadata: #源信息
labels:
k8s-app: kubernetes-dashboard
addonmanager.kubernetes.io/mode: Reconcile
name: kubernetes-dashboard-minimal #创建的资源名称
namespace: kube-system
rules: #参数信息的传入
# Allow Dashboard to get, update and delete Dashboard exclusive secrets.
- apiGroups: [""]
resources: ["secrets"]
resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
verbs: ["get", "update", "delete"]
# Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["kubernetes-dashboard-settings"]
verbs: ["get", "update"]
# Allow Dashboard to get metrics from heapster.
- apiGroups: [""]
resources: ["services"]
resourceNames: ["heapster"]
verbs: ["proxy"]
- apiGroups: [""]
resources: ["services/proxy"]
resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubernetes-dashboard-minimal
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
addonmanager.kubernetes.io/mode: Reconcile
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: kubernetes-dashboard-minimal
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system #名称空间的管理(默认为default)
- 创建dashboard-rbac.yaml资源
#-f 以文件的格式创建yaml资源
[root@master dashboard]# kubectl create -f dashboard-rbac.yaml
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
- 使用-n 查看Role角色kube-system名称空间中的资源
[root@master dashboard]# kubectl get Role -n kube-system
NAME AGE
extension-apiserver-authentication-reader 5d18h
kubernetes-dashboard-minimal 9m43s #此项就是刚刚创建的资源
system::leader-locking-kube-controller-manager 5d18h
system::leader-locking-kube-scheduler 5d18h
system:controller:bootstrap-signer 5d18h
system:controller:cloud-provider 5d18h
system