Bobcares

VPC CNI plugin fail to reach API Server | Resolved

PDF Header PDF Footer

VPC CNI plugin fail to reach API Server can be resolved with this handy guide from Bobcares. 

At Bobcares, we offer solutions for every query, big and small, as a part of our Server Management Service.

Let’s take a look at how our Support Team is ready to help customers when VPC CNI plugin fails to reach API Server.

How to resolve: VPC CNI plugin fail to reach API Server

If your VPC CNI plugin has been failing to reach the API server in Amazon EKS, you can stop worrying. Our Support Techs have come up with an innovative solution to help fix this specific issue.

In fact, this issue results when the ipamD daemon attempts to connect to the API Server before the kube-proxy adds the Kubernetes Service port. This results in the connection between the API Server and the ipamD times out. Our Support Engineer recommends troubleshooting the situation with these steps:

VPC CNI plugin fail to reach API Server
  • Check the ipamD and kube-proxy logs
  • Compare the timestamps between the ipamD and kube-proxy logs
  • Add an init container

How to check the ipamD and kube-proxy logs

If the connection between the API Server and the ipamD times out, we will notice the following error message in the ipamD logs:

"Failed to create client: error communicating with apiserver:

The kubeproxy generates iptables routes on the worker node for Kubernetes API Server endpoints. Once the kube=proxy creates the route, we will come across the following error message in the kube-proxy logs:

Adding new service port \"default/kubernetes:https\"

How to compare the timestamps between ipamD and kube-proxy logs

When we compare the timestamps between ipamD and kube-proxy logs, we will notice the connection timed out and fail in case of this error. For instance, in this example, the ipamD daemon has attempted to connect to the API Server at 2021-12-22T10:40:49.735Z.

{"level":"error","ts":"2021-12-22T10:40:49.735Z","caller":"aws-k8s-agent/main.go:28",
"msg":"Failed to create client: error communicating with apiserver: 
Get https://10.77.0.1:443/version?timeout=32s: dial tcp 10.77.0.1:443: i/o timeout"}

Correspondingly, we will notice the following message in the kube-proxy logs:

{"log":"I0922 10:41:15.267648       1 service.go:379] Adding new service port 
\"default/kubernetes:https\" at 10.77.0.1:443/TCP\n","stream":"stderr","time":"2021-12-22T10:40:49.26766844Z"}

This indicates that the kube-proxy was added to the Kubernetes Service port 2021-12-22T10:41:15.26766844Z.

How to add an init container

  1. First, we modify the aws-node specification in order with the following code to resolve the DNS for the Kubernetes Service name:
    $ kubectl -n kube-system edit daemonset/aws-node

    This results in the output:

    initContainers:
       - name: init-kubernetes-api
         image: busybox:1.28
         command: ['sh', '-c', "until nc -zv ${KUBERNETES_PORT_443_TCP_ADDR} 443; do echo waiting for kubernetes Service endpoint; sleep 2; done"]
  2. Next, we will use the following code to verify the aws-node pods has created the init containers
    $ kubectl get pods -n kube-system  -w

    This results in the following output:

    ...
        kube-proxy-smvfl                          0/1     Pending             0          0s
        aws-node-v68bh                            0/1     Pending             0          0s
        kube-proxy-smvfl                          0/1     Pending             0          0s
        aws-node-v68bh                            0/1     Pending             0          0s
        aws-node-v68bh                            0/1     Init:0/1            0          0s
        kube-proxy-smvfl                          0/1     ContainerCreating   0          0s
        kube-proxy-smvfl                          1/1     Running             0          6s
        aws-node-v68bh                            0/1     PodInitializing     0          9s
        aws-node-v68bh                            0/1     Running             0          16s
        aws-node-v68bh                            1/1     Running             0          53s

[Looking for a solution to another query? We are just a click away.]

Conclusion

In essence, our skilled Support Engineers at Bobcares demonstrated how to proceed if VPC CNI plugin fails to reach API Server.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

server management

Spend time on your business, not on your servers.

TALK TO US

Or click here to learn more.

Speed issues driving customers away?
We’ve got your back!

Privacy Preference Center

Necessary

Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

PHPSESSID - Preserves user session state across page requests.

gdpr[consent_types] - Used to store user consents.

gdpr[allowed_cookies] - Used to store user allowed cookies.

PHPSESSID, gdpr[consent_types], gdpr[allowed_cookies]
PHPSESSID
WHMCSpKDlPzh2chML

Statistics

Statistic cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.

_ga - Preserves user session state across page requests.

_gat - Used by Google Analytics to throttle request rate

_gid - Registers a unique ID that is used to generate statistical data on how you use the website.

smartlookCookie - Used to collect user device and location information of the site visitors to improve the websites User Experience.

_ga, _gat, _gid
_ga, _gat, _gid
smartlookCookie
_clck, _clsk, CLID, ANONCHK, MR, MUID, SM

Marketing

Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.

IDE - Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user.

test_cookie - Used to check if the user's browser supports cookies.

1P_JAR - Google cookie. These cookies are used to collect website statistics and track conversion rates.

NID - Registers a unique ID that identifies a returning user's device. The ID is used for serving ads that are most relevant to the user.

DV - Google ad personalisation

_reb2bgeo - The visitor's geographical location

_reb2bloaded - Whether or not the script loaded for the visitor

_reb2bref - The referring URL for the visit

_reb2bsessionID - The visitor's RB2B session ID

_reb2buid - The visitor's RB2B user ID

IDE, test_cookie, 1P_JAR, NID, DV, NID
IDE, test_cookie
1P_JAR, NID, DV
NID
hblid
_reb2bgeo, _reb2bloaded, _reb2bref, _reb2bsessionID, _reb2buid

Security

These are essential site cookies, used by the google reCAPTCHA. These cookies use an unique identifier to verify if a visitor is human or a bot.

SID, APISID, HSID, NID, PREF
SID, APISID, HSID, NID, PREF