k8s ingress详解(1)
来源:互联网 发布:coco2d js 使用九宫图 编辑:程序博客网 时间:2024/05/29 18:50
ingress 是除了 hostport nodeport clusterIP以及云环境专有的负载均衡器外的访问方式,官方提供了Nginx ingress controller。
通常情况下,service和pod的IP可以被集群网络访问。外部访问的所有流量被丢弃或转发到别处。ingress是允许入站连接到达群集服务的规则集合.可以为外部提供可访问服务的URL,流量负载均衡,可被终止的ssl连接,以及基于配置的虚拟主机。
配置服务器或负载平衡器是比想象中要难。大多数Web服务器的配置文件非常相似。虽然一些应有有一些奇怪的特点,但是我们可以用相似的逻辑去实现期望的结果。ingress体现了这一理念,ingress controller是用来处理所有共同特性的。ingress controller通过监听/ingresses接口从而更新ingress 从而达到ingress的预期,这里我们先讲述怎么搭建ingress service
api: /apis/extensions/v1beta1/ingresses
使用官方的部署方式
git clone https://github.com/kubernetes/contribcd contrib/ingress/controllers/nginx
能翻墙的可以自己pull image,不过我翻墙相当慢,相关镜像最好从灵雀云时速云等的镜像市场拉,自行tag一下。1.Default backend server
在部署ingress之前需要先部署Default backend server,实现了简单的ingress作为默认返回值,做了两件事
1).为/提供服务,返回404
2).在/healthz返回200
#创建rc default-http-backendkubectl create -f examples/default-backend.yaml#暴露端口kubectl expose rc default-http-backend --port=80 --target-port=8080 --name=default-http-backend
2.创建ingress controller server#默认是一个rc 可以根据具体情况自己修改kubectl create -f examples/default/rc-default.yaml
使用calico等overlay网络可能导致hostport不可用,可以增加“hostNetwork: true” 配置启用host模式
kubectl run echoheaders --image=gcr.io/google_containers/echoserver:1.4 --replicas=1 --port=8080kubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-xkubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-y
4.添加ingresskubectl create -f examples/ingress.yaml
查看kubectl get ing可以看到对应的ingress
5.验证
curl -H "Host:foo.bar.com" 127.0.0.1/foo curl -H "Host:bar.baz.com" 127.0.0.1/bar
6.配置httpsopenssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls.key -out /tmp/tls.crt -subj "/CN=foo.bar.com"kubectl create secret tls foo-secret --key /tmp/tls.key --cert /tmp/tls.crtecho "apiVersion: extensions/v1beta1kind: Ingressmetadata: name: foo namespace: defaultspec: tls: - hosts: - foo.bar.com secretName: foo-secret rules: - host: foo.bar.com http: paths: - backend: serviceName: echoheaders-x servicePort: 80 path: /" | kubectl create -f - kubectl get ing curl https://127.0.0.1 -H 'Host:foo.bar.com' -k
7. 默认证书配置,不配置则使用自签名证书
--default-ssl-certificate 添加默认页面ssl证书
echo " - --default-ssl-certificate=default/foo-secret" >>rc-default.yaml
8. 服务端跳转
默认配置访问ingress http,跳转https
在configmap 中ssl-redirect: "false" 关闭跳转
configmap 通过--nginx-configmap指定
例如:
apiVersion: v1data: ssl-redirect: "false"kind: ConfigMapmetadata: namespace: nginx-ingress name: nginx
9关闭HSTS(强制客户端(如浏览器)使用HTTPS与服务器创建连接)
hsts=false
10 Kube-Lego实现密钥自动管理
例子:
https://github.com/jetstack/kube-lego
11 暴露TCP服务
默认不暴露TCP端口--tcp-services-configmap 实现
apiVersion: v1kind: ConfigMapmetadata: name: tcp-configmap-exampledata: 9000: "default/example-go:8080"
12暴露UDP端口
--udp-services-configmap 配置方式同tcp
13 Proxy Protocol在nginx-configmap中启用
apiVersion: v1data: use-proxy-protocol: "true"kind: ConfigMapmetadata: namespace: nginx-ingress name: nginx
14.自定义错误
实际就是通过更改官方例子中的custom-default-backend角色实现,通过X-Code 和 X-Format两个维度控制
通过aledbf/nginx-error-server:0.1 替换default-backend进行测试
curl -v http://10.10.10.150/ -H 'Accept: application/json'
curl -v http://10.10.10.150/
https://github.com/kubernetes/contrib/tree/b13fc59e59f56e74dfb613eb6f4fbda9c96e20f2/ingress/controllers/nginx/examples/custom-errors
enable-vts-status=true
16.运行多个ingress
通过备注告诉哪个ingress controller添加该ingress
annotations: kubernetes.io/ingress.class: "nginx"
不指出则会在所有ingreess 上面配置
17禁用 ingresskubernetes.io/ingress.class设置为空或不存在的字符则不会再ingress controller 中加载
- k8s ingress详解(1)
- k8s ingress详解(2)
- k8s高可用和ingress
- Ingress使用详解
- 搭建及使用K8s集群 <使用ingress 暴露springcloud服务>
- 在k8s集群中部署nginx-ingress-controller.yaml遇到的问题
- 入过滤(Ingress Filtering)
- Kubernetes(k8s)学习笔记1
- k8s
- kubernetes 源码分析之ingress(一)
- kubernetes 源码分析之ingress(二)
- kubernetes 源码分析之ingress(三)
- Kubernetes对象(网络)之Ingress
- 【原创】k8s源码分析------kube-apiserver分析(1)
- 【原创】k8s源码分析-----kubelet(1)主要流程
- 【原创】k8s源码分析-----kube-proxy(1)Config
- 【原创】k8s源码分析-----kubectl(1)api.RESTMapper
- kubernetes(k8s)安装部署
- 谓词函数、函数对象
- oj搭
- ruby中的实例变量和类变量
- MySQL 之group_concat_max_length Mac 版
- 报账流程
- k8s ingress详解(1)
- 打印菱形
- xampp默认配置拿shell
- edx 题库编辑xblock的安装
- PHP常用数组函数
- POJ 1286 Necklace of Beads 已翻译
- 如何手动安装MySql
- VB 远程注入/卸载/自我删除(RtlCreateUserThread)
- 蓝桥 分机号