zoukankan      html  css  js  c++  java
  • 修改NodePort的范围

    在 Kubernetes 集群中,NodePort 默认范围是 30000-32767,某些情况下,因为您所在公司的网络策略限制,您可能需要修改 NodePort 的端口范围

    修改kube-apiserver.yaml

    使用 kubeadm 安装 K8S 集群的情况下,您的 Master 节点上会有一个文件 /etc/kubernetes/manifests/kube-apiserver.yaml,修改此文件,向其中添加 --service-node-port-range=20000-22767 (请使用您自己需要的端口范围),如下所示:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        component: kube-apiserver
        tier: control-plane
      name: kube-apiserver
      namespace: kube-system
    spec:
      containers:
      - command:
        - kube-apiserver
        - --advertise-address=172.17.216.80
        - --allow-privileged=true
        - --authorization-mode=Node,RBAC
        - --client-ca-file=/etc/kubernetes/pki/ca.crt
        - --enable-admission-plugins=NodeRestriction
        - --enable-bootstrap-token-auth=true
        - --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
        - --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
        - --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
        - --etcd-servers=https://127.0.0.1:2379
        - --insecure-port=0
        - --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
        - --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
        - --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
        - --requestheader-allowed-names=front-proxy-client
        - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
        - --requestheader-extra-headers-prefix=X-Remote-Extra-
        - --requestheader-group-headers=X-Remote-Group
        - --requestheader-username-headers=X-Remote-User
        - --secure-port=6443
        - --service-account-key-file=/etc/kubernetes/pki/sa.pub
        - --service-cluster-ip-range=10.96.0.0/12
        - --service-node-port-range=20000-22767  # 新增这一行配置
        - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
        - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.16.0
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 8
          httpGet:
            host: 172.17.216.80
            path: /healthz
            port: 6443
            scheme: HTTPS
          initialDelaySeconds: 15
          timeoutSeconds: 15
      ...
    
    

    重启apiserver

    # 获得 apiserver 的 pod 名字
    export apiserver_pods=$(kubectl get pods --selector=component=kube-apiserver -n kube-system --output=jsonpath={.items..metadata.name})
    # 删除 apiserver 的 pod
    kubectl delete pod $apiserver_pods -n kube-system
    

    验证结果

    kubectl describe pod $apiserver_pods -n kube-system
    

    输出结果如下所示:(此时,我们可以看到,apiserver 已经使用新的命令行参数启动)

    ...
        Host Port:     <none>
        Command:
          kube-apiserver
          --advertise-address=172.17.216.80
          --allow-privileged=true
          --authorization-mode=Node,RBAC
          --client-ca-file=/etc/kubernetes/pki/ca.crt
          --enable-admission-plugins=NodeRestriction
          --enable-bootstrap-token-auth=true
          --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
          --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
          --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
          --etcd-servers=https://127.0.0.1:2379
          --insecure-port=0
          --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
          --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
          --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
          --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
          --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
          --requestheader-allowed-names=front-proxy-client
          --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
          --requestheader-extra-headers-prefix=X-Remote-Extra-
          --requestheader-group-headers=X-Remote-Group
          --requestheader-username-headers=X-Remote-User
          --secure-port=6443
          --service-account-key-file=/etc/kubernetes/pki/sa.pub
          --service-cluster-ip-range=10.96.0.0/12
          --service-node-port-range=20000-22767 # 注意查看是否有这一行
          --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
          --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
        State:          Running
          Started:      Mon, 11 Nov 2019 21:31:39 +0800
        Ready:          True
        Restart Count:  0
        Requests:
          cpu:        250m
      ...
    
    

    注意

    • 对于已经创建的NodePort类型的Service,您需要删除重新创建
    • 如果您的集群有多个 Master 节点,您需要逐个修改每个节点上的 /etc/kubernetes/manifests/kube-apiserver.yaml 文件,并重启 apiserver
  • 相关阅读:
    python3之Django内置模板标签和过滤器
    JavaScript(1)
    python3之Django基础篇
    CSS
    HTML
    python3之SQLAlchemy
    python3之memcached
    web服务器-nginx虚拟主机
    web服务器-nginx默认网站
    web服务器-Nginx下载限速
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12973601.html
Copyright © 2011-2022 走看看