warning
This commit is contained in:
@ -434,6 +434,13 @@ module.exports = {
|
||||
},
|
||||
]
|
||||
},
|
||||
// {
|
||||
// title: '部署LNMP应用',
|
||||
// collapsable: true,
|
||||
// children: [
|
||||
// '/learning/k8s-practice/lnmp/wordpress'
|
||||
// ]
|
||||
// }
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: wordpress
|
||||
labels:
|
||||
app: wordpress
|
||||
spec:
|
||||
ports:
|
||||
- port: 80
|
||||
selector:
|
||||
app: wordpress
|
||||
tier: frontend
|
||||
type: LoadBalancer
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: wp-pv-claim
|
||||
labels:
|
||||
app: wordpress
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
---
|
||||
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: wordpress
|
||||
labels:
|
||||
app: wordpress
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: wordpress
|
||||
tier: frontend
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: wordpress
|
||||
tier: frontend
|
||||
spec:
|
||||
containers:
|
||||
- image: wordpress:4.8-apache
|
||||
name: wordpress
|
||||
env:
|
||||
- name: WORDPRESS_DB_HOST
|
||||
value: wordpress-mysql
|
||||
- name: WORDPRESS_DB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: mysql-pass
|
||||
key: password
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: wordpress
|
||||
volumeMounts:
|
||||
- name: wordpress-persistent-storage
|
||||
mountPath: /var/www/html
|
||||
volumes:
|
||||
- name: wordpress-persistent-storage
|
||||
persistentVolumeClaim:
|
||||
claimName: wp-pv-claim
|
||||
@ -0,0 +1,65 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: wordpress-mysql
|
||||
labels:
|
||||
app: wordpress
|
||||
spec:
|
||||
ports:
|
||||
- port: 3306
|
||||
selector:
|
||||
app: wordpress
|
||||
tier: mysql
|
||||
clusterIP: None
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: mysql-pv-claim
|
||||
labels:
|
||||
app: wordpress
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
---
|
||||
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: wordpress-mysql
|
||||
labels:
|
||||
app: wordpress
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: wordpress
|
||||
tier: mysql
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: wordpress
|
||||
tier: mysql
|
||||
spec:
|
||||
containers:
|
||||
- image: mysql:5.6
|
||||
name: mysql
|
||||
env:
|
||||
- name: MYSQL_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: mysql-pass
|
||||
key: password
|
||||
ports:
|
||||
- containerPort: 3306
|
||||
name: mysql
|
||||
volumeMounts:
|
||||
- name: mysql-persistent-storage
|
||||
mountPath: /var/lib/mysql
|
||||
volumes:
|
||||
- name: mysql-persistent-storage
|
||||
persistentVolumeClaim:
|
||||
claimName: mysql-pv-claim
|
||||
@ -12,6 +12,7 @@ description: 使用Kuboard在Kubernetes上安装监控套件,并对example微
|
||||
必须具备如下条件:
|
||||
|
||||
* 已完成 [导入 example 微服务](/guide/example/import.html)
|
||||
* 已配置了 NFS [StorageClass](/learning/k8s-intermediate/persistent/storage-class.html)
|
||||
|
||||
::: warning
|
||||
|
||||
@ -19,6 +20,10 @@ description: 使用Kuboard在Kubernetes上安装监控套件,并对example微
|
||||
|
||||
:::
|
||||
|
||||
::: tip
|
||||
许多网友自己搭建 NFS 测试环境,再创建 NFS存储类,经常碰到 `access denied` 这类权限问题。为了帮助大家更快地完成 NFS 测试环境搭建,Kuboard提供了一篇NFS相关的简明文档,请参考 [搭建NFS Server](/learning/k8s-intermediate/persistent/nfs.html)
|
||||
:::
|
||||
|
||||
假设您已进入 example 名称空间,如下图所示:
|
||||
|
||||

|
||||
@ -29,11 +34,7 @@ description: 使用Kuboard在Kubernetes上安装监控套件,并对example微
|
||||
|
||||
### 安装全局监控套件
|
||||
|
||||
::: tip
|
||||
许多网友自己搭建 NFS 测试环境,再创建 NFS存储类,经常碰到 `access denied` 这类权限问题。为了帮助大家更快地完成 NFS 测试环境搭建,Kuboard提供了一篇NFS相关的简明文档,请参考 [搭建NFS Server](/learning/k8s-intermediate/persistent/nfs.html)
|
||||
:::
|
||||
|
||||
* 在 master 节点执行 <Badge type="error">此步骤不可忽略</Badge>
|
||||
* 在 master 节点执行 <Badge type="error">此步骤必须执行</Badge>
|
||||
|
||||
```bash
|
||||
kubectl -n kube-system create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/server.crt --from-file=/etc/kubernetes/pki/etcd/server.key
|
||||
|
||||
BIN
install/faq/warning.assets/image-20191108220746427.png
Normal file
BIN
install/faq/warning.assets/image-20191108220746427.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
66
install/faq/warning.md
Normal file
66
install/faq/warning.md
Normal file
@ -0,0 +1,66 @@
|
||||
---
|
||||
vssueId: 150
|
||||
description: Kuboard界面上_时常会出现工作负载_Deployment_StatefulSet_DaemonSet_等为红色_且带一个红色E图标的情况_本文解释了该图标的含义以及如何清理
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes 管理界面, Kuboard, K8S管理界面
|
||||
---
|
||||
|
||||
# 错误提示
|
||||
|
||||
Kuboard中经常会出现如下情况,某一个工作负载(Deployment/StatefulSet/DaemonSet等)显示为红色,且有一个闪烁的红色 `E` 图标。
|
||||
|
||||

|
||||
|
||||
此为 Kuboard 中设计的一个错误提示方式,其具体实现方式是:
|
||||
* 遍历当前的所有事件,对于每一个事件:
|
||||
* 如果事件类型为 Normal,则跳过
|
||||
* 如果事件类型为 Warining,则对比该事件源对象(产生该事件的Kubernetes 对象)的名字(假设为 event_source_name)与当前工作负载(假设为work_load_name)的名字:
|
||||
* 如果 event_source_name.indexOf(work_load_name) === 0,则该工作负载显示错误提示
|
||||
* 如果 event_source_name.indexOf(work_load_name) !== 0,则跳过
|
||||
|
||||
使用此方式,我们可以快速查看到名称空间中存在问题的工作负载,并迅速对其进行诊断。
|
||||
|
||||
但是这种告警方式并不是完美的,具体来说,会发生如下情况:
|
||||
|
||||
## 实际正常,但提示错误
|
||||
|
||||
实际上,您的工作负载(Deployment、StatefulSet、DaemonSet等)已经正常工作,但是仍然提示有错误信息。此种情况通常发生在类似如下的场景中:
|
||||
|
||||
### 场景一:
|
||||
|
||||
* 创建Deployment,但未创建所需要的PVC
|
||||
* 此时该Deployment的Pod不能调度,并伴随着 PVC 未绑定的错误事件
|
||||
* 创建PVC,Pod成功调度,Deployment正常工作
|
||||
* 此时,虽然Pod已经正常,但是该Pod原来的错误事件仍然存在,因此Kuboard仍然会显示此错误提示
|
||||
|
||||
### 场景二:
|
||||
|
||||
* 创建Deployment,但该Deployment依赖的数据库未启动
|
||||
* 此时该Deployment的Pod将Crash
|
||||
* 启动数据库
|
||||
* 删除Deployment原有的Pod
|
||||
* 此时Deployment创建新Pod以维持所需要的副本数
|
||||
* 新的Pod正常工作
|
||||
* 此时,虽然与错误事件关联的Pod已经删除,但是该Pod产生的错误事件仍然存在,且与Deployment的名称匹配,因此,Kuboard仍将显示错误标志
|
||||
|
||||
### 修正办法
|
||||
|
||||
* 在名称空间左上角点击 **事件** 按钮,将进入事件列表查看界面
|
||||
* 将已经失效的错误事件删除
|
||||
> 点击事件的图标,可删除事件
|
||||
|
||||
## 界面卡顿
|
||||
|
||||
当名称空间中工作负载的数量,以及集群中错误事件的数量特别多时,在进入名称空间界面时可能出现卡顿,但是只要成功进入,一切工作都是正常的。
|
||||
|
||||
卡顿的原因是,Kuboard在循环遍历事件与工作负载的匹配情况,通常只有在在工作负载数量和事件数量都特别多时,才会出现卡顿,在 1.0.4 版本中优化之后,速度已经得到了非常可观的提升。
|
||||
|
||||
如果您仍然碰到了卡顿的现象,可以尝试:
|
||||
* 删除事件
|
||||
|
||||
执行命令 `kubectl delete events --all-namespaces`。由于 Kubernetes 的控制器模式,Kubernetes会不断尝试失败的操作,因此,删除事件通常是安全的,过一阵子,原有的错误事件又会重复出现
|
||||
|
||||
* 向Kuboard反馈此问题
|
||||
|
||||
本文页尾有Kuboard支持社群的入群方式,直接联系群主即可
|
||||
77
learning/k8s-practice/lnmp/wordpress.md
Normal file
77
learning/k8s-practice/lnmp/wordpress.md
Normal file
@ -0,0 +1,77 @@
|
||||
---
|
||||
# vssueId: 67
|
||||
layout: LearningLayout
|
||||
lessAds: true
|
||||
description: Kubernetes教程_本文描述了如何在K8S上部署一个WordPress和MySQL应用_并将数据存储在PersistentVolume中
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,K8S PHP,K8S培训,K8S教程
|
||||
---
|
||||
|
||||
# 在K8S上部署WordPress和MySQL
|
||||
|
||||
<AdSenseTitle>
|
||||
|
||||
> 参考文档: [Example: Deploying WordPress and MySQL with Persistent Volumes](https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/)
|
||||
|
||||
本文描述了如何在K8S上部署一个WordPress和MySQL应用,本文中WordPress和MySQL都使用 PersistentVolume 和 PersistentVolumeClaim 存储数据。
|
||||
|
||||
[PersistentVolume](/learning/k8s-intermediate/persistent/pv.html) 是集群中可用的一片存储空间,通常由集群管理员手工提供,或者由 Kubernetes 使用 [StorageClass](/learning/k8s-intermediate/persistent/storage-class.html) 自动提供。
|
||||
|
||||
[PersistentVolumeClaim](/learning/k8s-intermediate/persistent/pv.html#存储卷和存储卷声明的关系) 代表了用户(应用程序)对存储空间的需求,此需求可由 PersistentVolume 满足。
|
||||
|
||||
PersistentVolume 和 PersistentVolumeClaim 都是独立于 Pod 的生命周期,可用于在 Pod 重启、重新调度、甚至删除之后保存数据。
|
||||
|
||||
::: danger 警告
|
||||
本文中的例子不适合用于生产环境使用,因为例子中使用了一个 WordPress 实例和一个 MySQL 实例。可以考虑使用 [WordPress Helm Chart](https://github.com/kubernetes/charts/tree/master/stable/wordpress) 在生产环境中部署 WordPress。
|
||||
:::
|
||||
|
||||
[[TOC]]
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
## 主要步骤
|
||||
|
||||
* 创建 PersistentVolumeClaim 和 PersistentVolume
|
||||
* 创建一个 `kustomization.yaml`,其中包括:
|
||||
* 一个 Secret generator
|
||||
* MySQL配置资源
|
||||
* WordPress配置资源
|
||||
* 执行 `kubectl apply -k ./` 将 kustomization 目录应用到集群
|
||||
* 执行清理
|
||||
|
||||
## 前提条件
|
||||
|
||||
* 您必须有一个K8S集群
|
||||
* 可参考 [安装Kubernetes单Master节点集群](/install/install-k8s.html)
|
||||
* kubectl 版本不低于 1.14,可参考 [安装kubectl](/install/install-kubectl.html)
|
||||
* 在执行 kubectl 命令的机器上任意位置创建一个空白目录用于本例子的执行。本文假设后续所有命令的当前目录都是此时创建的这个目录。
|
||||
|
||||
## 创建PersistentVolumeClaim和PersistentVolume
|
||||
|
||||
MySQL 和 WordPress 都需要一个 PersistentVolume 存储数据。他们的 PersistentVolumeClaim 将被在部署应用时创建。
|
||||
|
||||
## 创建kustomization.yaml
|
||||
|
||||
### 添加一个Secret generator
|
||||
|
||||
[Secret](/learning/k8s-intermediate/config/secrets/) 对象可以存储敏感信息,例如 password 或者 key。自 Kubernetes 1.14 开始,`kubectl` 支持使用 kustomization 文件管理对象。可以在 `kustomization.yaml` 文件中定义一个 generator 以创建 Secret 对象。
|
||||
|
||||
执行下面的命令,创建 `kustomization.yaml` 文件,该文件中包含一个 Secret generator。
|
||||
> 您需要将 `YOUR_PASSWORD` 替换成您自己想要使用的密码
|
||||
|
||||
``` sh
|
||||
cat <<EOF >./kustomization.yaml
|
||||
secretGenerator:
|
||||
- name: mysql-pass
|
||||
literals:
|
||||
- password=YOUR_PASSWORD
|
||||
EOF
|
||||
```
|
||||
|
||||
|
||||
## 为MySQL和WordPress添加配置信息
|
||||
|
||||
## 应用和验证
|
||||
|
||||
## 清理
|
||||
@ -12,6 +12,7 @@ Kuboard v1.0.x 的更新说明
|
||||
|
||||
|
||||
|
||||
* 清理事件
|
||||
* EndPoint
|
||||
* 导入工作负载时,如果存储类没有 annotations,不应该报错
|
||||
* 表单校验:数据卷名不能带小数点
|
||||
@ -19,6 +20,10 @@ Kuboard v1.0.x 的更新说明
|
||||
* 工作负载编辑器 --> 容器组 --> 容忍 -- 正在开发
|
||||
* Limit Range
|
||||
|
||||
|
||||
* 可以在这里加一个自动部署的按钮,点击按钮显示部署秘钥。shell 脚本可以加一句curl http://kubord.com?秘钥+版本。镜像推送到仓库之后,shell脚本加一句这个curl就可以完成k8s自动集成了
|
||||
*
|
||||
|
||||
* 容器组列表,筛选结果为空时,提示筛选 “其他”
|
||||
|
||||
* https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
|
||||
|
||||
Reference in New Issue
Block a user