# 使用说明

# 创建K8S集群

需要填写集群名称、英文标识,并且创建成功后英文标识不可更改。

# 安装Agent

创建好k8s集群后需要安装agent。按照页面提示使用Agent安装命令安装即可:

helm install k8s-agent https://{企业域名}/downloads/k8s-agent-1.0.0.tgz \
    -n k8s-agent-apps \
    --create-namespace \
    --set registry.host={企业域名}/mirrors \
    --set registry.username=guoxinying \
    --set registry.token=【密码或个人token】 \
    --set server.protocol=wss \
    --set server.port=443 \
    --set server.host={企业域名}\
    --set server.secret=wnuXFQnUCiOngCmpOhGkgnpVDCDWondYhBnuMJiT \
    --set app.version=1.0.1

将agent安装到指定的机器上 在安装agent时下载chart.yaml到本地机器中,在chart.yaml文件中添加以下代码库中注释的代码并保存此chart.yaml文件,在进行helm install时引用此文件进行安装即可将agent安装到指定的机器上。

helm:
nodeSelector: [
#"node-role.kubernetes.io/master":"worker"
#"xXX":"xXX"
tolerations: {}
#"node-role.kubernetes.io/master":"NoSchedule"#"custom.toleration=vaLue":"NoSchedule"

按照好Agent后Agent状态变显示为已在线,若Agent状态为离线时K8S服务不可用。

# 命名空间

创建命名空间时需要填写命名空间的名称,可以选填Annotations和Labels,

创建完成后状态为active,并且名称为可点击的命名空间为可用的命名空间,若命名空间的操作列为同步,表示DevOps平台的权限与k8s集群的权限不一致,无法进行命名空间的操作需要您点击同步,会将k8s管理的权限同步到K8S,使其权限保持一致后命名空间的可使用。

正常状态的命名空间为可操作的,可以进入命名空间内查看具体的信息以及对命名空间进行增删改查。并且可以在列表页快捷查看、编辑yaml

进入命名空间点命名空间名称显示的为此命名空间的基本信息包括图形化的配置信息以及yaml文件信息,并且支持在线编辑yaml文件

# 工作负载

分为CronJobs、DaemonSets、Deployment、Jobs、StatefulSets、Pods五种类型。

  • CronJobs:在Kubernetes集群中运行周期性任务
  • DaemonSets:保证在每个Node上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用。
  • Deployment:为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用
  • Job:负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
  • StatefulSet:是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计)
  • Pod:是所有业务类型的基础,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。

# CronJob

创建定时任务:点击右上方的新建按钮,通过写CronJob的yaml文件创建定时任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击定时任务名称进入此定时任务详情中,查看定时任务的执行记录以及yaml文件,并可以直接在此页面编辑、下载、删除此cronJob

# DaemonSet

典型的应用包括:

  • 日志收集,比如fluentd,logstash等
  • 系统监控,比如Prometheus Node Exporter,collectd,New Relic agent,Ganglia gmond等
  • 系统程序,比如kube-proxy, kube-dns, glusterd, ceph等

创建DaemonSet:点击右上方的新建按钮,通过写DaemonSet的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击任务名称进入此DaemonSet详情中,查看DaemonSet的执行记录以及yaml文件,并可以直接在此页面编辑、下载、删除此DaemonSet

# Deployment

典型的应用场景:

  • 定义Deployment来创建Pod和ReplicaSet
  • 滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续Deployment

创建deployment:点击右上方的新建按钮,通过写deployment的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击任务名称进入此deployment详情中,查看deployment的执行记录以及yaml文件,并可以直接在此页面编辑、下载、删除此deployment

# Job

Kubernetes支持以下几种Job:

  • 非并行Job:通常创建一个Pod直至其成功结束
  • 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
  • 带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功

创建任务:点击右上方的新建按钮,通过写job的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击任务名称进入此任务详情中,查看任务的执行记录以及yaml文件,并可以直接在此页面编辑、下载、删除此job

# StatefulSet

应用场景包括

  • 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现
  • 稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现
  • 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态),基于init containers来实现
  • 有序收缩,有序删除(即从N-1到0)

创建StatefulSet:点击右上方的新建按钮,通过写StatefulSet的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击任务名称进入此StatefulSet详情中,查看StatefulSet的执行记录以及yaml文件,并可以直接在此页面编辑、下载、删除此StatefulSet

# Pod

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元. Kubernetes 集群中的 Pod 主要有两种用法:

  • 运行单个容器的 Pod。"每个 Pod 一个容器"模型是最常见的 Kubernetes 用例; 在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernetes 直接管理 Pod,而不是容器。

  • 运行多个协同工作的容器的 Pod。 Pod 可能封装由多个紧密耦合且需要共享资源的共处容器组成的应用程序。 这些位于同一位置的容器可能形成单个内聚的服务单元 —— 一个容器将文件从共享卷提供给公众, 而另一个单独的“边车”(sidecar)容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。

创建pod:点击右上方的新建按钮,通过写pod的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击pod名称进入此pod详情中,查看pod的中创建的容器、条件、最近执行记录,并可以直接在此页面编辑、下载、删除此pod

# 服务发现

包括Horizontal Pod Autoscaler、Ingress、NetworkPolicy、service。

  • Horizontal Pod Autoscaler:Pod 水平自动扩缩可以基于 CPU 利用率自动扩缩 ReplicationController、Deployment、ReplicaSet 和 StatefulSet 中的 Pod 数量。

  • Ingress:通过http代理服务器将外部的http请求转发到集群内部的后端服务。

  • NetworkPolicy:网络策略(NetworkPolicy)是一种关于 Pod 间及 Pod 与其他网络端点间所允许的通信规则的规范。NetworkPolicy 资源使用标签选择 Pod,并定义选定 Pod 所允许的通信规则。

  • service:定义了Pod逻辑集合和访问这些Pod的策略。Service通过Label Selector选择Pod。

# Horizontal Pod Autoscaler

创建Horizontal Pod Autoscaler:点击右上方的新建按钮,通过写Horizontal Pod Autoscaler的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击Horizontal Pod Autoscaler名称进入此任务详情中查看此任务的yaml详情

# Ingresss

创建Ingresss:点击右上方的新建按钮,通过写Ingresss的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击Ingresss名称进入此任务详情中查看此任务的yaml详情

# NetworkPolicies

创建NetworkPolicy:点击右上方的新建按钮,通过写NetworkPolicy的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击NetworkPolicy名称进入此任务详情中查看此任务的yaml详情

# Services

创建Services:点击右上方的新建按钮,通过写Services的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击Services名称进入此任务详情中查看此任务的yaml详情

# 存储

包括ConfigMaps、Persistent Volume Claims、Secrets。

  • ConfigMaps:用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap跟secret很类似,但它可以更方便地处理不包含敏感信息的字符串。

  • Persistent Volume Claims:类型存储卷将PersistentVolume挂接到Pod中作为存储卷。使用此类型的存储卷,用户并不知道存储卷的详细信息。

  • Secrets:是一种包含少量敏感信息例如密码、令牌或密钥的对象。

# ConfigMaps

创建ConfigMap:点击右上方的新建按钮,通过写ConfigMap的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击ConfigMap名称进入此任务详情中查看此任务的yaml详情

# Persistent Volume Claims

创建Persistent Volume Claim:点击右上方的新建按钮,通过写Persistent Volume Claim的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击Persistent Volume Claim名称进入此任务详情中查看此任务的yaml详情

# Secrets

创建Secret:点击右上方的新建按钮,通过写Secret的yaml文件创建任务。创建页面会内置一个模板,根据您的需要修改模板即可。

可点击Secret名称进入此任务详情中查看此任务的yaml详情

# helm部署

helm是 Deis 开发的一个用于Kubernetes 应用的包管理工具,主要用来管理 Charts。有点类似 CentOS 中的 yum包管理工具。可以很方便的将之前打包的好的yaml 文件部署到Kubernetes上。

# 部署实例

在创建helm的部署实例时可以选择使用部署模板创建也可以自定义创建. 不使用模板创建时,需要填写实例名称、char库、char包、char版本等信息,可以从制品库中根据选择的char包内容自动填充版本说明以及values,并且values允许修改。部署时会会将value值和chart包中的value值合并,相同项优先使用页面中填写的value值。

# 部署记录

创建完部署实例后,就会在部署记录中有一条信息,同时编辑部署实例的内容后也会在部署记录中有一条信息。并且支持多维度的条件筛选。

# 部署模板

部署模板的作用在于创建部署实例时可以通过部署模板快速创建部署实例,也可以在流水线的helm部署模板插件中通过选择部署模板来实现helm的部署。 创建部署模板:通过填写模板名称、实例名称、char库、char包等信息来创建模板。 注:部署说明和values默认取char包中最新的版本中的值

在部署模板的列表页还可以直接新建部署实例,新建部署实例时,部署模板字段默认选择此模板并且允许更改为其他模板。

# 设置

命名空间有单独的角色管理与成员管理,不仅可以在k8s集群中设置权限还可以具体到命名空间级别。

# 成员管理

在成员管理中可以为此命名空间添加成员。目前的内置角色有三个:管理员、成员、只读用户

# 角色管理

目前内置了三个角色,并且支持用户自定义角色

# PV管理

PV是集群中的一块存储,由管理员或使用存储类动态地提供。PV是像volume一样的卷插件,但是它的生命周期独立于任何使用PV的Pod。

创建PV:点击右上角的新建,通过yaml文件创建PV。 新建的PV的状态为available,表示可以用于 PVC 绑定。bound表示为PV和PVC已经绑定成功。 注:

  • 通过capacity的storage的大小进行匹配,若此值为相同并且PV状态为available时,则可以直接绑定。
  • 通过在PVC中指定PV,你可以声明该特定PV与PVC之间的绑定关系。如果该PV存在且未被通过其claimRef字段预留给PVC,则该PV会和该PVC 绑定到一起。
apiVersion: v1
kind: PersistentVolume
metadata:
  name: foo-pv
spec:
  storageClassName: ""
  claimRef:
    name: foo-pvc
    namespace: foo

点击PV名称可以直接进PV详情页查看PV的详细数据以及yaml文件

# 节点

节点的列表会显示master、node的所有节点并且会显示他们的基本信息,并可以查看他们的yaml文件。

# 设置

# 基本信息

修改集群的名称、描述等信息,英文标识是不可修改的。

# 成员管理

在成员管理中为用户按照角色添加权限。

# 安装Agent

若您的集群未安装Agent时,会有安装angent的说明,若已安装Agent则显示Agent的状态

# 运维操作

删除集群的操作