Kubernetes提供了两种内建的云端负载均衡机制用于发布公共应用,一种是工作于传输层的Service资源,它实现的是TCP负载均衡器;另一种是Ingress资源,它实现的是HTTP(S)负载均衡器。

今天我们来重点讨论Ingress资源。HTTP(S)负载均衡器是应用层负载均衡机制的一种,支持根据环境做出更好的调度决策。与传输层调度器相比,它提供了可自定义URL映射和TLS等功能,并支持多种健康状态检查机制。

Ingress是Kubernetes API的标准资源类型之一,它其实就是一组基于DNS名称或URL路径把请求转发至指定的Service资源的规则,用于将集群外部的请求流量转发至集群内部完成服务发布。然而,Ingress资源自身并不能进行“流量穿透”,它仅是一组路由规则的集合,这些规则要想真正发挥作用还需要其他功能的辅助,如监听某套接字,然后根据这些规则的匹配机制路由请求流量。这种能够为Ingress资源监听套接字并转发流量的组件称为Ingress Controller。

一、部署Helm

Helm是一个包管理工具, 把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,方便将其chart保存到chart仓库用来存储和分享, Helm支持发布应用配置的版本管理, 使发布可配置, 简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

  • 安装Helm

1、官网下载Helm二进制文件,当前最新版本为2.14.0;

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.0-linux-amd64.tar.gz

2、解压缩文件并将目录中二进制文件移动到/usr/local/bin/下;

tar -zxvf helm-v2.14.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

3、为Tiller添加权限,详见Role-based Access Control,新建rbac-config.yaml,内容如下:

 apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system

执行create命令:

kubectl create -f rbac-config.yaml

4、初始化 Helm 并安装 Tiller 服务

helm init --upgrade --service-account tiller --tiller-image sapcc/tiller:v2.14.0

5、查看helm版本,出现以下信息,确认安装成功:

Client: &version.Version{SemVer:"v2.14.0", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.0", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}

6、chart列表

helm repo update

7、测试chart是否可用

helm search

二、使用Helm安装nginx-ingress

  • 安装nginx-ingress

1、执行helm install命令

helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
--name:为安装的应用命名

2、查看helm 列表

3、查看ingress的service

kuberctl get svc

三、部署nginx实例应用

  • 部署nginx的deployment

1、编辑nginx-app.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginxdemos/hello:latest
ports:
- containerPort: 80

2、执行create创建命令

kubectl  create  -f  nginx-app.yaml

3、检测deployment部署情况

kubectl  get deployment  nginx-deployment
  • 为nginx的deployment创建service

1、执行expose命令

kubectl expose deployment nginx-deployment --target-port=80 --port=80 --protocol=TCP --name=jdc-test

2、确认服务创建完成

kubectl  get  svc

  • 为service创建ingress

1、编辑 ingress-nginx.yaml文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: jdc-ingress-controller-test
annotations:
metadata.annotations.kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: test.nginx-ingress.jdc-test
http:
paths:
- path: /
backend:
serviceName: jdc-test
servicePort: 80

2、执行create创建命令

kubectl  create –f  ingress-nginx.yaml

3、查看ingress部署情况

kubectl  get ingress

4、在客户端添加静态解析,公网IP是nginx controller的service公网IP,域名是ingress的host:test.nginx-ingress.jdc-test

5、浏览器输入url http://test.nginx-ingress.jdc-test/jdc-test访问测试

干货|Kubernetes集群部署
Nginx-ingress Controller的更多相关文章

  1. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

  2. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  3. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  4. Kubernetes集群部署DNS插件

    准备 kube-dns 相关镜像 准备 kube-dns 相关 yaml 文件 系统预定义的 RoleBinding 配置 kube-dns 相关服务 检查 kube-dns 功能 kube-dns ...

  5. 基于Kubernetes集群部署skyDNS服务

    目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...

  6. 为Kubernetes集群部署本地镜像仓库

    目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...

  7. Kubernetes 集群部署(2) -- Etcd 集群

    Kubenetes 集群部署规划: 192.168.137.81  Master 192.168.137.82  Node 192.168.137.83  Node 以下在 Master 节点操作. ...

  8. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  9. kubernetes 集群部署

    kubernetes 集群部署 环境JiaoJiao_Centos7-1(152.112) 192.168.152.112JiaoJiao_Centos7-2(152.113) 192.168.152 ...

随机推荐

  1. css快速浏览

    meta <meta charset="utf-8" /> <meta name="keywords" content="key1, ...

  2. 第八篇Django分页

    Django分页 1.复杂版 data = [] , ): tmp = {"id": i, "name": "alex-{}".format ...

  3. [BJDCTF2020]The mystery of ip

    0x00 知识点 SSTI模板注入: 之前也写过: https://www.cnblogs.com/wangtanzhi/p/12238779.html SSTI模板注入: 模板注入涉及的是服务端We ...

  4. 【shell】常用shell脚本

    1.检查主机存活状态 #!/bin/bash IP_LIST="192.168.18.1 192.168.1.1 192.168.18.2" for IP in $IP_LIST; ...

  5. InstrumentationTextCase 测试

    <instrumentation        android:name="android.test.InstrumentationTestRunner"        an ...

  6. 实验吧web-易-上传绕过

    随便上传一个png文件,出现提示 我们再上传一个php文件,却出现提示 上传遇到问题是肯定的,题目就是上传绕过,所以我们下面要做的就是绕过检测. 这里使用00截断. 首先在提交时抓包 我们将图中upl ...

  7. A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题

    ---恢复内容开始--- output standard output The final match of the Berland Football Cup has been held recent ...

  8. 寒假day19

    今天编写了人才动态模块,同时刷了一些算法题.

  9. 移动端H5开发遇到的问题及解决方法

    本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...

  10. Windows安装使用SonarQube7.4 对java项目进行代码质量扫描

    我这里使用7.4因为使用JDK是1.8 其它版本看下依赖版本就好 1.下载7.4版本安装包 https://binaries.sonarsource.com/CommercialDistributio ...