gpt4 book ai didi

kubernetes - 如何更改 Mac(docker-desktop)上的默认节点端口范围?

转载 作者:行者123 更新时间:2023-12-02 11:56:43 25 4
gpt4 key购买 nike

如何更改 Mac(docker-desktop)上的默认节点端口范围?

我想更改 Mac 上的默认节点端口范围。是否可以?我很高兴找到这篇文章:http://www.thinkcode.se/blog/2019/02/20/kubernetes-service-node-port-range .由于我找不到/etc/kubernetes/manifests/kube-apiserver.yaml在我的环境中,我试图通过运行 sudo kubectl edit pod kube-apiserver-docker-desktop --namespace=kube-system 来实现我想要做的事情。并添加参数--service-node-port-range=443-22000 .但是当我试图保存它时,我得到了以下错误:

# pods "kube-apiserver-docker-desktop" was not valid:
# * spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds` or `spec.tolerations` (only additions to existing tolerations)

(即使我不触摸端口 443,我也会遇到同样的错误。)有人可以分享他/她的想法或经验吗?谢谢!

附加:
skwok-mbp:kubernetes skwok$ kubectl get deployment -A
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
docker compose 1/1 1 1 15d
docker compose-api 1/1 1 1 15d
ingress-nginx nginx-ingress-controller 1/1 1 1 37m
kube-system coredns 2/2 2 2 15d
skwok-mbp:kubernetes skwok$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default fortune-configmap-volume 2/2 Running 4 14d
default kubia-2qzmm 1/1 Running 2 15d
docker compose-6c67d745f6-qqmpb 1/1 Running 2 15d
docker compose-api-57ff65b8c7-g8884 1/1 Running 4 15d
ingress-nginx nginx-ingress-controller-756f65dd87-sq6lt 1/1 Running 0 37m
kube-system coredns-fb8b8dccf-jn8cm 1/1 Running 6 15d
kube-system coredns-fb8b8dccf-t6qhs 1/1 Running 6 15d
kube-system etcd-docker-desktop 1/1 Running 2 15d
kube-system kube-apiserver-docker-desktop 1/1 Running 2 15d
kube-system kube-controller-manager-docker-desktop 1/1 Running 29 15d
kube-system kube-proxy-6nzqx 1/1 Running 2 15d
kube-system kube-scheduler-docker-desktop 1/1 Running 30 15d

最佳答案

更新 : example从文档中显示了一种在 Minikube 启动期间调整 apiserver 参数的方法:

minikube start --extra-config=apiserver.service-node-port-range=1-65535
--额外配置 : 一组 key=value描述可以传递给不同组件的配置的对。关键应该是'。分开,点之前的第一部分是应用配置的组件。有效组件是: kubelet , apiserver , controller-manager , etcd , proxy , scheduler . link
可用选项列表可在 CLI documentation 中找到。

另一种改变方式 kube-apiserver Mac 上 Docker-for-desktop 的参数:
  • 登录 Docker 虚拟机:
     $ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

    #(you can also use privileged container for the same purpose)
    docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
    #or
    docker run --rm -it --privileged --pid=host walkerlee/nsenter -t 1 -m -u -i -n sh
    # as suggested here: https://forums.docker.com/t/is-it-possible-to-ssh-to-the-xhyve-machine/17426/5
    # in case of minikube use the following command:
    $ minikube ssh
  • 编辑 kube-apiserver.yaml(它是静态 pod 之一,它们是由 kubelet 使用/etc/kubernetes/manifests 中的文件创建的)
     $ vi /etc/kubernetes/manifests/kube-apiserver.yaml
    # for minikube
    $ sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
  • 将以下行添加到 pod 规范中:
     spec:
    containers:
    - command:
    - kube-apiserver
    - --advertise-address=192.168.65.3
    ...
    - --service-node-port-range=443-22000 # <-- add this line
    ...
  • 保存并退出。 Pod kube-apiserver 将使用新参数重新启动。
  • 退出 Docker 虚拟机(对于 screen:Ctrl-a,k,对于容器:Ctrl-d)

  • 检查结果:
    $ kubectl get pod kube-apiserver-docker-desktop -o yaml -n kube-system | less
    创建简单的部署并使用服务公开它:
    $ kubectl run nginx1 --image=nginx --replicas=2
    $ kubectl expose deployment nginx1 --port 80 --type=NodePort
    $ kubectl get svc
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 14d
    nginx1 NodePort 10.99.173.234 <none> 80:14966/TCP 5s
    如您所见,NodePort 是从新范围中选择的。
    还有其他 ways暴露你的容器: HostNetwork, HostPort , MetalLB
    您需要添加正确的 security context为此,请查看 minikube 中的 ingress 插件是如何工作的,例如。
    ...
    ports:
    - containerPort: 80
    hostPort: 80
    protocol: TCP
    - containerPort: 443
    hostPort: 443
    protocol: TCP
    ...
    securityContext:
    capabilities:
    add:
    - NET_BIND_SERVICE
    drop:
    - ALL

    关于kubernetes - 如何更改 Mac(docker-desktop)上的默认节点端口范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57582980/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com