<p>I am a begginer on kubernetes and I can see on the latest calico.yaml file (<a href="https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises#install-calico-with-kubernetes-api-datastore-50-nodes-or-less" rel="nofollow noreferrer">Install Calico on nodes</a>) the configuration for the listening default 9099 port.</p>
<p>I am deploying on a few nodes and that port (9099) is taken as other services are running in the background.</p>
<p>From the logs I can see:</p>
<pre class="lang-sh prettyprint-override"><code>2020-08-28 12:15:15.107 [ERROR][59] felix/health.go 246: Health endpoint failed, trying to restart it... error=listen tcp 127.0.0.1:9099: bind: address already in use
2020-08-28 12:15:16.108 [ERROR][59] felix/health.go 246: Health endpoint failed, trying to restart it... error=listen tcp 127.0.0.1:9099: bind: address already in use
2020-08-28 12:15:17.108 [ERROR][59] felix/health.go 246: Health endpoint failed, trying to restart it... error=listen tcp 127.0.0.1:9099: bind: address already in use
2020-08-28 12:15:18.109 [ERROR][59] felix/health.go 246: Health endpoint failed, trying to restart it... error=listen tcp 127.0.0.1:9099: bind: address already in use
</code></pre>
<p>The logs are coming from the pod:</p>
<pre class="lang-sh prettyprint-override"><code>kube-system              calico-node-d4ntt                               1/1     Running   0          9m41s
kube-system              calico-node-mjh4z                               0/1     Running   3          3m31s
kube-system              calico-node-p5lgf                               0/1     Running   2          3m34s
kube-system              calico-node-t4vmd                               0/1     Running   2          3m30s
</code></pre>
<p>How can we update this port? On the yml file I can not see the port.</p>
<p>I can see on the yml file the configuration:</p>
<pre class="lang-sh prettyprint-override"><code>listenPort:
                description: ListenPort is the port where BGP protocol should listen.
                  Defaults to 179
                maximum: 65535
                minimum: 1
</code></pre>
<p>But this is not the port that is blocking my deployment.</p>

<p>In short, you have to add containerPort parameter to calico-node container part of <code>calico.yaml</code>:</p>
<p>First download <code>calico.yaml</code> file:</p>
<pre class="lang-sh prettyprint-override"><code>curl https://docs.projectcalico.org/manifests/calico.yaml -O
</code></pre>
<p>There is a DaemonSet in this yaml file, which has a container named <code>calico-node</code>, add <code>DaemonSet.spec.template.spec.containers.ports.containerPort parameter</code> to yaml file and change its value to something you want (any port you want). Something like this:</p>
<pre class="lang-yaml prettyprint-override"><code>containers:
        # Runs calico-node container on each Kubernetes node. This
        # container programs network policy and routes on each
        # host.
        - name: calico-node
          image: calico/node:v3.16.1
          ports:
          - containerPort: 9090
</code></pre>
