diff --git a/.vuepress/public/install-script/nginx-ingress.yaml b/.vuepress/public/install-script/nginx-ingress.yaml
new file mode 100644
index 0000000..8b1496c
--- /dev/null
+++ b/.vuepress/public/install-script/nginx-ingress.yaml
@@ -0,0 +1,168 @@
+# 如果打算用于生产环境,请参考 https://github.com/nginxinc/kubernetes-ingress/blob/v1.5.3/docs/installation.md 并根据您自己的情况做进一步定制
+
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: nginx-ingress
+
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: nginx-ingress
+ namespace: nginx-ingress
+
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: default-server-secret
+ namespace: nginx-ingress
+type: Opaque
+data:
+ tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN2akNDQWFZQ0NRREFPRjl0THNhWFhEQU5CZ2txaGtpRzl3MEJBUXNGQURBaE1SOHdIUVlEVlFRRERCWk8KUjBsT1dFbHVaM0psYzNORGIyNTBjbTlzYkdWeU1CNFhEVEU0TURreE1qRTRNRE16TlZvWERUSXpNRGt4TVRFNApNRE16TlZvd0lURWZNQjBHQTFVRUF3d1dUa2RKVGxoSmJtZHlaWE56UTI5dWRISnZiR3hsY2pDQ0FTSXdEUVlKCktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUwvN2hIUEtFWGRMdjNyaUM3QlBrMTNpWkt5eTlyQ08KR2xZUXYyK2EzUDF0azIrS3YwVGF5aGRCbDRrcnNUcTZzZm8vWUk1Y2Vhbkw4WGM3U1pyQkVRYm9EN2REbWs1Qgo4eDZLS2xHWU5IWlg0Rm5UZ0VPaStlM2ptTFFxRlBSY1kzVnNPazFFeUZBL0JnWlJVbkNHZUtGeERSN0tQdGhyCmtqSXVuektURXUyaDU4Tlp0S21ScUJHdDEwcTNRYzhZT3ExM2FnbmovUWRjc0ZYYTJnMjB1K1lYZDdoZ3krZksKWk4vVUkxQUQ0YzZyM1lma1ZWUmVHd1lxQVp1WXN2V0RKbW1GNWRwdEMzN011cDBPRUxVTExSakZJOTZXNXIwSAo1TmdPc25NWFJNV1hYVlpiNWRxT3R0SmRtS3FhZ25TZ1JQQVpQN2MwQjFQU2FqYzZjNGZRVXpNQ0F3RUFBVEFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWpLb2tRdGRPcEsrTzhibWVPc3lySmdJSXJycVFVY2ZOUitjb0hZVUoKdGhrYnhITFMzR3VBTWI5dm15VExPY2xxeC9aYzJPblEwMEJCLzlTb0swcitFZ1U2UlVrRWtWcitTTFA3NTdUWgozZWI4dmdPdEduMS9ienM3bzNBaS9kclkrcUI5Q2k1S3lPc3FHTG1US2xFaUtOYkcyR1ZyTWxjS0ZYQU80YTY3Cklnc1hzYktNbTQwV1U3cG9mcGltU1ZmaXFSdkV5YmN3N0NYODF6cFErUyt1eHRYK2VBZ3V0NHh3VlI5d2IyVXYKelhuZk9HbWhWNThDd1dIQnNKa0kxNXhaa2VUWXdSN0diaEFMSkZUUkk3dkhvQXprTWIzbjAxQjQyWjNrN3RXNQpJUDFmTlpIOFUvOWxiUHNoT21FRFZkdjF5ZytVRVJxbStGSis2R0oxeFJGcGZnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
+ tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdi91RWM4b1JkMHUvZXVJTHNFK1RYZUprckxMMnNJNGFWaEMvYjVyYy9XMlRiNHEvClJOcktGMEdYaVN1eE9ycXgrajlnamx4NXFjdnhkenRKbXNFUkJ1Z1B0ME9hVGtIekhvb3FVWmcwZGxmZ1dkT0EKUTZMNTdlT1l0Q29VOUZ4amRXdzZUVVRJVUQ4R0JsRlNjSVo0b1hFTkhzbysyR3VTTWk2Zk1wTVM3YUhudzFtMApxWkdvRWEzWFNyZEJ6eGc2clhkcUNlUDlCMXl3VmRyYURiUzc1aGQzdUdETDU4cGszOVFqVUFQaHpxdmRoK1JWClZGNGJCaW9CbTVpeTlZTW1hWVhsMm0wTGZzeTZuUTRRdFFzdEdNVWozcGJtdlFmazJBNnljeGRFeFpkZFZsdmwKMm82MjBsMllxcHFDZEtCRThCay90elFIVTlKcU56cHpoOUJUTXdJREFRQUJBb0lCQVFDZklHbXowOHhRVmorNwpLZnZJUXQwQ0YzR2MxNld6eDhVNml4MHg4Mm15d1kxUUNlL3BzWE9LZlRxT1h1SENyUlp5TnUvZ2IvUUQ4bUFOCmxOMjRZTWl0TWRJODg5TEZoTkp3QU5OODJDeTczckM5bzVvUDlkazAvYzRIbjAzSkVYNzZ5QjgzQm9rR1FvYksKMjhMNk0rdHUzUmFqNjd6Vmc2d2szaEhrU0pXSzBwV1YrSjdrUkRWYmhDYUZhNk5nMUZNRWxhTlozVDhhUUtyQgpDUDNDeEFTdjYxWTk5TEI4KzNXWVFIK3NYaTVGM01pYVNBZ1BkQUk3WEh1dXFET1lvMU5PL0JoSGt1aVg2QnRtCnorNTZud2pZMy8yUytSRmNBc3JMTnIwMDJZZi9oY0IraVlDNzVWYmcydVd6WTY3TWdOTGQ5VW9RU3BDRkYrVm4KM0cyUnhybnhBb0dCQU40U3M0ZVlPU2huMVpQQjdhTUZsY0k2RHR2S2ErTGZTTXFyY2pOZjJlSEpZNnhubmxKdgpGenpGL2RiVWVTbWxSekR0WkdlcXZXaHFISy9iTjIyeWJhOU1WMDlRQ0JFTk5jNmtWajJTVHpUWkJVbEx4QzYrCk93Z0wyZHhKendWelU0VC84ajdHalRUN05BZVpFS2FvRHFyRG5BYWkyaW5oZU1JVWZHRXFGKzJyQW9HQkFOMVAKK0tZL0lsS3RWRzRKSklQNzBjUis3RmpyeXJpY05iWCtQVzUvOXFHaWxnY2grZ3l4b25BWlBpd2NpeDN3QVpGdwpaZC96ZFB2aTBkWEppc1BSZjRMazg5b2pCUmpiRmRmc2l5UmJYbyt3TFU4NUhRU2NGMnN5aUFPaTVBRHdVU0FkCm45YWFweUNweEFkREtERHdObit3ZFhtaTZ0OHRpSFRkK3RoVDhkaVpBb0dCQUt6Wis1bG9OOTBtYlF4VVh5YUwKMjFSUm9tMGJjcndsTmVCaWNFSmlzaEhYa2xpSVVxZ3hSZklNM2hhUVRUcklKZENFaHFsV01aV0xPb2I2NTNyZgo3aFlMSXM1ZUtka3o0aFRVdnpldm9TMHVXcm9CV2xOVHlGanIrSWhKZnZUc0hpOGdsU3FkbXgySkJhZUFVWUNXCndNdlQ4NmNLclNyNkQrZG8wS05FZzFsL0FvR0FlMkFVdHVFbFNqLzBmRzgrV3hHc1RFV1JqclRNUzRSUjhRWXQKeXdjdFA4aDZxTGxKUTRCWGxQU05rMXZLTmtOUkxIb2pZT2pCQTViYjhibXNVU1BlV09NNENoaFJ4QnlHbmR2eAphYkJDRkFwY0IvbEg4d1R0alVZYlN5T294ZGt5OEp0ek90ajJhS0FiZHd6NlArWDZDODhjZmxYVFo5MWpYL3RMCjF3TmRKS2tDZ1lCbyt0UzB5TzJ2SWFmK2UwSkN5TGhzVDQ5cTN3Zis2QWVqWGx2WDJ1VnRYejN5QTZnbXo5aCsKcDNlK2JMRUxwb3B0WFhNdUFRR0xhUkcrYlNNcjR5dERYbE5ZSndUeThXczNKY3dlSTdqZVp2b0ZpbmNvVlVIMwphdmxoTUVCRGYxSjltSDB5cDBwWUNaS2ROdHNvZEZtQktzVEtQMjJhTmtsVVhCS3gyZzR6cFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
+
+---
+kind: ConfigMap
+apiVersion: v1
+metadata:
+ name: nginx-config
+ namespace: nginx-ingress
+data:
+ server-names-hash-bucket-size: "1024"
+
+
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+ name: nginx-ingress
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - services
+ - endpoints
+ verbs:
+ - get
+ - list
+ - watch
+- apiGroups:
+ - ""
+ resources:
+ - secrets
+ verbs:
+ - get
+ - list
+ - watch
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - get
+ - list
+ - watch
+ - update
+ - create
+- apiGroups:
+ - ""
+ resources:
+ - pods
+ verbs:
+ - list
+- apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - patch
+- apiGroups:
+ - extensions
+ resources:
+ - ingresses
+ verbs:
+ - list
+ - watch
+ - get
+- apiGroups:
+ - "extensions"
+ resources:
+ - ingresses/status
+ verbs:
+ - update
+- apiGroups:
+ - k8s.nginx.org
+ resources:
+ - virtualservers
+ - virtualserverroutes
+ verbs:
+ - list
+ - watch
+ - get
+
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+ name: nginx-ingress
+subjects:
+- kind: ServiceAccount
+ name: nginx-ingress
+ namespace: nginx-ingress
+roleRef:
+ kind: ClusterRole
+ name: nginx-ingress
+ apiGroup: rbac.authorization.k8s.io
+
+---
+apiVersion: extensions/v1beta1
+kind: DaemonSet
+metadata:
+ name: nginx-ingress
+ namespace: nginx-ingress
+ annotations:
+ prometheus.io/scrape: "true"
+ prometheus.io/port: "9113"
+spec:
+ selector:
+ matchLabels:
+ app: nginx-ingress
+ template:
+ metadata:
+ labels:
+ app: nginx-ingress
+ spec:
+ serviceAccountName: nginx-ingress
+ containers:
+ - image: nginx/nginx-ingress:1.5.3
+ name: nginx-ingress
+ ports:
+ - name: http
+ containerPort: 80
+ hostPort: 80
+ - name: https
+ containerPort: 443
+ hostPort: 443
+ - name: prometheus
+ containerPort: 9113
+ env:
+ - name: POD_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ args:
+ - -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
+ - -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
+ #- -v=3 # Enables extensive logging. Useful for troubleshooting.
+ #- -report-ingress-status
+ #- -external-service=nginx-ingress
+ #- -enable-leader-election
+ - -enable-prometheus-metrics
+ #- -enable-custom-resources
diff --git a/install/install-k8s.md b/install/install-k8s.md
index 3923a61..4698dbe 100644
--- a/install/install-k8s.md
+++ b/install/install-k8s.md
@@ -10,7 +10,7 @@
* **持续不断地更新和完善**
* 始终有最新的 Kubernetes 稳定版安装文档,当前版本 v1.15.2
- * 当前已更新了 31 次 , [查看更新历史](https://github.com/eip-work/kuboard-press/commits/master/install/install-k8s.md)
+ * 当前已更新了 32 次 , [查看更新历史](https://github.com/eip-work/kuboard-press/commits/master/install/install-k8s.md)

@@ -26,19 +26,11 @@
* 3台 **2核4G** 的ECS(突发性能实例 t5 ecs.t5-c1m2.large或同等配置,单台约 0.4元/小时,停机时不收费)
* **Cent OS 7.6**
-**操作系统兼容性**
-
-| CentOS 版本 | 本文档是否兼容 | 备注 |
-| ----------- | --------------------------------------- | ----------------------------------- |
-| 7.6 | 😄 | 已验证 |
-| 7.5 | 😄 | 已验证 |
-| 7.4 | 🤔 | 待验证 |
-| 7.3 | 🤔 | 待验证 |
-| 7.2 | 😞 | 已证实会出现 kubelet 无法启动的问题 |
-
**安装后的软件版本为**
* Kubernetes v1.15.2
+ * calico 3.8
+ * nginx-ingress 1.5.3
* Docker 18.09.7
> 如果要安装 Kubernetes 历史版本,请参考:
@@ -59,7 +51,23 @@
:::
+## 检查 centos 版本
+``` sh
+# 在 master 节点和 worker 节点都要执行
+
+cat /etc/redhat-release
+```
+
+**操作系统兼容性**
+
+| CentOS 版本 | 本文档是否兼容 | 备注 |
+| ----------- | --------------------------------------- | ----------------------------------- |
+| 7.6 | 😄 | 已验证 |
+| 7.5 | 😄 | 已验证 |
+| 7.4 | 🤔 | 待验证 |
+| 7.3 | 🤔 | 待验证 |
+| 7.2 | 😞 | 已证实会出现 kubelet 无法启动的问题 |
## 安装 docker / kubelet
@@ -241,15 +249,31 @@ kubectl delete node demo-worker-x-x
>
> 本文中使用如下部署方式:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#using-a-self-provisioned-edge
>
-> kubernetes支持多种Ingress Controllers,本文推荐使用 https://github.com/nginxinc/kubernetes-ingress
+> kubernetes支持多种Ingress Controllers (traefic / Kong / Istio / Nginx 等),本文推荐使用 https://github.com/nginxinc/kubernetes-ingress
-**在 demo-master-a-1 上执行**
+
+:::: tabs type:border-card
+
+::: tab 快速安装 lazy
+
+**在 master 节点上执行**
``` sh
# 只在 master 节点执行
-kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/nginx-ingress.yaml
+kubectl apply -f https://kuboard.cn/install-script/nginx-ingress.yaml
```
+:::
+
+::: tab YAML文件 lazy
+
+<<< @/.vuepress/public/install-script/nginx-ingress.yaml
+
+:::
+
+::::
+
+
**配置域名解析**
将域名 *.demo.yourdomain.com 解析到 demo-worker-a-2 的 IP 地址 z.z.z.z (也可以是 demo-worker-a-1 的地址 y.y.y.y)
@@ -267,7 +291,7 @@ kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-reposito
:::
::: warning
-如果您打算将 Kubernetes 用于生产环境,请参考此文档 [Installing Ingress Controller](https://github.com/nginxinc/kubernetes-ingress/blob/v1.5.2/docs/installation.md),完善 Ingress 的配置
+如果您打算将 Kubernetes 用于生产环境,请参考此文档 [Installing Ingress Controller](https://github.com/nginxinc/kubernetes-ingress/blob/v1.5.3/docs/installation.md),完善 Ingress 的配置
:::
@@ -284,5 +308,7 @@ kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-reposito
::: tip
-* Kubernetes 初学者,[点击这里获取 Kubernetes 学习路径](/overview/)
+* Kubernetes 初学者,[点击这里获取 Kubernetes 学习路径](/overview/#kubernetes-%E5%88%9D%E5%AD%A6%E8%80%85)
:::
+
+