10
respostas

Como mudar o rango do NodePort

Tenho entendido que o NodePort mapeia uma porta para alguma outra porta do host no rango 30000–32767. So que esse rango é um rango por default. Estive procurando na Intenert como fazer esta mudança do valor e ao parecer tem que trocar a flag --service-node-port-range do kube-apiserver (link de referencia https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/). So que o problema está em que não sei como mudar essa flag. Poderia favor me ajudar/orientar quais são os passos que devo fazer para trocar uma flag destas?

10 respostas

Adicionalmente, achei esta resposta no Google https://stackoverflow.com/questions/50352621/where-is-kube-apiserver-located, Ali, eles falam que To configure kube-apiserver command line arguments you need to modify /etc/kubernetes/manifests/kube-apiserver.yaml on your master. Mas infelizmente não sei como chegar ate esse arquivo.

Olá Alvaro, tudo bem? Para mudar o range do NodePort no Kubernetes você precisa alterar a flag --service-node-port-range do kube-apiserver. Para fazer isso, você pode seguir os seguintes passos:

  • Acesse o nó master do seu cluster Kubernetes.
  • Edite o arquivo kube-apiserver.yaml que está localizado em /etc/kubernetes/manifests/.
  • Adicione a flag --service-node-port-range com o range de portas desejado, por exemplo, --service-node-port-range=20000-32767.
  • Salve o arquivo kube-apiserver.yaml e reinicie o kube-apiserver para aplicar as mudanças.
  • Você pode reiniciar o kube-apiserver usando o comando kubectl restart kube-apiserver. Certifique-se de ter as permissões necessárias para editar o arquivo e reiniciar o kube-apiserver.

como posso acessar ao nó do master do meu cluster Kubernetes? poderia favor me dar os passos ?

Depende, se você estiver usando um provedor cloud (como AWS, GCP, Azure, etc.), você precisa acessar o console e encontrar o IP público ou DNS do nó master do seu cluster.

No caso do Amazon Elastic Kubernetes Service (EKS), o acesso ao nó do master do cluster Kubernetes é gerenciado pelo serviço da AWS. Para acessar o nó do master, você pode usar o AWS Management Console ou a AWS CLI.

aws eks list-clusters
aws eks update-kubeconfig --name <nome-do-cluster>
kubectl get nodes

Este comando kubectl get nodes lista todos os nós do seu cluster EKS, incluindo o nó do master.

No meu caso, simplesmente estou testando na minha maquina local, eu consigo ver o nó master pelo comando kubectl get nodes, porém eu não sei como acessar a ele.

kubectl get nodes NAME STATUS ROLES AGE VERSION docker-desktop Ready control-plane 5d19h v1.25.2

ali eu não sei como acessar a esse node. Pelo comando do kubectl exec não funciona. Poderia favor me dizer como é esse processo. Desde já agradeço.

No caso de um cluster local como o Docker Desktop, o nó master é a máquina local. Para acessar o nó master, você pode executar um shell dentro do container do nó master usando o comando kubectl:

kubectl exec -it <nome do pod do nó master> sh

O nome do pod do nó master pode ser encontrado executando o comando:

kubectl get pods -n kube-system -l component=kube-apiserver -o jsonpath='{.items[*].metadata.name}'

Este comando lista todos os pods no namespace kube-system que têm o rótulo component=kube-apiserver e usa o formato JSON para extrair o nome de cada um deles. O resultado será algo como:

kube-apiserver-docker-desktop

Você pode substituir este nome no primeiro comando para acessar o shell do nó master:

kubectl exec -it kube-apiserver-docker-desktop sh

Agora você deve estar dentro do container do nó master e pode executar comandos dentro dele.

Ao executar o comando

kubectl get pods -n kube-system -l component=kube-apiserver -o jsonpath='{.items[*].metadata.name}'

o pod name que é apresetando é kube-apiserver-docker-desktop

Depois executei o comando

kubectl exec -it kube-apiserver-docker-desktop sh

e o resultado é o seguinte

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
Error from server (NotFound): pods "kube-apiserver-docker-desktop" not found

Quis reiniciar o kube-apiserver conforme o comando que vc indicou antes, o

kubectl restart kube-apiserver

mas o resultado foi

error: unknown command "restart" for "kubectl"

so agregando uma informaçao,

eu rodei o comando

kubectl get pods -n kube-system

NAME READY STATUS RESTARTS AGE coredns-95db45d46-6bvsx 1/1 Running 4 (165m ago) 5d20h coredns-95db45d46-l62xm 1/1 Running 4 (165m ago) 5d20h etcd-docker-desktop 1/1 Running 5 (165m ago) 5d20h kube-apiserver-docker-desktop 1/1 Running 10 (165m ago) 5d20h kube-controller-manager-docker-desktop 1/1 Running 7 (165m ago) 5d20h kube-proxy-d7vdj 1/1 Running 4 (165m ago) 5d20h kube-scheduler-docker-desktop 1/1 Running 12 (165m ago) 5d20h metrics-server-55dd79d7bf-xk89g 1/1 Running 1 (165m ago) 20h storage-provisioner 1/1 Running 20 (163m ago) 5d20h vpnkit-controller 1/1 Running 256 (2m47s ago) 5d20h

tentei tambem rodar so o describe naquele pod master

 kubectl describe pods kube-apiserver-docker-desktop

mas do mesmo jeito ele fala que não encontra esse pod, portanto tentei o seguinte

kubectl describe pods -n kube-system kube-apiserver-docker-desktop

desta vez sim descrebe o pod master, portanto tentei agora sim

kubectl exec -n kube-system -it kube-apiserver-docker-desktop sh

porem o resultado é

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. OCI runtime exec failed: exec failed: unable to start container process: exec: "sh": executable file not found in $PATH: unknown command terminated with exit code 126

tentei com o bash ao final, mas deu o mesmo

Boa tarde, Otávio Prado, poderia favor me orientar nos passos ? infelizmente não consegui ate agora entrar no pod kube-apiserver-docker-desktop. Me parece que a interação com esse pod é unicamente chamando a aplicação em ele, kube-apiserve.

 kubectl exec -it -n kube-system kube-apiserver-docker-desktop kube-apiserver --help

ali mostra alguns comandos mas não consegui como mudar a tag --service-node-port-range