首頁/ 汽車/ 正文

修改K8S service埠範圍

為了k8s和別的程式不起衝突,預設埠的範圍是 30000-32767 ,這裡面我們可以手動修改api-server的配置,缺點是可能佔用其它程式的埠或者與其他程式的埠產生衝突。

1、方法:修改APISERVER

1)在 /etc/kubernetes/manifests 目錄下找到 api server 的配置。

2)新增–service-node-port-range=80-32767” 這個配置,設定允許的埠,如下圖

3)vim /etc/kubernetes/manifests/kube-apiserver。yaml

apiVersion: v1

kind: Pod

metadata:

annotations:

kubeadm。kubernetes。io/kube-apiserver。advertise-address。endpoint: 192。168。10。6:6443

creationTimestamp: null

labels:

component: kube-apiserver

tier: control-plane

name: kube-apiserver

namespace: kube-system

spec:

containers:

- command:

- kube-apiserver

- ——advertise-address=192。168。10。6

- ——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

- ——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-issuer=https://kubernetes。default。svc。cluster。local

- ——service-account-key-file=/etc/kubernetes/pki/sa。pub

- ——service-account-signing-key-file=/etc/kubernetes/pki/sa。key

- ——service-cluster-ip-range=10。96。0。0/12

- ——tls-cert-file=/etc/kubernetes/pki/apiserver。crt

- ——tls-private-key-file=/etc/kubernetes/pki/apiserver。key

- --service-node-port-range=80-32767

image: registry。aliyuncs。com/google_containers/kube-apiserver:v1。22。5

imagePullPolicy: IfNotPresent

livenessProbe:

failureThreshold: 8

httpGet:

host: 192。168。10。6

path: /livez

port: 6443

scheme: HTTPS

initialDelaySeconds: 10

periodSeconds: 10

timeoutSeconds: 15

name: kube-apiserver

readinessProbe:

failureThreshold: 3

httpGet:

host: 192。168。10。6

path: /readyz

port: 6443

scheme: HTTPS

periodSeconds: 1

timeoutSeconds: 15

resources:

requests:

cpu: 250m

startupProbe:

failureThreshold: 24

httpGet:

host: 192。168。10。6

path: /livez

port: 6443

scheme: HTTPS

initialDelaySeconds: 10

periodSeconds: 10

timeoutSeconds: 15

volumeMounts:

- mountPath: /etc/ssl/certs

name: ca-certs

readOnly: true

- mountPath: /etc/pki

name: etc-pki

readOnly: true

- mountPath: /etc/kubernetes/pki

name: k8s-certs

readOnly: true

hostNetwork: true

priorityClassName: system-node-critical

securityContext:

seccompProfile:

type: RuntimeDefault

volumes:

- hostPath:

path: /etc/ssl/certs

type: DirectoryOrCreate

name: ca-certs

- hostPath:

path: /etc/pki

type: DirectoryOrCreate

name: etc-pki

- hostPath:

path: /etc/kubernetes/pki

type: DirectoryOrCreate

name: k8s-certs

status: {}

修改K8S service埠範圍

如果沒有發現 service-node-port-range 配置,可以手動加一個,然後填寫埠範圍,在這裡,將埠的範圍擴大到80 開始。

注意:三個master節點都要修改。

2、kube-apiserver引數說明

-v, --v int

日誌級別詳細程度的數字。

--logtostderr 預設值:true

在標準錯誤而不是檔案中輸出日誌記錄。

--bind-address string 預設值:"0.0.0.0"

用來監聽 ——secure-port 埠的 IP 地址。叢集的其餘部分以及 CLI/web 客戶端必須可以訪問所關聯的介面。如果為空白或未指定地址(0。0。0。0 或 ::),則將使用所有介面。

--secure-port int 預設值:6443

帶身份驗證和鑑權機制的 HTTPS 服務埠。不能用 0 關閉。

--advertise-address string

向叢集成員通知 apiserver 訊息的 IP 地址。這個地址必須能夠被叢集中其他成員訪問。如果 IP 地址為空,將會使用 ——bind-address, 如果未指定 ——bind-address,將會使用主機的預設介面地址。

--service-cluster-ip-range string

CIDR 表示的 IP 範圍用來為服務分配叢集 IP。此地址不得與指定給節點或 Pod 的任何 IP 範圍重疊。

--service-node-port-range <形式為 'N1-N2' 的字串> 預設值:30000-32767

保留給具有 NodePort 可見性的服務的埠範圍。例如:“30000-32767”。範圍的兩端都包括在內。

--etcd-servers strings

要連線的 etcd 伺服器列表(scheme://ip:port),以逗號分隔。

--etcd-cafile string

用於保護 etcd 通訊的 SSL 證書頒發機構檔案。

--etcd-certfile string

用於保護 etcd 通訊的 SSL 證書檔案。

--etcd-keyfile string

用於保護 etcd 通訊的 SSL 金鑰檔案。

--client-ca-file string

如果已設定,則使用與客戶端證書的 CommonName 對應的標識對任何出示由 client-ca 檔案中的授權機構之一簽名的客戶端證書的請求進行身份驗證。

--tls-cert-file string

包含用於 HTTPS 的預設 x509 證書的檔案。(CA 證書(如果有)在伺服器證書之後並置)。如果啟用了 HTTPS 服務,並且未提供 ——tls-cert-file 和 ——tls-private-key-file, 為公共地址生成一個自簽名證書和金鑰,並將其儲存到 ——cert-dir 指定的目錄中。

--tls-private-key-file string

包含匹配 ——tls-cert-file 的 x509 證書私鑰的檔案。

--kubelet-client-certificate string

TLS 的客戶端證書檔案的路徑。

--kubelet-client-key string

TLS 客戶端金鑰檔案的路徑。

--service-account-key-file strings

包含 PEM 編碼的 x509 RSA 或 ECDSA 私鑰或公鑰的檔案,用於驗證 ServiceAccount 令牌。指定的檔案可以包含多個鍵,並且可以使用不同的檔案多次指定標誌。如果未指定,則使用 ——tls-private-key-file。提供 ——service-account-signing-key 時必須指定。

--service-account-signing-key-file string

包含服務帳戶令牌頒發者當前私鑰的檔案的路徑。頒發者將使用此私鑰簽署所頒發的 ID 令牌。

--service-account-issuer strings

服務帳號令牌頒發者的識別符號。頒發者將在已辦法令牌的 “iss” 宣告中檢查此識別符號。此值為字串或 URI。如果根據 OpenID Discovery 1。0 規範檢查此選項不是有效的 URI,則即使特性門控設定為 true, ServiceAccountIssuerDiscovery 功能也將保持禁用狀態。強烈建議該值符合 OpenID 規範:https://openid。net/specs/openid-connect-discovery-1_0。html。實踐中,這意味著 service-account-issuer 取值必須是 HTTPS URL。還強烈建議此 URL 能夠在 {service-account-issuer}/。well-known/openid-configuration 處提供 OpenID 發現文件。當此值被多次指定時,第一次的值用於生成令牌,所有的值用於確定接受哪些發行人。

--kubelet-preferred-address-types strings 預設值:Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP

用於 kubelet 連線的首選 NodeAddressTypes 列表。

--enable-admission-plugins stringSlice

除了預設啟用的外掛(NamespaceLifecycle、LimitRanger、ServiceAccount、TaintNodesByCondition、PodSecurity、Priority、DefaultTolerationSeconds、DefaultStorageClass、StorageObjectInUseProtection、PersistentVolumeClaimResize、RuntimeClass、CertificateApproval、CertificateSigning、CertificateSubjectRestriction、DefaultIngressClass、MutatingAdmissionWebhook、ValidatingAdmissionWebhook、ResourceQuota)之外要啟用的外掛。

取值為逗號分隔的准入外掛列表:

AlwaysAdmit、AlwaysDeny、AlwaysPullImages、CertificateApproval、CertificateSigning、CertificateSubjectRestriction、DefaultIngressClass、DefaultStorageClass、DefaultTolerationSeconds、DenyServiceExternalIPs、EventRateLimit、ExtendedResourceToleration、ImagePolicyWebhook、LimitPodHardAntiAffinityTopology、LimitRanger、MutatingAdmissionWebhook、NamespaceAutoProvision、NamespaceExists、NamespaceLifecycle、NodeRestriction、OwnerReferencesPermissionEnforcement、PersistentVolumeClaimResize、PersistentVolumeLabel、PodNodeSelector、PodSecurity、PodSecurityPolicy、PodTolerationRestriction、Priority、ResourceQuota、RuntimeClass、SecurityContextDeny、ServiceAccount、StorageObjectInUseProtection、TaintNodesByCondition、ValidatingAdmissionWebhook。

該標誌中外掛的順序無關緊要。

--authorization-mode stringSlice 預設值:"AlwaysAllow"

在安全埠上進行鑑權的外掛的順序列表。逗號分隔的列表:AlwaysAllow、AlwaysDeny、ABAC、Webhook、RBAC、Node。

--enable-bootstrap-token-auth

啟用以允許將 “kube-system” 名字空間中型別為 “bootstrap。kubernetes。io/token” 的 Secret 用於 TLS 引導身份驗證。

--requestheader-client-ca-file string

在信任請求頭中以 ——requestheader-username-headers 指示的使用者名稱之前, 用於驗證接入請求中客戶端證書的根證書包。警告:一般不要假定傳入請求已被授權。

--proxy-client-cert-file string

當必須呼叫外部程式以處理請求時,用於證明聚合器或者 kube-apiserver 的身份的客戶端證書。包括代理轉發到使用者 api-server 的請求和呼叫 Webhook 准入控制外掛的請求。Kubernetes 期望此證書包含來自於 ——requestheader-client-ca-file 標誌中所給 CA 的簽名。該 CA 在 kube-system 名稱空間的 “extension-apiserver-authentication” ConfigMap 中公開。從 kube-aggregator 收到呼叫的元件應該使用該 CA 進行各自的雙向 TLS 驗證。

--proxy-client-key-file string

當必須呼叫外部程式來處理請求時,用來證明聚合器或者 kube-apiserver 的身份的客戶端私鑰。這包括代理轉發給使用者 api-server 的請求和呼叫 Webhook 准入控制外掛的請求。

--requestheader-allowed-names strings

此值為客戶端證書通用名稱(Common Name)的列表;表中所列的表項可以用來提供使用者名稱, 方式是使用 ——requestheader-username-headers 所指定的頭部。如果為空,能夠透過 ——requestheader-client-ca-file 中機構 認證的客戶端證書都是被允許的。

--requestheader-group-headers strings

用於查驗使用者組的請求頭部列表。建議使用 X-Remote-Group。

--requestheader-extra-headers-prefix strings

用於查驗請求頭部的字首列表。建議使用 X-Remote-Extra-。

--requestheader-username-headers strings

用於查驗使用者名稱的請求頭頭列表。建議使用 X-Remote-User。

--token-auth-file string

如果設定該值,這個檔案將被用於透過令牌認證來保護 API 服務的安全埠。

官方文件參考:

https://kubernetes。io/zh-cn/docs/reference/command-line-tools-reference/kube-apiserver/

相關文章

頂部