mirror of https://github.com/easzlab/kubeasz.git
部分文档更新优化
parent
cf1822f148
commit
44700b883b
|
@ -49,7 +49,7 @@
|
|||
<td><a href="docs/guide/metrics-server.md">metrics-server</a></td>
|
||||
<td><a href="docs/guide/prometheus.md">prometheus</a></td>
|
||||
<td><a href="docs/guide/efk.md">efk</a></td>
|
||||
<td><a href="docs/guide/metallb.md">metallb</a></td>
|
||||
<td><a href="docs/guide/ingress.md">ingress</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>集群管理</strong><a href="docs/op/op-index.md">+</a></td>
|
||||
|
|
|
@ -60,6 +60,8 @@ kubectl logs kubernetes-dashboard-7c74685c48-9qdpn -n kube-system
|
|||
+ 第一步通过api-server本身安全认证流程,与之前[1.6.3版本](dashboard.1.6.3.md)相同,这里不再赘述
|
||||
+ 第二步通过dashboard自带的登陆流程,使用`Kubeconfig` `Token`等方式登陆
|
||||
|
||||
**注意:**如果启用 ingress tls的话,可以参考[配置ingress规则访问dashboard](https://github.com/gjmzj/kubeasz/blob/master/docs/guide/ingress-tls.md#5%E9%AA%8C%E8%AF%81-https-%E8%AE%BF%E9%97%AE)
|
||||
|
||||
#### 演示使用 `https://NodeIP:NodePort` 方式访问 dashboard,支持两种登录方式:Kubeconfig、令牌(Token)
|
||||
|
||||
- 令牌登录(admin)
|
||||
|
|
|
@ -68,6 +68,39 @@ https://hello.test.com:23457
|
|||
|
||||
如果你已经配置了[转发 ingress nodePort](../op/loadballance_ingress_nodeport.md),那么增加对应 hosts记录后,可以验证访问 `https://hello.test.com`
|
||||
|
||||
## 配置 dashboard ingress
|
||||
|
||||
前提1:k8s 集群的dashboard 已安装
|
||||
|
||||
```
|
||||
$ kubectl get svc -n kube-system | grep dashboard
|
||||
kubernetes-dashboard NodePort 10.68.211.168 <none> 443:39308/TCP 3d11h
|
||||
```
|
||||
前提2:`/etc/ansible/manifests/ingress/traefik/tls/traefik-controller.yaml`的配置文件`traefik.toml`开启了`insecureSkipVerify = true`
|
||||
|
||||
配置 dashboard ingress:`kubectl apply -f /etc/ansible/manifests/ingress/traefik/tls/k8s-dashboard.ing.yaml` 内容如下:
|
||||
|
||||
```
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: kubernetes-dashboard
|
||||
namespace: kube-system
|
||||
annotations:
|
||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
||||
spec:
|
||||
rules:
|
||||
- host: dashboard.test.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: kubernetes-dashboard
|
||||
servicePort: 443
|
||||
```
|
||||
- 注意annotations 配置了 http 跳转 https 功能
|
||||
- 注意后端服务是443端口
|
||||
|
||||
## 参考
|
||||
|
||||
- [Add a TLS Certificate to the Ingress](https://docs.traefik.io/user-guide/kubernetes/#add-a-tls-certificate-to-the-ingress)
|
||||
|
|
|
@ -1,20 +1,25 @@
|
|||
## Ingress简介
|
||||
|
||||
ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。ingress相当于nginx反向代理服务器,它包括的规则定义就是URL的路由信息;它的实现需要部署`Ingress controller`(比如 [traefik](https://github.com/containous/traefik) [ingress-nginx](https://github.com/kubernetes/ingress-nginx) 等),`Ingress controller`通过apiserver监听ingress和service的变化,并根据规则配置负载均衡并提供访问入口,达到服务发现的作用。
|
||||
ingress就是从外部访问k8s集群的入口,将用户的URL请求转发到不同的service上。ingress相当于nginx反向代理服务器,它包括的规则定义就是URL的路由信息;它的实现需要部署`Ingress controller`(比如 [traefik](https://github.com/containous/traefik) [ingress-nginx](https://github.com/kubernetes/ingress-nginx) 等),`Ingress controller`通过apiserver监听ingress和service的变化,并根据规则配置负载均衡并提供访问入口,达到服务发现的作用。
|
||||
|
||||
+ 未配置ingress:
|
||||
- 未配置ingress:
|
||||
|
||||
集群外部 -> NodePort -> K8S Service
|
||||
|
||||
+ 配置ingress:
|
||||
- 配置ingress:
|
||||
|
||||
集群外部 -> Ingress -> K8S Service
|
||||
|
||||
+ 注意:ingress 本身也需要部署`Ingress controller`时暴露`NodePort`让外部访问;如果你集群支持,可以方便地使用LoadBalancer地址暴露ingress服务
|
||||
- **注意:ingress 本身也需要部署`Ingress controller`时使用以下几种方式让外部访问**
|
||||
- 使用`NodePort`方式
|
||||
- 使用`hostPort`方式
|
||||
- 使用LoadBalancer地址方式
|
||||
|
||||
- 以下讲解基于`Traefik`,如果想要了解`ingress-nginx`的原理与实践,推荐阅读博客[烂泥行天下](https://www.ilanni.com/?p=14501)的相关文章
|
||||
|
||||
### 部署 Traefik
|
||||
|
||||
Traefik 提供了一个简单好用 `Ingress controller`,下文基于它讲解一个简单的 ingress部署和测试例子。请查看yaml配置 [traefik-ingress.yaml](../../manifests/ingress/traefik/traefik-ingress.yaml),参考[traefik 官方k8s例子](https://github.com/containous/traefik/tree/master/examples/k8s)
|
||||
Traefik 提供了一个简单好用 `Ingress controller`,下文侧重讲解 ingress部署和测试例子。请查看yaml配置 [traefik-ingress.yaml](../../manifests/ingress/traefik/traefik-ingress.yaml),参考[traefik 官方k8s例子](https://github.com/containous/traefik/tree/master/examples/k8s)
|
||||
|
||||
#### 安装 traefik ingress-controller
|
||||
|
||||
|
@ -69,9 +74,12 @@ spec:
|
|||
serviceName: test-hello
|
||||
servicePort: 80
|
||||
```
|
||||
+ 集群内部尝试访问: `curl -H Host:hello.test.com 10.68.69.170(traefik-ingress-service的服务地址)` 能够看到欢迎页面 `Welcome to nginx!`;在集群外部尝试访问(假定集群一个NodeIP为 192.168.1.1): `curl -H Host:hello.test.com 192.168.1.1:23456`,也能够看到欢迎页面 `Welcome to nginx!`,说明ingress测试成功
|
||||
+ 集群内部尝试访问: `curl -H Host:hello.test.com 10.68.69.170(traefik-ingress-service的服务地址)` 能够看到欢迎页面 `Welcome to nginx!`;
|
||||
+ 在集群外部尝试访问(假定集群一个NodeIP为 192.168.1.1): `curl -H Host:hello.test.com 192.168.1.1:23456`,也能够看到欢迎页面 `Welcome to nginx!`,说明ingress测试成功
|
||||
|
||||
+ 下面我们为traefik WEB管理页面也创建一个ingress, `kubectl create -f /etc/ansible/manifests/ingress/traefik/traefik-ui.ing.yaml`
|
||||
#### 为 traefik WEB 管理页面创建 ingress 规则
|
||||
|
||||
`kubectl create -f /etc/ansible/manifests/ingress/traefik/traefik-ui.ing.yaml`
|
||||
|
||||
``` bash
|
||||
# traefik-ui.ing.yaml内容
|
||||
|
@ -91,9 +99,10 @@ spec:
|
|||
serviceName: traefik-ingress-service
|
||||
servicePort: 8080
|
||||
```
|
||||
这样在集群外部可以使用 `curl -H Host:traefik-ui.test.com 192.168.1.1:23456` 尝试访问WEB管理页面,返回 `<a href="/dashboard/">Found</a>.`说明 traefik-ui的ingress配置生效了。
|
||||
|
||||
在客户端主机也可以通过修改本机 `hosts` 文件,如上例子,增加两条记录:
|
||||
+ 在集群外部可以使用 `curl -H Host:traefik-ui.test.com 192.168.1.1:23456` 尝试访问WEB管理页面,返回 `<a href="/dashboard/">Found</a>.`说明 traefik-ui的ingress配置生效了。
|
||||
|
||||
+ 在客户端主机也可以通过修改本机 `hosts` 文件,如上例子,增加两条记录:
|
||||
|
||||
``` text
|
||||
192.168.1.1 hello.test.com
|
||||
|
@ -122,8 +131,7 @@ kube-system traefik-ingress-service LoadBalancer 10.68.163.243 192.168.1
|
|||
|
||||
### 可选2: 部署`ingress-service`的负载均衡
|
||||
|
||||
- 利用 nginx/haproxy 等集群,可以做代理转发以去掉 `23456`这个端口,如下步骤。
|
||||
如果你的集群根据本项目部署了高可用方案,那么可以利用`LB` 节点haproxy 来做,当然如果生产环境K8S应用已经部署非常多,建议还是使用独立的 `nginx/haproxy`集群。
|
||||
- 利用 nginx/haproxy 等集群,可以做代理转发以去掉 `23456`这个端口。如果你的集群根据本项目部署了高可用方案,那么可以利用`LB` 节点haproxy 来做,当然如果生产环境K8S应用已经部署非常多,建议还是使用独立的 `nginx/haproxy`集群。
|
||||
|
||||
具体参考[配置转发 ingress nodePort](../op/loadballance_ingress_nodeport.md),如上配置访问集群`MASTER_IP`的`80`端口时,由haproxy代理转发到实际的node节点暴露的nodePort端口上了。这时可以修改客户端本机 `hosts`文件如下:(假定 MASTER_IP=192.168.1.10)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
集群升级存在一定风险,请谨慎操作。
|
||||
|
||||
- 项目分支`master`安装的集群可以在k8s 1.8/1.9/1.10/1.11/1.12 任意小版本、大版本间升级(特别注意如果跨大版本升级需要修改/etc/ansible/hosts文件中的参数K8S_VER)
|
||||
- 项目分支`master`安装的集群可以在k8s 1.8/1.9/1.10/1.11/1.12/1.13 任意小版本、大版本间升级(特别注意如果跨大版本升级需要修改/etc/ansible/hosts文件中的参数K8S_VER)
|
||||
- 项目分支`closed`(已停止更新)安装的集群目前只能进行小版本1.8.x的升级
|
||||
|
||||
### 备份etcd数据
|
||||
|
@ -37,7 +37,7 @@ $ ETCDCTL_API=3 etcdctl --write-out=table snapshot status backup.db
|
|||
|
||||
- 1.下载所有组件相关新的二进制解压并替换 `/etc/ansible/bin/` 目录下文件
|
||||
|
||||
- 2.升级 etcd: `ansible-playbook -t upgrade_etcd 02.etcd.yml`
|
||||
- 2.升级 etcd: `ansible-playbook -t upgrade_etcd 02.etcd.yml`,**注意:etcd 版本只能升级不能降低!**
|
||||
|
||||
- 3.升级 docker (建议使用k8s官方支持的docker稳定版本)
|
||||
- 如果可以接受短暂业务中断,执行 `ansible-playbook -t upgrade_docker 03.docker.yml`
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# calico 配置 BGP Route Reflectors
|
||||
|
||||
BGP 路由反射器(Route Reflectors)是解决BGP扩展性问题的有效方式;没有 RR 时AS内的BGP路由器之间需要两两建立连接(IBGP全互联),引入 RR 后,其他 BGP 路由器只需要与它建立连接交换路由信息。更多相关知识请查阅思科/华为相关网络文档。
|
||||
`Calico`作为`k8s`的一个流行网络插件,它是基于`BGP`路由协议使得集群各个节点之间互通`POD`路由信息的;而节点互通路由信息的前提是建立 BGP Peer 连接。BGP 路由反射器(Route Reflectors,简称 RR)可以简化集群BGP Peer的连接方式,它是解决BGP扩展性问题的有效方式;具体来说:没有 RR 时同AS内所有节点之间需要两两建立连接(IBGP全互联),节点增加导致连接数剧增,资源占用剧增;引入 RR 后,其他 BGP 路由器只需要与它建立连接并交换路由信息,节点增加连接数只是线性增加,节省系统资源。更多相关知识请查阅思科/华为相关网络文档。
|
||||
|
||||
calico-node 版本 v3.3 开始支持内建路由反射器,非常方便,因此使用 calico 作为网络插件可以支持大规模的 K8S 集群。
|
||||
calico-node 版本 v3.3 开始支持内建路由反射器,非常方便,因此使用 calico 作为网络插件可以支持大规模节点数的`K8S`集群。
|
||||
|
||||
本文档主要讲解配置 BGP Route Reflectors,建议预先阅读[基础calico文档](calico.md)。
|
||||
|
||||
|
@ -103,7 +103,7 @@ spec:
|
|||
EOF
|
||||
```
|
||||
|
||||
上述命令配置完成后,马上可以看到之前所有的bgp连接都消失了,查看命令: `calicoctl node status`
|
||||
上述命令配置完成后,再次使用命令`ansible all -m shell -a '/opt/kube/bin/calicoctl node status'`查看,可以看到之前所有的bgp连接都消失了。
|
||||
|
||||
## 配置 BGP node 与 Route Reflector 的连接建立规则
|
||||
|
||||
|
@ -130,7 +130,7 @@ spec:
|
|||
EOF
|
||||
```
|
||||
|
||||
上述命令配置完成后,可以使用查看命令:`calicoctl get bgppeer` `calicoctl get bgppeer rr-mesh -o yaml`
|
||||
上述命令配置完成后,使用命令:`calicoctl get bgppeer` `calicoctl get bgppeer rr-mesh -o yaml` 检查配置是否正确。
|
||||
|
||||
## 选择并配置 Route Reflector 节点
|
||||
|
||||
|
@ -244,12 +244,14 @@ IPv4 BGP status
|
|||
IPv6 BGP status
|
||||
No IPv6 peers found.
|
||||
```
|
||||
可以看到所有其他节点都与两个rr节点建立bgp连接。
|
||||
可以看到所有其他节点都与所选rr节点建立bgp连接。
|
||||
|
||||
## 再增加一个 rr 节点
|
||||
|
||||
步骤同上述选择第1个 rr 节点,这里省略;添加成功后可以看到所有其他节点都与两个rr节点建立bgp连接,两个rr节点之间也建立bgp连接。
|
||||
|
||||
- 对于节点数较多的`K8S`集群建议配置3-4个 RR 节点
|
||||
|
||||
## 参考文档
|
||||
|
||||
[Calico 使用指南:Route Reflectors](https://docs.projectcalico.org/v3.3/usage/routereflector)
|
||||
|
|
Loading…
Reference in New Issue