【Kubernetes】kubectl create/expose對deployment名字校驗前後不一致問題
# 建立一個名稱為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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- minikube與kubectl版本不一致問題
- golang 分片上傳md5校驗不一致問題Golang
- Kubernetes:瞭解 Deployment
- kubernetes物件之deployment物件
- Spring boot 生成動態驗證碼並前後端校驗Spring Boot後端
- 前後端實現登入token攔截校驗後端
- Kubernetes Deployment 最佳實踐
- 檔案下載時前後臺MD5校驗
- 前端資料校驗後,後端介面是否需要再次校驗?前端後端
- Kubernetes Deployment 原始碼分析(二)原始碼
- Kubernetes Deployment 原始碼分析(一)原始碼
- 從零開始掌握Kubernetes: Pod和Deployment的幕後故事
- kubectl 的 create 和 apply 有什麼區別APP
- laravel 校驗規則 Rule::in 等對中文字元不友好的問題Laravel字元
- Kubernetes之kubectl常用命令
- kubernetes實踐之三十一:kubectl
- rancher 的 deployment does not have minimum availability 問題AI
- 企業落地Kubernetes的問題與對策
- SAP發票校驗前收貨後是否能更改物料價格
- 利用 Tmux 和 kubectl 解決 Kubernetes 故障UX
- 關於FileDownloader檔案長度校驗的問題
- kubernetes執行應用1之Deployment
- Kubernetes 實戰——升級應用(Deployment)
- SpringBoot解決前後端跨域問題Spring Boot後端跨域
- AntD框架上傳檔案前校驗資訊:選擇檔案前進行內容校驗並提示框架
- create-react-app綜合問題ReactAPP
- 前後端分離解決跨域問題後端跨域
- 好程式設計師web前端學習路線解答前後端對接問題程式設計師Web前端後端
- eslint 當前檔案 不校驗 /* eslint-disable */EsLint
- 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南
- Kubernetes安裝之五:配置kubectl客戶端客戶端
- kubernetes實踐之五十五:kubectl之配置kubeconfig
- 前後端分離,後端用springboot遇到的跨域問題後端Spring Boot跨域
- java前後端開發常見問題彙總Java後端
- Kubernetes(k8s)控制器(一):deploymentK8S
- Kubernetes筆記(六):瞭解控制器 —— Deployment筆記
- 圖解kubernetes控制器Deployment核心機制圖解
- 淺入Kubernetes(12):Deployment 的升級、回滾