Kubernetes externalIPs 类型服务

news/2024/11/15 6:52:11/文章来源:https://www.cnblogs.com/ggborn-001/p/18334776

背景:

  在k8s中用到的比较到多的是ClusterIP和NodePort类型的service,externalIPs则很少使用。我们现在了解一下其用法和它的一些优缺点。

官方定义:

如果有路由到一个或多个集群节点的外部 IP,则可以在这些 IP 上公开 Kubernetes 服务。在服务端口上使用外部 IP(作为目标 IP)进入集群的流量将被路由到其中一个服务端点。 不受 Kubernetes 管理,由集群管理员负责。

 

如何使用externalIPs

 

 本实例预配了 2 个 VM。 分别为 Kubernetes 主节点,IP 为 1.2.4.120。 Kubernetes worker,IP 为 1.2.4.114。k3s-external-ip-masterk3s-external-ip-worker

部署nginx和httpd服务

 

$ kubectl create deployment nginx --image=nginx
$ kubectl create deployment httpd --image=httpd

 

  可以看到

$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-86c57db685-fzxn5   1/1     Running   0          22s
httpd-7bddd4bd85-zk8ks   1/1     Running   0          16s

  编写service配置文件

$ cat << EOF > nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- name: httpprotocol: TCPport: 80targetPort: 80externalIPs:- 1.2.4.114
EOF

  

$ cat << EOF > httpd-service.yaml
apiVersion: v1
kind: Service
metadata:name: httpd-service
spec:selector:app: httpdports:- name: httpprotocol: TCPport: 80targetPort: 80externalIPs:- 1.2.4.120
EOF

  部署这两个service

$ kubectl create -f nginx-service.yaml
$ kubectl create -f httpd-service.yaml

  查看service

$ kubectl get svc
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.43.0.1       <none>        443/TCP   18m
httpd-service   ClusterIP   10.43.240.149   1.2.4.120     80/TCP    32s
nginx-service   ClusterIP   10.43.13.149    1.2.4.114     80/TCP    26s

  调用查看httpd服务

$ curl -i 1.2.4.120
HTTP/1.1 200 OK
Date: Fri, 20 Dec 2019 03:36:23 GMT
Server: Apache/2.4.41 (Unix) <------
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html<html><body><h1>It works!</h1></body></html>

  调用查看nginx服务

$ curl -i 1.2.4.114
HTTP/1.1 200 OK
Server: nginx/1.17.6 <------
Date: Fri, 20 Dec 2019 03:36:01 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT
Connection: keep-alive
ETag: "5dd3e500-264"
Accept-Ranges: bytes<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
....

 

总结:

优点:是对外暴露访问地址相较于NodePort的访问地址自控程度高

缺点:不具有高可用的能力

 

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

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

相关文章

智慧校园:定义未来教育的蓝图

智慧校园管理平台,是集信息技术与教育教学深度融合的产物,它以大数据、云计算、物联网、人工智能等前沿技术为核心,构建了一个高度信息化、智能化的校园生态系统。这一平台不仅仅是技术的堆砌,更是教育理念与管理模式的全面升级,旨在打造安全、高效、个性化的学习环境,促…

Jmeter简单接口测试

说明:Jmeter和对应jdk的下载及安装说明,在笔者的其他文章里面可以找到,这里不再赘述,笔者使用的是Jmeter5.3和jdk1.8 1.在开始讲之前,先讲一下如何看接口信息,一般情况下,开发会有接口文档,如果没有的话,可以在谷歌浏览器按F12抓包,看接口的信息,包括服务器地址,端…

前端部署工具

前端部署工具 用electron写了一个通用的前端部署工具,支持SSH的理论上都可以使用该工具,使用nodejs实现模拟登陆以及上传文件到服务器并解压 链接: https://pan.baidu.com/s/1rGnAO4X_xfv90UecuAMFkA?pwd=2mte 提取码: 2mte本文来自博客园,作者:小万子呀,转载请注明原文链…

Go--创建以当前时间命名的excel文件

下载依赖包go get -u github.com/xuri/excelize/v2 代码package mainimport ("fmt""github.com/xuri/excelize/v2""time" )func main() {// 获取当前时间now := time.Now()filename := fmt.Sprintf("%s.xlsx", now.Format("2006…

今日迷惑行为大赏

多测的意义何在?是好兄弟就 一起不换行我本地真的过编了1 我本地真的过编了2本地-LOCAL确实能过编,但你交上去呢

hostapd 配置文件示例

b模式:2.4G 20MHz# 接口和驱动程序设置 interface=wlan0 driver=nl80211 ctrl_interface=/var/run/hostapd​# 基本网络设置 ssid=TestAP hw_mode=b channel=11​# WPA身份验证设置 wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=12345678​# 加密算法设置 wpa_pairwise=CCMP rs…

SQL实战从在职到离职(1) 如何处理连续查询

书接上回,最近离职在家了实在无聊,除了看看考研的书,打打dnf手游,也就只能写写代码,结果昨晚挂在某平台的一个技术出售有人下单了,大概业务是需要帮忙辅导一些面试需要用到的SQL。 回想了下,在该平台接单SQL也超过3w元了,考察的也就是那几大类,我准备开一个新的专题,…

三,搭建环境:事务控制

三,搭建环境:事务控制 @目录三,搭建环境:事务控制声明式事务配置注解写法查询操作增删改操作声明式事务配置 在 demo-module01-web 的模块下的,spring-persist.xml 配置文件中开启基于注解的声明式事务支持<!-- 配置事务管理器 --><bean id="transactionMan…

手写MyBatis 重要基本原理框架

1. 手写MyBatis 重要基本原理框架 @目录1. 手写MyBatis 重要基本原理框架1.1 第一步:IDEA中创建模块1.2 第二步:资源工具类,方便获取指向配置文件的输入流1.3 第三步:定义SqlSessionFactoryBuilder类1.4 第四步:分析SqlSessionFactory类中有哪些属性1.5 第五步:定义JDBCT…

win10 开启wsl

开启 hypver-v查看wsl poweershellwsl --list --online下载分发版本 等待下载即可 poweershellwsl --install -d Ubuntu-20.04设置为wsl2 poweershellwsl --set-default-version 2使用wsl powershell wslmoberxterm设置到wsl moberxterm设置清华源 /etc/apt/source.list # 默认…

如何在 Kubernetes 里部署 JMX Exporter

本文会通过一个 Java 应用,演示 Prometheus JMX Exporter 在 Kubernetes 里的部署和配置方式。为了更好地理解 JMX Exporter,我们将使用 Spring Boot Java 应用程序并将所有 JMX 指标导出给 Prometheus。在本指南结束时,您将学习:使用 Java 应用镜像启动 JMX Exporter 将 J…

vue3 双向绑定 dialog

父组件:<ViewPopupForm v-model="isView"/> 子组件: const emit = defineEmits([update:modelValue])const props = defineProps({isView: Boolean,//接收父组件ParentComponent传过来的数组 });