K8S中如何跨namespace 访问服务?为什么ping不通ClusterIP?

1、K8S中如何跨namespace 访问服务?

2、在Pod中为什么ping不通ClusterIP?

简述

??????? Rancher2.0中的一个用户,在K8S环境中,创建两个namespace,对应用进行分割管理,在一个namespace的pod中,如何访问另一个namespace中的服务?--K8S使用kube-DNS实现服务发现功能的,可以通过DNS名称访问服务名。

??????? 在K8S中,部署一个带ClusterIP的服务,供集群内部网络访问。为什么这个ClusterIP无法ping通?--ClusterIP是IPtable规则,不是绑定在网络接口上的,服务可以访问,但ping不通ClusterIP。


演示截图

图1-创建一个包含3台主机、用于演示的集群环境

图2-在命名空间namespace111中,创建一个nginx工作负载,端口映射的运行模式为集群IP

图3-再在另一个命名空间namespace222中,创建一个普通的Ubutnu工作负载

图4-在服务发现页面中,可以看到,已自动在2个命名空间中创建2条服务记录

图5-进入2个Pod中,验证不同namespace可以互相访问,集群IP不可以ping,但ClusterIP对应的服务可以访问。

图6-网上介绍kubeDNS的文章

图7-网上关于ClusterIP相关的帖子及文章

参考链接:

kube-dns 和服务发现

https://www.cnblogs.com/allcloud/p/7614123.html

kubernetes的service的cluster-ip无法访问

http://dockone.io/question/1086

谈谈kubernets的service组件的Virtual IP

https://ieevee.com/tech/2017/01/20/k8s-service.html

原文地址:http://blog.51cto.com/10321203/2130019

时间: 2024-07-31 10:57:06

K8S中如何跨namespace 访问服务?为什么ping不通ClusterIP?的相关文章

jsonp跨域访问服务

前段时间在做产品开发的时候,需要与公司网站那边进行交互,我们所开发的产品上线后是放在一个域名下,公司网站那块是在另一个域名下,这样在页面中调用 网站那边的接口时就存在跨域的问题,当时为了不修改网站那边的接口,所以采用在服务端通过webservice方式进行调用网站接口,问题也很快解决了,当时我就在想 如果需要在js中直接访问的话,就涉及到到跨域的问题,那么怎么做才能解决这个问题呢,我上网找了一些资料,最后采用的是jsonp的方式来解决的.下面我来给大家分享下 用jsonp方式解决跨域问题.分为以

asp.net中WebResponse 跨域访问示例

前两天,一个朋友让我帮他写这样一个程序:在asp.net里面访问asp的页面,把数据提交对方的数据库后,根据返回的值(返回值为:OK或ERROR),如果为OK再把填入本地数据库.当时,想当然,觉得很简单,用js的xmlhttp ,如果根据response 的值是“OK”就执行提交本地数据库.很快写完发过去,让朋友试试,一试发现不行,后来一问,原来是跨域访问,我给忽略了,于是让朋友把asp改成web service,可朋友说程序是合作公司做的,只会asp,不会用web service ,狂晕ing

Geoserver通过ajax跨域访问服务数据的方法(含用户名密码认证的配置方式)

Goeserver数据有两种,一种需进行用户密码的权限认证,一种无须用户密码.对于网上跨域访问Geoserver数据的种种方法,对这2种数据并非通用. 笔者将Geoserver官方下载的Geoserver.war包部署到linux服务器,通过前端 ajax 访问geoserver数据失败,其中包含跨域问题和用户名密码认证问题,查询网上各类方法进行尝试,结果浏览器控制台分别报出了401,403和跨域错误提示.其中: 401错误:ajax未进行用户名密码验证导致: 403错误:用户名密码验证失败导致

Asp.Net MVC 中实现跨域访问

在ASP.Net webapi中可以使用  Microsoft.AspNet.WebApi.Cors  来实现: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // New code config.EnableCors(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: &

如何解决WebSocket-Sharp在Unity3d中无法跨与访问不同网断服务器

我们需要使用 Socket Policy Server. Unity3D 包含了一个简单的 Socket Policy Server (sockpol.exe). 你需要在启动你的应用之前启动它 下面是在我们的环境中,通过命令行打开服务器(Unity 4.2, Win 8). >cd C:\Program Files (x86)\Unity\Editor\Data\Tools\SocketPolicyServer>sockpol.exe --all 你需要在调用WebSocket.Connec

Kubernetes中,通过Service访问Pod快速入门

一.背景 理想状态下,我们可以认为Kubernetes Pod是健壮的.但是,理想与现实的差距往往是非常大的.很多情况下,Pod中的容器可能会因为发生故障而死掉.Deployment等Controller会通过动态创建和销毁Pod来保证应用整体的健壮性.众所周知,每个Pod都拥有自己的IP地址,当新的Controller用新的Pod替代发生故障的Pod时,我们会发现,新的IP地址可能跟故障的Pod的IP地址可能不一致.此时,客户端如何访问这个服务呢?Kubernetes中的Service应运而生

实现硬件访问服务

一. 1.定义硬件访问服务接口(为了进程间通信) ~/android-2.3_r1/frameworks/base ----Android.mk ----/core/java/android/os/IFregService.aidl Android系统提供了一种描述语言来定义具有跨进程访问能力的服务接口,这种描述语言称为Android接口描述语言(AIDL). IFregService.aidl package android.os; interface IFregService { void

c#中如何跨线程调用windows窗体控件?(from www.sysoft.cc)

我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题 首先来看传统方法: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(ThreadFuntion); t

开发Android硬件访问服务

在http://blog.csdn.net/getnextwindow/article/details/47731597中,为Android系统添加了HAL模块,开发好一个硬件抽象层以后,我们通常还需要在应用程序框架中实现一个硬件访问服务.硬件访问服务通过硬件抽象层(HAL)模块来为应用程序提供读写操作.由于硬件抽象层使用c++开发,而应用程序框架中的硬件访问服务是Java语言开发的,因此,硬件访问服务必须通过JNI来调用抽象层模块的接口. Android系统的硬件访问服务通常运行在系统进程Sy