脚本宝典收集整理的这篇文章主要介绍了k8s service使用NodePort对外暴露应用,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
NodePort:在每个节点上启用一个端口来暴露服务,可以在集群
示例代码:
apiVersion: v1
kind: Service
metadata:
labels:
app: web
name: web
sPEc:
type: NodePort # 服务类型
ports:
- port: 80 # Service端口
PRotocol: TCP # 协议
targetPort: 80 # 容器端口
nodePort: 30001 # 对外暴露的端口,可以指定
selector:
app: web # 指定关联Pod的标签
@H_360_22@
示例图片
NodePort:
会在每台Node上监听端口接收用户流量,在实际情况下,对用户暴露的只会有一个IP和端口,那这么多台Node该使用哪台让用户访问呢?
这时就需要前面加一个公网负载均衡器为项目提供统一访问入口了。
示例图片
我们先启动一个pod容器
[root@k8s-master deployment]# vim web.yaML
[root@k8s-master deployment]# cat web.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: default
annotations: # 记录回滚参数
kubernetes.io/change-cause: "web.v1-nginx-1.19" #记录到revision中的内容,记录版本号
spec:
replicas: 3 # Pod副本预期数量
revisionHistoryLimIT: 10 # RS历史版本保存数量
selector:
matchLabels:
app: web
strategy:
rollingUpdate:
maxSurge: 25% # 滚动更新过程最大pod副本数
maxUnavailable: 25% # 滚动更新过程中最大不可用pod副本数,
type: RollingUpdate
template:
metadata:
labels:
app: web # Pod副本的标签
spec:
containers:
- name: web
image: nginx:1.16
readinessProbe: # 存活检查,如果失败,将杀死容器,来重启
httpGet:
port: 80
path: /index.html
initialDelaySeconds: 10 #启动容器后多少秒健康检查
periodSeconds: 10 #以后间隔多少秒检查一次
livenessProbe: # 就绪检查,失败就会剔除 service
httpGet:
port: 80
path: /index.html
启动pod服务
[root@k8s-master deployment]# kubectl apply -f web.yaml
deployment.apps/web unchanged
使用service服务,暴露web应用
[root@k8s-master service]# vim web-NodePort.yaml
[root@k8s-master service]# cat web-NodePort.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: web
name: web
spec:
type: NodePort # 服务类型
ports:
- port: 80 # Service端口
protocol: TCP # 协议
targetPort: 80 # 容器端口
nodePort: 30009 # 对外暴露的端口,可以指定
selector:
app: web # 指定关联Pod的标签
启动服务
[root@k8s-master service]# kubectl apply -f web-NodePort.yaml
service/web configured
查询服务
[root@k8s-master service]# kubectl get service
NAME TYPE CLUSTER-iP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d19h
probe-demo ClusterIP 10.104.161.168 <none> 80/TCP 3d19h
web NodePort 10.100.222.42 <none> 80:30009/TCP 13h
验证服务
[root@k8s-master service]# curl -I http://192.168.0.202:30009
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Thu, 03 Dec 2020 03:10:36 GMT
Content-type: text/html
Content-Length: 612
Last-Modified: Tue, 13 Aug 2019 10:05:00 GMT
Connection: keep-alive
ETag: "5d528b4c-264"
Accept-Ranges: bytes
以上是脚本宝典为你收集整理的k8s service使用NodePort对外暴露应用全部内容,希望文章能够帮你解决k8s service使用NodePort对外暴露应用所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。