Kubernetes-服务发布
#发布服务有三种方式,第一种把端口映射到所有节点比较适合发布一些tcp/udp的服务对于应用层像http的会导致无法获取到原始客户端IP,第二种需要用到云服务才行,第三种是ingress http服务发布
#这里介绍的是NGINX: 0.9.0-beta.13版本的
#https://github.com/kubernetes/ingress/releases下载
#解压进入
cd ingress/examples/deployment/nginx/
#默认后端404服务,可自行在集群内部搭建一个404服务器然后发布并修改nginx-ingress-controller.yaml的--default-backend-service参数
kubectl apply -f default-backend.yaml
#ingress控制器,控制器可以数量为多个,这样可以用来做外部负载均衡,通过kubectl的标签限制后可以固定为指定的几台节点
kubectl apply -f nginx-ingress-controller.yaml
#创建ingress
#这里用上次搭建的Kubernetes监控工具为列子,上次搭建好后服务名为monitoring-grafana并开通了80端口,分组位于kube-system
#ingress.kubernetes.io/ssl-redirect: "false" 默认为开启tls后则关闭http,http请求自动转到https
#导入证书,这里的证书自行创建,创建好后导入,证书运营商提供的证书需要注意只保留BEGIN CERTIFICATE的内容
#证书即使导入成功了,但是访问站点还是用的默认证书代表证书里面的格式可能有问题,我这里将BEGIN CERTIFICATE REQUEST去除只保留BEGIN CERTIFICATE后才成功
kubectl create secret tls grafana-secret --cert key/grafana.crt --key key/grafana.key
#多个不同的Ingress控制器如同时有nginx和gce需要在ingress里指定使用的哪个控制器,否则直接无视kubernetes.io/ingress.class: "nginx"
#Ingress可以有多个,可以根据不同的项目来划分,这样避免更新Ingress遇到错误后导致全部项目都无法访问,Ingress是Ingress控制器的规则
cat << EOF >bbs-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: grafana-ingress
namespace: kube-system
annotations:
ingress.kubernetes.io/ssl-redirect: "false"
spec:
tls:
- hosts:
- grafana2.test.com
secretName: grafana-secret
- hosts:
- grafana2.test.com
secretName: grafana-secret
rules:
- host: grafana1.test.com
http:
paths:
- backend:
serviceName: monitoring-grafana
servicePort: 80
- host: grafana2.test.com
http:
paths:
- backend:
serviceName: monitoring-grafana
servicePort: 80
EOF
kubect create -f bbs-ingress.yaml
#创建后访问,注意修改hosts或添加dns解析
http://grafana1.test.com
http://grafana2.test.com
https://grafana1.test.com
https://grafana2.test.com
#创建内部集群
#内部集群只能集群内部访问,控制节点无法访问,只能是代理节点访问,主要用于内部服务的调用
#clusterIP: 169.169.0.123可选,默认不配置clusterIP则随机IP,配置为None则不配置IP,
#配置为None主要用于利用Service监控pod ip,开发自己的负载均衡工具
apiVersion: v1
kind: Service
metadata:
name: testapp
spec:
ports:
- port: 7555
targetPort: 7523
name: testudp
protocol: UDP
- port: 80
targetPort: 80
name: nginx
protocol: TCP
#添加后则为指定的IP
#clusterIP: 169.169.0.123
selector:
app: webapp
#解释,根据标签找到对应的pod,然后代理指定的容器端口,外部通过对外的端口来访问
metadata:
name: 显示的名字
- port: 对外的端口
targetPort: 容器的端口
name: 自定义的名字
protocol: TCP/UDP
clusterIP: IP或None,也可不添加该参数则为随机IP
selector:
pod的标签
#端口绑定,
#将绑定的端口在所有代理节点都开启占用
apiVersion: v1
kind: Service
metadata:
name: testapp
spec:
ports:
- hostPort: 7555
name: testudp
protocol: UDP
- containerPort: 8088
hostPort: 80
name: nginx
protocol: TCP
#添加后则为指定的IP
#clusterIP: 169.169.0.123
selector:
app: webapp
#解释,根据标签找到对应的pod,然后代理指定的容器端口,外部通过对外的端口来访问
metadata:
name: 显示的名字
- hostPort: 没有containerPort参数则代表容器端口和hostPort对外发布的端口一致
name: 自定义名字
protocol: TCP/UDP
- containerPort: 容器端口
hostPort: 对外发布的端口
name: 自定义名字
protocol: TCP/UDP
clusterIP: IP或Node,也可不添加该参数则为随机IP
selector:
pod的标签
Kubernetes-服务发布的更多相关文章
- 阿里云Kubernetes服务上使用Tekton完成应用发布初体验
Tekton 是一个功能强大且灵活的 Kubernetes 原生开源框架,用于创建持续集成和交付(CI/CD)系统.通过抽象底层实现细节,用户可以跨多云平台和本地系统进行构建.测试和部署. 本文是基于 ...
- Jenkins-k8s-helm-harbor-githab-mysql-nfs微服务发布平台实战
基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...
- Jenkins-k8s-helm-eureka-harbor-githab-mysql-nfs微服务发布平台实战
基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...
- Kubernetes服务pod的健康检测liveness和readiness详解
Kubernetes服务pod的健康检测liveness和readiness详解 接下来给大家讲解下在K8S上,我们如果对我们的业务服务进行健康检测. Health Check.restartPoli ...
- java版gRPC实战之二:服务发布和调用
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 微软开源Kubernetes服务网格项目Open Service Mesh
尽管微服务环境提供可移植性,允许更快更频繁的部署周期,甚至还能让组织创建关注于特定领域的团队,但这也伴随着对于流量管理.安全以及可观测性等需求的增长.在整个生态系统中,针对这些需求的服务网格模式的实现 ...
- kubeadm/flannel/dashboard/harbor部署以及服务发布
kubeadm/flannel/dashboard/harbor部署以及服务发布 目录 kubeadm/flannel/dashboard/harbor部署以及服务发布 一.部署kubeadm 1. ...
- arcgis server之路网服务发布
路网服务发布首先需要建立好道路的网络集,为了保证道路网络分析的准确性,建立网络集之前,要对道路图层进行拓扑差错,确保道路的连通性.具体操作流程为:道路拓扑差错-建立几何网络集-路网服务发布. 1.道路 ...
- dubbo源码之四——dubbo服务发布
dubbo版本:2.5.4 服务发布是服务提供方向注册中心注册服务过程,以便服务消费者从注册中心查阅并调用服务. 服务发布方在spring的配置文件中配置如下: <bean id="d ...
- Azure 媒体服务发布可靠的视频直播平台
Sudheer Sirivara Azure 媒体服务总监 两个月前,Azure 媒体服务发布了视频直播和内容保护产品的公共预览版.这一 Internet规模的直播解决方案已被十余家业界领先的国际广播 ...
随机推荐
- 通过IIS共享文件夹来实现静态资源"本地分布式"部署
以下以文件型数据库(如sqlite)为例 楼主话:以下内容,若有不专业处,大胆喷,虚心求教. 起因:要进行一个项目的分布式部署,而这个项目所涉及的其中一个数据库为sqlite(经测试,同为文件型数据库 ...
- P1498 南蛮图腾
P1498 南蛮图腾 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果(看Hint),在得到了酋长的传授后,孔明掌握 ...
- android apk瘦身之 图片压缩 tinypng
参考地址: http://blog.csdn.net/jy692405180/article/details/52409369 http://www.tuicool.com/articles/BraI ...
- Qsys配置生成nios系统模块
1. 本次使用的是别人写好的例程,主要研究学习,使用quartus 11打开工程 2. bdf文件是块编辑器的,相当于原理图,以前只在用NIOS的时候会用到这种方式.接下来新建一个工程,添加原理图元件 ...
- error LNK2001: unresolved external symbol @__security_check_cookie
Q:VS2005编译的静态库, 在vc++6.0中连接出现错误 error LNK2001: unresolved external symbol @__security_check_cookie@l ...
- 关于 Google Chrome “Your connection is not private” 问题的处理
今天下午访问google网站的时候,突然不能访问了,提示“Your connection is not private”(你的连接不是私密连接):查看XX-NET的设置,显示“请检查浏览器代理设置”. ...
- Caliburn.Micro 消息附加多事件
<Button Content="Let's Talk"cal:Message.Attach="[Event MouseEnter] = [Action Talk( ...
- python 学习分享-socketserver
SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端.即:每个客户端请求连接到服务器时,Socket服务端都会在服务器 ...
- eclipse importing maven projects 卡顿
导入一个maven工程后 一直显示 importing maven projects 9% 解决办法: 找到eclipse安装目录下的eclipse.ini 在最后加入 -vm $JAVA_HOME% ...
- Action参数和View、Json、重定向
一.Action 1.Action参数: 普通参数.Model类.FormCollection (1).普通参数 Index(string name,int age) 框架会自动把用户请求的Que ...