faq
This commit is contained in:
@ -117,6 +117,13 @@ module.exports = {
|
||||
'install-dashboard-upgrade'
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '常见问题',
|
||||
collapsable: false,
|
||||
children: [
|
||||
'faq/timeout'
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
'/guide/': [
|
||||
|
||||
BIN
install/faq/timeout.assets/image-20190803165814924.png
Normal file
BIN
install/faq/timeout.assets/image-20190803165814924.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 132 KiB |
66
install/faq/timeout.md
Normal file
66
install/faq/timeout.md
Normal file
@ -0,0 +1,66 @@
|
||||
# 输入 Token 后提示 timeout
|
||||
|
||||
## 错误描述
|
||||
|
||||
如下图所示,显示错误信息:
|
||||
|
||||
> Token校验失败:Error: timeout of 10000ms exceeded
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 发生此错误的原因是
|
||||
|
||||
Kuboard 不能访问 Kubernetes apiserver。
|
||||
|
||||
通常出现此错误时,[Kubernetes Dashboard](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/) 也不能正常工作。
|
||||
|
||||
## 此问题产生的根源
|
||||
|
||||
多位反馈此问题的网友都是在网上不同的地方找到了不同形式的 Kubernetes 集群安装文档,并依照文档的描述安装集群。他们都缺少如下几个步骤中的一个或多个:
|
||||
|
||||
|
||||
|
||||
**关闭 防火墙、SeLinux、swap**
|
||||
|
||||
``` sh
|
||||
# 在 master 节点和 worker 节点都要执行
|
||||
systemctl stop firewalld
|
||||
systemctl disable firewalld
|
||||
|
||||
setenforce 0
|
||||
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
|
||||
|
||||
swapoff -a
|
||||
yes | cp /etc/fstab /etc/fstab_bak
|
||||
cat /etc/fstab_bak |grep -v swap > /etc/fstab
|
||||
```
|
||||
|
||||
**修改 /etc/sysctl.conf**
|
||||
|
||||
``` sh
|
||||
# 在 master 节点和 worker 节点都要执行
|
||||
vim /etc/sysctl.conf
|
||||
```
|
||||
|
||||
向其中添加
|
||||
|
||||
```
|
||||
net.ipv4.ip_forward = 1
|
||||
net.bridge.bridge-nf-call-ip6tables = 1
|
||||
net.bridge.bridge-nf-call-iptables = 1
|
||||
```
|
||||
|
||||
执行命令以应用
|
||||
|
||||
```sh
|
||||
# 在 master 节点和 worker 节点都要执行
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
## 解决办法
|
||||
|
||||
* 在每一个节点上(包括Master、Worker)补充执行上述步骤,然后重新启动节点机器。
|
||||
* 或者按照 [安装 Kubernetes 单Master节点](install) 的描述重新安装集群
|
||||
|
||||
@ -9,10 +9,6 @@
|
||||
* 初学者, 请参考 [安装 Kubernetes 单Master节点](install-k8s.html)
|
||||
* 用于生产,请参考 [安装 Kubernetes 高可用](install-kubernetes.html)
|
||||
|
||||
碰到问题? **在线提问**
|
||||
|
||||

|
||||
|
||||
## 兼容性
|
||||
|
||||
|
||||
@ -173,11 +169,18 @@ kubectl port-forward service/kuboard 8080:80 -n kube-system
|
||||
|
||||
|
||||
::: tip
|
||||
需要您先完成 [从客户端电脑远程管理 Kubernetes](install-kubectl) 的配置
|
||||
需要您先完成 [从客户端电脑远程管理 Kubernetes](install-kubectl.html) 的配置
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
::: warning
|
||||
* 如果不能访问 Kuboard,请参考 [常见问题](faq/timeout.html)
|
||||
|
||||
* 如果仍然不能解决,请到 QQ 群提问
|
||||
|
||||

|
||||
:::
|
||||
|
||||
**下一步**
|
||||
|
||||
|
||||
@ -44,7 +44,6 @@ management:
|
||||
eureka:
|
||||
instance:
|
||||
preferIpAddress: true
|
||||
hostname: ${HOSTNAME}
|
||||
client:
|
||||
register-with-eureka: false
|
||||
fetch-registry: false
|
||||
@ -55,11 +54,7 @@ eureka:
|
||||
enable-self-preservation: false
|
||||
```
|
||||
|
||||
该项目中有两个值取自环境变量:
|
||||
|
||||
* HOSTNAME
|
||||
|
||||
Kubernetes 自动配置,如前所述,实际运行时取值为 cloud-eureka-0,cloud-eureka-1,cloud-eureka-2
|
||||
该项目中有一个值取自环境变量:
|
||||
|
||||
* CLOUD_EUREKA_DEFAULT_ZONE 这个参数必须通过环境变量进行配置
|
||||
|
||||
@ -69,7 +64,7 @@ eureka:
|
||||
|
||||
因为各微服务也需要用到 CLOUD_EUREKA_DEFAULT_ZONE 这个参数(请参考 部署 svc-example 章节),所以建议将该参数配置在 Kubernetes 的 ConfigMap 中最为便捷。
|
||||
|
||||
|
||||
文件中没有配置 `eureka.instance.hostname`,该参数的默认取值通过 java.net.InetAddress 查找机器的 hostname。如前所示,当我们使用 StatefulSet 部署 eureka 时,hostname 为 cloud-eureka-0 / cloud-eureka-1 / cloud-eureka-2
|
||||
|
||||
**容器 Command 参数**
|
||||
|
||||
|
||||
@ -10,11 +10,12 @@
|
||||
|
||||
**部署类型**
|
||||
|
||||
关于 MySQL 数据库的部署,Kuboard 建议的做法如下:
|
||||
* 在开发环境、测试环境使用 Kuboard 部署一个副本数为 1 的 StatefulSet,以便可以快速复制 开发环境、测试环境
|
||||
* 在准上线环境和生产环境,使用 IaaS 服务商提供的 RDS 服务,原因是:
|
||||
关于 MySQL 数据库的部署,建议的做法如下:
|
||||
* 在开发环境、测试环境使用 Kuboard 部署一个副本数为 1 的 Deployment,以便可以快速复制 开发环境、测试环境
|
||||
* 在准上线环境和生产环境,使用 IaaS 服务商提供的 RDS 服务,或者自建 MySQL 主从集群,原因是:
|
||||
* 直接将 MySQL 部署到 Kubernetes 虽然简便,但是数据库的运维仍然有大量的事情需要考虑,例如数据的备份、恢复、迁移等
|
||||
* Kubernetes 管理无状态服务已经非常成熟,在管理有状态的容器例如 MySQL 时,仍然需要等待更好的解决方案。当下这方面最新的进展是 [Kubernetes Operator](http://dockone.io/article/8769)
|
||||
* Kubernetes 管理无状态服务已经非常成熟,在管理有状态的容器例如 MySQL 时,仍然需要等待更好的解决方案。目前这方面最新的进展是 [Kubernetes Operator](http://dockone.io/article/8769)
|
||||
* 如果您想尝试部署 MySQL 集群,目前还可以参考 [Run a Replicated Stateful Application](https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/)
|
||||
|
||||
|
||||
**环境变量**
|
||||
@ -42,7 +43,9 @@ ENV eureka.management.port=9104
|
||||
ENV eureka.serviceUrl.default=http://monitor-eureka:9000/eureka
|
||||
```
|
||||
|
||||
Dockerfile 中定义了环境变量 ENABLE_EUREKA_CLIENT=TRUE,这个环境变量用于 Prometheus [监控套件](/guide/monitor/) 的服务发现。在不启用监控套件的情况下,应该将 ENABLE_EUREKA_CLIENT 这个环境变量设置为 FALSE。
|
||||
Dockerfile 中定义了环境变量 ENABLE_EUREKA_CLIENT=TRUE,这个环境变量用于 Prometheus [监控套件](/guide/monitor/) 的服务发现。在不启用监控套件的情况下,应该将 ***ENABLE_EUREKA_CLIENT*** 这个环境变量设置为 FALSE。
|
||||
|
||||
容器镜像 eipwork/mysql:5.7.26-1.1.11 基于 [mysql/mysql-server:5.7.26](https://hub.docker.com/r/mysql/mysql-server) 制作。参考文档 [More Topics on Deploying MySQL Server with Docker](https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-more-topics.html#docker-environment-variables),通过设置环境变量 ***MYSQL_ROOT_PASSWORD*** ,可指定 MySQL 的root 用户密码
|
||||
|
||||
::: tip
|
||||
可以在部署时覆盖环境变量的值,无需修改 Dockerfile。
|
||||
@ -50,11 +53,22 @@ Dockerfile 中定义了环境变量 ENABLE_EUREKA_CLIENT=TRUE,这个环境变
|
||||
|
||||
**容器 Command 参数**
|
||||
|
||||
容器镜像 eipwork/mysql:5.7.26-1.1.11 的 Dockerfile 指定了容器的启动方式,此处无需为容器额外设置 Command 参数。
|
||||
容器镜像 eipwork/mysql:5.7.26-1.1.11 的 [Dockerfile](https://github.com/eip-work/eip-docker-library/blob/master/mysql/Dockerfile) 指定了容器的启动方式,此处无需为容器额外设置 Command 参数。
|
||||
|
||||
**数据卷**
|
||||
|
||||
参考文档 [More Topics on Deploying MySQL Server with Docker](https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-more-topics.html#docker-persisting-data-configuration),我们需要将容器内路径 `/var/lib/mysql` 映射到数据卷,以便数据能够持久化。
|
||||
|
||||
|
||||
**访问方式及互联网入口**
|
||||
|
||||
通常在两种情况下需要访问数据库:
|
||||
* 微服务程序中访问数据库
|
||||
* 开发者/运维人员通过 Navicat 等数据库工具访问数据库
|
||||
|
||||
为了同时支持这两种使用场景,建议为数据库配置 VPC内访问方式 (NodePort Service)
|
||||
|
||||
与数据库的通信为 socket,不能为其配置互联网入口 Ingress
|
||||
|
||||
|
||||
## 部署 db-example
|
||||
|
||||
@ -52,8 +52,6 @@ Kuboard 为 Kubernetes 初学者设计了如下学习路径:
|
||||
|
||||
* **Kubernetes 进阶**
|
||||
* [十分钟带你理解Kubernetes核心概念](k8s-core-concepts.html)
|
||||
* 集成 DevOps
|
||||
* 安装高可用 Kubernetes 集群
|
||||
|
||||
### Kubernetes 有经验者
|
||||
|
||||
@ -76,7 +74,7 @@ Kuboard 为您的这些痛苦提供了极佳的解决方案,请立刻开始:
|
||||
|
||||
### Kubernetes + Spring Cloud
|
||||
|
||||
使用 Kuboard 在 Kubernetes 上部署 Spring Cloud 微服务:
|
||||
在 Kubernetes 上部署 Spring Cloud 微服务:
|
||||
|
||||
* [概述](/micro-service/spring-cloud/index.html)
|
||||
* [部署服务注册中心]
|
||||
|
||||
Reference in New Issue
Block a user