如何使用新部署更新入口控制器



我是azure kubernetes的新手!现在我只是在摆弄它,试图弄清楚如何使用kubectl创建东西。我已经设置了集群,并且使用注册表中的现有容器创建了几个pod。我还使用azure应用网关创建了一个入口控制器。

接下来我要做的是使用部署yaml文件向集群添加一组新的复制pod,其中有一个不同的映像,并将新的服务端点添加到入口控制器。请记住,我对此非常陌生,所以我不确定这是否是您应该做的,或者您是否应该先创建pod/服务,然后更改入口控制器?或者您应该为入口创建一个单独的部署文件并自行重新创建它?

无论如何,这是我的部署yaml文件。当我尝试使用: 运行它时
kubectl apply -f deployment.yml

我只是得到错误:

error: error validating "deployment.yml": error validating data: invalid object to validate; if you choose to ignore these errors, turn validation off with --validate=false

所以我想我的问题是,我这样做对吗?如果这是我应该添加到集群的方式,你知道这个yaml有什么问题吗?

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: new-kuber-endpoint
namespace: kuber-ut
spec:
replicas: 2
selector:
matchLabels:
app: new-kuber-endpoint
template:
metadata:
labels:
app: new-kuber-endpoint
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: amica-endpoint
image: mycontainerreg.azurecr.io/new-endpoint:20220707.1
ports:
- containerPort: 80
resources:
requests:
cpu: '0'
memory: '0'
limits:
cpu: '256'
memory: 11400G
---
apiVersion: v1
kind: Service
metadata:
name: new-kuber-endpoint-service
namespace: kuber-ut
spec:
type: LoadBalancer
ports:
- targetPort: 80
name: port80
port: 80
protocol: TCP
selector:
app: new-kuber-endpoint
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kuberdevingress
namespace: kuber-ut
uid: d9d490f0-1d3a-4433-bb03-7f1ba0dc611f
resourceVersion: '1490171'
generation: 3
spec:
rules:
- http:
paths:
- path: /old
pathType: Prefix
backend:
service:
name: old-endpoint-service
port:
number: 80
- path: /new
pathType: Prefix
backend:
service:
name: new-kuber-endpoint-service
port:
number: 80
status:
loadBalancer:
ingress:
- ip: <IP goes here>

我从azure门户复制了kuberdevingress部分,所以我不确定我将如何重新创建该入口?

您可以使用单个YAML文件,并根据需要为您的不同资源创建多个文件来管理它。

如果要更新部署,只需更新YAML并运行

kubectl apply -f <filename>.yaml 

此外,您的YAML还有一个问题,如果您不为部署、服务和入口管理三个不同的文件,则可以使用YAML中的---来分离资源

apiVersion: apps/v1
kind: Deployment
metadata:
name: new-kuber-endpoint
namespace: kuber-test
spec:
replicas: 2
selector:
matchLabels:
app: new-kuber-endpoint
template:
metadata:
labels:
app: new-kuber-endpoint
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: new-endpoint
image: mycontainerregistry.azurecr.io/new-endpoint:20220707.1
ports:
- containerPort: 80
resources:
requests:
cpu: '0'
memory: '0'
limits:
cpu: '256'
memory: 11400G
---
apiVersion: v1
kind: Service
metadata:
name: new-kuber-endpoint-service
namespace: kuber-test
spec:
type: LoadBalancer
ports:
- targetPort: 80
name: port80
port: 80
protocol: TCP
selector:
app: new-kuber-endpoint
---
apiVersion: v1
kind: Ingress
metadata:
name: kuberdevingress
namespace: kuber-test
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: old-endpoint-service
port:
number: 80
- path: /
pathType: Prefix
backend:
service:
name: new-endpoint-service
port:
number: 80

你现在可以更新上述YAML中的任何字段,并再次将更改应用到Kubernetes集群,它将更新更改。

如果它在服务中,它会更新,如果它在入口中,它会相应地更新这些更改。

如果你想改变docker镜像,你可以用不同的docker标签更新部署镜像,它会获取并部署那个版本。

您遇到的错误

error: error validating "deployment.yml": error validating data: invalid object to validate; if you choose to ignore these errors, turn validation off with --validate=false

是不完整的,通常有更多的细节,但实际上它只是意味着你的yaml文件deployment.yaml有语法错误。

相关内容

  • 没有找到相关文章

最新更新