Loading

×Sorry to interrupt
Uncaught ReferenceError: addCTracking is not defined
throws at https://kb.vmware.com/resource/KM_TealiumTrackingJS?v=0.5:100:1

Refresh

Cookie Preference Center

General Information on cookies

When you visit our website, we use cookies to ensure that we give you the best experience. This information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies by clicking on the different category headings to find out more and change your settings. However, blocking some types of cookies may impact your experience on the site and the services we are able to offer. Further information can be found in our

Cookie Policy.

Strictly Necessary

Strictly Necessary

Always Active

Strictly Necessary

Strictly necessary cookies are always enabled since they are essential for our website to function. They enable core functionality such as security, network management, and website accessibility. You can set your browser to block or alert you about these cookies, but this may affect how the website functions. For more information please visit www.aboutcookies.org or www.allaboutcookies.org.

Cookie Details‎

Performance

Performance

Performance

Performance cookies are used to analyze the user experience to improve our website by collecting and reporting information on how you use it. They allow us to know which pages are the most and least popular, see how visitors move around the site, optimize our website and make it easier to navigate.

Cookie Details‎

Please confirm your settings by refreshing the page.

Functional

Functional

Functional

Functional cookies help us keep track of your past browsing choices so we can improve usability and customize your experience. These cookies enable the website to remember your preferred settings, language preferences, location and other customizable elements such as font or text size. If you do not allow these cookies, then some or all of these services may not function properly.

Cookie Details‎

Advertising

Advertising

Advertising

Advertising cookies are used to send you relevant advertising and promotional information. They may be set through our site by third parties to build a profile of your interests and show you relevant advertisements on other sites. These cookies do not directly store personal information, but their function is based on uniquely identifying your browser and internet device.

Cookie Details‎

Advertising Cookies

Consent Leg.Interest

Select All Vendors

Select All Vendors

Select All Hosts

Select All

Clear Filters

Information storage and access

Apply

Confirm My Choices Reject All Allow All

My Subscriptions

Loading

Knowledge Base

Unable to communicate from the pod to itself when trying access the service IP that backs the service (67455)

Last Updated: 4/3/2019Categories: TroubleshootingTotal Views: 5151Language:
English

2 like this article

Subscribe to get an email
newsletter with new updates

2 people found this helpful Please provide article feedback:

Symptoms

Pod is unable to communicate to itself when it access the service IP that it backs.

Service is reachable from Node and other pod but not from the pod that backs it.

Purpose

This article explains about how to resolve communication issue from pod to itself when accessed through Service IP/DNS name.

Cause

This type of communication is defined as Hair pinning and it is disabled by default in Kubernetes.

When a service is created with the type ClusterIP/LoadBalancer pod won’t be able to access itself through its Service IP/DNS name.

Resolution

This is an expected behavior with Kubernetes and the NCP plugin.

Workaround

To workaround this issue, create service with the type Headless and access the service using the name from inside the pod.

Headless service can be used when we don’t need load-balancing and a single service IP. In this case, you can create “headless” services by specifying "None" for the cluster IP (.spec.clusterIP). For such Services, a cluster IP is not allocated, kube-proxy does not handle these services, and there is no load balancing or proxying done by the platform for them. How DNS is automatically configured depends on whether the service has selectors defined. For headless services that define selectors, the endpoints controller creates Endpoint records in the API, and modifies the DNS configuration to return A records (addresses) that point directly to the Pods backing the Service

You can deploy Headless service just the way ClusterIP/LoadBalancer is created, sample deployment file for reference.

==============
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
==============
Note: Modify the above Application name and the ports as per the requirement.

Create the deployment in a .yml or .yaml extension as below and paste the contents:
vi nginx_svc.yml

Once the deployment file is created, create the service resource using the below command:
kubectl create -f nginx_svc.yml

Check the Service resource using the below command:
kubectl get svc -n <namespace>

For example: root@pks-client:~/deployments/nginx# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.200.1   <none>        443/TCP   2d9h
nginx        ClusterIP   None           <none>        80/TCP    3s

Make sure the service is created without any ClusterIP as highlighted above.

Check the accessibility from inside the pod using the below command:
kubectl exec -it  <pod-name> sh
curl <service-name>

Detectable by VMware SkylineTM

Actions

Copy

link to clipboard
copied!

Print

Language:
English

Attachments

Additional Resources

No results for undefined

Ask The Community

Get answers quickly from VMware experts in the community

Post Subject

CONTINUE IN COMMUNITIES

Related Products:

VMware PKS

Related Versions:

VMware PKS 1.x

Take Our Survey

Support Assistant