【Kubernetes】kubectl create/expose對deployment名字校驗前後不一致問題

whisperrr發表於2021-09-03

  # 建立一個名稱為nginx-1.16的deployment,沒有任何報錯,沒有觸發校驗規則

  $ kubectl create deployment nginx-1.16 --replicas=3 --image=nginx:1.16 -n load-balance

  deployment.apps/nginx-1.16 created

  # 接著建立Service,可以發現在為這個nginx-1.16的deployment建立service的時候,被正則校驗出nginx-1.16因含有小數點而建立失敗

  $ kubectl expose deployment nginx-1.16 --port=80 --target-port=8080 --type=NodePort -n load-balance

  The Service "nginx-1.16" is invalid: metadata.name: Invalid value: "nginx-1.16": a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')

  # 換個deployment的名字,提示找不到(很顯然找不到!)

  $ kubectl expose deployment nginx-116 --port=80 --target-port=8080 --type=NodePort -n load-balance

  Error from server (NotFound): deployments.apps "nginx-116" not found

  # 主動設定一個服務名之後,服務啟動就成功了,說明如果不指定--name服務名,那會把deployment的名字作為服務名

  $ kubectl expose deployment nginx-1.16 --name=nginx116 --port=80 --target-port=8080 --type=NodePort -n load-balance

  service/nginx116 exposed

  # kubectl version 大連婦科醫院哪個好  

  Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f79527be4afd95bf39", GitTreeState:"clean", BuildDate:"2021-07-15T21:04:39Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}

  Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f79527be4afd95bf39", GitTreeState:"clean", BuildDate:"2021-07-15T20:59:07Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}

  這個校驗邏輯就很詭異了,既然nginx-1.16這個含有小數點的deployment不能建立服務(程式設計時,要麼隨機生成一個服務名,第二種是用deploy的名字作為服務名),現在很明顯是用了deployment的名字作為服務名了。所以,在執行 kubectl create deployment 和 kubectl expose deployment 的時候,應該在create、expose時,對deployment的名字做統一的校驗。

  舉個不恰當的栗子,比如:A君是失信老賴,按照法律規定,A君是不準乘坐飛機、高鐵。但是,某一天當警察在高鐵上發現A君已經拿著購買的高鐵票,在高鐵上坐著,準備出發旅遊了。那問題就來了,理論上在老賴購票的時候,就應該對其身份進行驗證,然後禁止其購票。這才是合理的校驗邏輯!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2790338/,如需轉載,請註明出處,否則將追究法律責任。

相關文章