# 创建一个名称为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 大连妇科医院哪个好 http://www.83692222.cn/
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博客 ” ,链接:https://blog.itpub.net/70005147/viewspace-2790338/ ,如需转载,请注明出处,否则将追究法律责任。