通过Service访问应用 (2)

640?wx_fmt=gif

目录  

  • 通过NodePort Service在外部访问集群应用 

  • 通过LoadBalancer Service在外部访问集群应用 

  • Microsoft SQL Server数据库部署 

为了便于理解和学习,请先阅读上一篇《通过Service访问应用 (1)》再继续学习本篇内容。

通过NodePort Service在外部访问集群应用

这时候我们就可以使用NodePort类型的Service了。NodePort服务类型允许在每个节点的IP(任意节点IP)上使用静态端口(NodePort)公开服务,我们可以在集群之外通过请求<NodeIP>:<NodePort>来访问服务。

YAML定义如下所示:

kind: Service #资源类型	
apiVersion: v1	
metadata: #标准元数据	name: nodeport-service  #服务名称	
spec:  #规范定义	type: NodePort #服务类型,这里是节点端口	ports:  #端口列表	- port: 80  #当前端口	nodePort: 31001 #节点端口,注意默认的端口范围为“30000-32767”,注意不要冲突	selector: #标签选择器	app: demo

接下来,我们来执行Service的创建并查询Service:

kubectl create -f nodePortService.yaml	
kubectl get services nodeport-service

640

如上图所示,我们创建了名为“nodeport-service”的Service,该Service映射“31001”节点端口,并且创建了“11.3.138.104”的集群IP,也就是说,Service可以通过“节点IP:节点端口”或“集群IP(spec.clusterIp):端口”进行访问。

接下来,在集群外部的计算机,我们通过节点IP和节点端口(172.16.2.201:31001)即可访问刚刚部署的Demo应用:

640

虽然我们可以在外部访问集群中的应用,但是也可以看到该方案有不少不足:

  • 每个端口仅能支持一个服务,不能冲突

  • 端口范围必须为“30000-32767”,非常不友好

  • 如果节点IP发生变化,服务也将无法访问

因此,用于开发测试还说得过去,用于生产的话,会影响“升职加薪赢取白富美”!我们得寻求更佳方案。

通过LoadBalancer Service在外部访问集群应用

LoadBalancer Service是暴露服务到外部(Internet)的标准方式,它可以完美的解决我们上面的问题,不过使用之前,我们得有一个loadBalancerIP——负载均衡IP。一般的云厂商都能够提供这个服务。这里我们以腾讯云为例进行讲解。

首先,我们需要在腾讯云的k8s集群创建一个Demo Deployment,配置参考上文。

接下来,我们需要创建一个负载均衡服务,以便得到负载均衡IP:

640

有了IP,我们就可以创建LoadBalancer Service了,YAML定义如下所示:

apiVersion: v1  #api版本	
kind: Service #Service	
metadata: #标准元数据	name: demo  #名称	namespace: default #命名空间	
spec: #规范	clusterIP: 10.3.255.28 #集群IP	loadBalancerIP: 106.52.99.55 #负载均衡IP	ports:  #端口列表	- name: tcp-80-80	nodePort: 31504 #节点IP	port: 80 #Pod端口	protocol: TCP #协议	targetPort: 80 #服务端口	selector: #选择器	app: demo	k8s-app: demo	qcloud-app: demo	type: LoadBalancer #服务类型,这里为负载均衡服务类型

如上述定义所示,我们进行创建Service。该定义设置了集群IP为“10.3.255.28”,负载均衡IP(loadBalancerIP)为“106.52.99.55”,节点端口为“31504”。Service定义好了,我们对负载均衡服务进行配置,配置一个TCP监听器如下所示:

640

接下来,我们就可以尽情访问了。通过节点IP和端口访问:

640

通过负载均衡IP访问:

640

通过绑定域名访问(请设置域名解析为负载均衡IP):

640

Microsoft SQL Server数据库部署

为了让大家更好的使用上述对象进行部署,本节笔者使用大家熟知的Microsoft SQL Server数据库来进行部署。

  • 部署目标

    完成Linux版本的Microsoft SQL Server 2017的部署

    使用节点目录“/var/mssql”来存储数据库文件

    设置初始密码为“123456abcD”

    开放1433端口,并且允许外部应用通过节点端口“30338”访问数据库

  • YAML定义

接下来,我们需要定义YAML文件。根据部署目标,我们确定可以使用Deployment对象和Service对象来完成本次部署。YAML文件定义如下如下所示:

apiVersion: extensions/v1beta1	
kind: Deployment	
metadata:	labels:	app: mssql	name: mssql #当前Deployment对象名称,同一个命名空间下必须唯一	
spec:	replicas: 1 #副本集数量	revisionHistoryLimit: 2 #保留的历史记录数,设置为0将清理部署的所有历史记录,无法回滚	strategy:	type: Recreate	template:	metadata:	labels:	app: mssql	spec:	containers:	- env:  #环境变量设置	- name: ACCEPT_EULA	value: "Y"	- name: SA_PASSWORD #sa密码设置	value: 123456abcD	image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu #镜像	imagePullPolicy: Always	name: mssql	ports:	- containerPort: 1433 #容器端口,SQLServer数据库默认端口为1433	resources:  #资源限制	limits:	cpu: "2"	memory: 2096Mi	requests:	cpu: 100m	memory: 827Mi	volumeMounts:	- mountPath: /var/opt/mssql/	name: data-vol	restartPolicy: Always	terminationGracePeriodSeconds: 30 #Pod结束时等待时长(单位为秒)	volumes:	- name: data-vol	hostPath:   #使用主机目录	path: /var/mssql	
---	
apiVersion: v1	
kind: Service	
metadata:	labels:	app: mssql	name: mssql #服务名称	
spec:	ports:	- name: tcp-1433-1433	nodePort: 30338 #节点端口,注意默认的端口范围为“30000-32767”,注意不要冲突	port: 1433  #端口	protocol: TCP	targetPort: 1433 #目标端口	selector: #Pod标签选择器	app: mssql	sessionAffinity: None	type: NodePort #服务类型,这里是负载均衡类型
  • 执行部署

接下来,我们使用命令执行部署:

kubectl apply -f mssqlserver.yaml

“kubectl apply”命令既可以创建资源,也可以用于更新资源对象。接下来我们通过命令可以查看部署状态:

kubectl get svc -o wide -lapp=mssql	
kubectl get po -o wide -lapp=mssql	
kubectl get deployment -o wide -lapp=mssql

640

如上图所示,部署已经成功,那么接下来我们可以使用管理工具进行连接访问:

640

往期内容

Docker+ Kubernetes已成为云计算的主流(二十六)

容器化之后如何节省云端成本?(二十七)

了解Kubernetes主体架构(二十八)

使用Minikube部署本地Kubernetes集群(二十九)

使用kubectl管理k8s集群(三十)

使用Kubeadm创建k8s集群之部署规划(三十一)

使用Kubeadm创建k8s集群之节点部署(三十二)

集群故障处理之处理思路以及健康状态检查(三十三)

集群故障处理之处理思路以及听诊三板斧(三十四)

使用WebDeploy部署远程IIS网站

使用Kubectl部署应用

通过Service访问应用 (1)

640?wx_fmt=png

转载是一种动力 分享是一种美德

640?

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019-03-18-算法-进化(反转链表)

题目描述 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题&#xff1f; /*** 思路1&#xff1a;迭代法&#xff0c;直接依次反转链表* 时间复杂度…

分治FFT

分治FFT 考虑计算这么一个式子f(i)∑j1ifi−jg(j)f(i) \sum\limits_{j 1} ^{i} f_{i - j}g(j)f(i)j1∑i​fi−j​g(j)&#xff0c;给定g(x)g(x)g(x)&#xff0c;求f(x)f(x)f(x)&#xff0c;边界条件f(0)1f(0) 1f(0)1。 假设我们已经算出[l,mid][l, mid][l,mid]&#xff0c…

微软商业智能BI知识整合篇-五大工具产品系列文章

在最近2个月时间里&#xff0c;笔者尝试将自身在企业级商业智能BI的知识及经验进行梳理&#xff0c;以文章的方式输送给广大读者们阅读。笔者同样是非科班专业人员&#xff0c;但在过往的摸索过程中&#xff0c;积累的系列知识足够应付一般性地企业级商业智能BI项目需要。相信在…

2019-03-21-算法-进化(合并两个有序链表)

题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4思路1&#xff1a;双指针法 /*** 合并两个有序…

多项式对数函数ln f(x)

多项式对数函数ln⁡f(x)\ln f(x)lnf(x) 如果存在解必然有[x0]f(x)1[ x ^ 0]f(x) 1[x0]f(x)1&#xff0c; 对ln⁡f(x)\ln f(x)lnf(x)求导&#xff0c;有dln⁡f(x)dx≡f′(x)f(x)(modxn)\frac{d \ln f(x)}{dx} \equiv \frac{f(x)}{f(x)} \pmod {x ^ n}dxdlnf(x)​≡f(x)f′(x)…

【A】兼容Core3.0后 Natasha 的隔离域与热编译操作。

文章转载授权级别&#xff1a;A 预计阅读时间&#xff1a;15分钟一、 2.0预览版本增加了哪些功能大部分为底层的升级优化&#xff0c;例如&#xff1a;引擎兼容 Core3.0优化编译流程&#xff0c;增加编译前语法检测及日志&#xff0c;统一采用流加载方式在 Vito 的建议…

2019-03-22-算法-进化(回文链表)

题目描述 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶&#xff1a; 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题&#xff1f; 解题 思路1&#xff1a;直接利用List的顺序存储性&#x…

多项式牛顿迭代(应用:求逆,开根,对数exp)

多项式牛顿迭代 给定多项式g(x)g(x)g(x)&#xff0c;求f(x)f(x)f(x)&#xff0c;满足g(f(x))≡0(modxn)g(f(x)) \equiv 0 \pmod {x ^ n}g(f(x))≡0(modxn)。 泰勒展开 对于现有得f(x)f(x)f(x)&#xff0c;构造一个多项式g(x)g(x)g(x)&#xff0c;使得f(n)(x)g(n)(x)f^{(n)}(…

.NET Core 使用 K8S ConfigMap的正确姿势

背景ASP.NET Core默认的配置文件定义在 appsetings.json和 appsettings.{Environment}.json文件中。这里面有一个问题就是&#xff0c;在使用容器部署时&#xff0c;每次修改配置文件都需要重新构建镜像。当然你也可能会说&#xff0c;我的配置文件很稳定不需要修改&#xff0c…

2019-03-22-算法-进化(环形链表)

题目描述 给定一个链表&#xff0c;判断链表中是否有环。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有环。 示例 1&#xff1a; 输入&#xf…

ASP.NET Core on K8S深入学习(9)Secret Configmap

本篇已加入《.NET Core on K8S学习实践系列文章索引》&#xff0c;可以点击查看更多容器化技术相关系列文章。01—Secret关于Secret在应用启动过程中需要一些敏感信息&#xff0c;比如数据库用户名、密码&#xff0c;如果直接明文存储在容器镜像中是不安全的&#xff0c;K8S提供…

生成函数简单入门

生成函数 可表示为F(x)∑nankn(x)F(x) \sum\limits_{n} a_n k_n(x)F(x)n∑​an​kn​(x)&#xff0c;对于不同类型的生成函数&#xff0c;有不同的核函数kn(x)k_n(x)kn​(x)。 普通生成函数&#xff1a;kn(x)xnk_n(x) x ^ nkn​(x)xn。 指数生成函数&#xff1a;kn(x)xnn!…

.NET Core 学习资料精选:进阶

2019.09月就要正式发布.NET 3.0了&#xff0c;对于前一篇博文《.NET Core 学习资料精选&#xff1a;入门》大家学的可还开心&#xff1f;这是本系列的第二篇文章&#xff1a;进阶篇&#xff0c;喜欢的园友速度学起来啊。对于还在使用传统.NET Framework 框架的园友&#xff0c;…

P4389 付公主的背包(生成函数,多项式exp)

P4389 付公主的背包 考虑生成函数有&#xff1a; ∏i1n11−xvi对其取对数得&#xff0c;∑i1nln⁡11−xviF(x)11−xv,G(x)ln⁡F(x)G(x)∫F′(x)F(x)dxG(x)∫vxv−11−xvdxG(x)∫∑n≥0vxvnv−1dxG(x)∑n≥0vxvnvvnvG(x)∑n≥0xv(n1)n1G(x)∑n≥1xvnn对于原式:∑i1n∑j1∞xvijj…

VS Code 1.38 发布!

今天&#xff08;北京时间 2019 年 9 月 5 日&#xff09;&#xff0c;微软发布了 Visual Studio Code 1.38 版本。此版本主要更新的内容包括&#xff1a;Preserve case for global search and replace - 进行全局替换字符串时保留大小写。Settings editor string array valida…

HDU 5730 Shell Necklace(生成函数 多项式求逆)

Shell Necklace 由题意可得f[n]∑i1na[i]f[n−i]f[n] \sum\limits_{i 1} ^{n} a[i] f[n - i]f[n]i1∑n​a[i]f[n−i]&#xff0c;设f[n]f[n]f[n]的生成函数为F(x)F(x)F(x)&#xff0c;a[n]a[n]a[n]的生成函数为A(n)A(n)A(n) F(x)A(x)∑n≥0xn∑ijnaifn−i由于a00&#xff0c…

.NET Core 收徒,有缘者,可破瓶颈

最近感悟天命&#xff0c;偶有所得&#xff0c;故而打算收徒若干&#xff0c;以继吾之传承。有缘者&#xff0c;可破瓶颈&#xff0c;职场巅峰指日可待。入门基本要求&#xff1a;1、工作经验&#xff1a;1年或以上。2、拜师费用&#xff1a;3999元&#xff08;RMB&#xff09;…

【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程

一、前言在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署。在本文中&#xff0c;我们将继续介绍利用Docker部署Nginx服务实现负载均衡。文章最后附有Nginx部署的视频全过程。注&#xff1a;查看公众号历史文章&#xff0c…

P2012 拯救世界2(指数型生成函数)

P2012 拯救世界2 三种基因&#xff0c;我们分别列出其生成函数&#xff1a; F(x)∑n≥0xnn!exG(x)∑n≥0x2n1(2n1)!12(∑n≥0xnn!−∑n≥0(−1)nxnn!)12(ex−e−x)H(x)∑n≥0x2n(2n)!12(∑n≥0xnn!∑n≥0(−1)nxnn!)12(exe−x)F(x) \sum_{n \geq 0} \frac{x ^ n}{n!} e ^ x\…

开源导入导出通用库Magicodes.ExporterAndImporter发布

导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库&#xff0c;并且仍在跟随项目不断地打磨。GitHub地址&#xff1a;https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语…