Abd*_*ani 1 kubernetes kubectl
设以下服务:
serivce1.yml
apiVersion: v1
kind: Service
metadata:
name: service1
spec:
type: ClusterIP
ports:
- port: 90
name: port0
targetPort: 40000
selector:
app: nginx
Run Code Online (Sandbox Code Playgroud)
我申请如下:kubectl apply -f service1.yml
现在我想更改端口部分。我可以编辑 yml 并再次应用,但我更喜欢使用 patch :
kubectl patch service service1 -p '{"spec":{"ports": [{"port": 80,"name":"anotherportspec"}]}}'
service/service1 patched
Run Code Online (Sandbox Code Playgroud)
但此命令添加一个新端口并保留旧端口:
$ kubectl describe svc service1
Name: service1
Namespace: abdelghani
Labels: <none>
Annotations: <none>
Selector: app=nginx
Type: ClusterIP
IP Families: <none>
IP: 10.98.186.21
IPs: <none>
Port: anotherportspec 80/TCP
TargetPort: 80/TCP
Endpoints: 10.39.0.3:80
Port: port0 90/TCP
TargetPort: 40000/TCP
Endpoints: 10.39.0.3:40000
Session Affinity: None
Events: <none>
Run Code Online (Sandbox Code Playgroud)
我的问题:是否可以通过用作为参数传递的部分替换旧部分来更改端口部分?
谢谢
正如我们(与@Abdelghani)讨论的那样,问题在于补丁策略。使用以下命令:
$ kubectl patch svc service1 --type merge -p '{"spec":{"ports": [{"port": 80,"name":"anotherportspec"}]}}'
解决了问题。
标志--type merge
将启用替换现有值。
了解更多:kubectl-patch。
作为修补的替代方案,您有以下几种选择:
1. 使用命令编辑您的服务kubectl edit
:在提示符下 $ kubectl edit svc <service_name> -n <namespace>
i - to edit the service
ESC, :wq - update your service
Run Code Online (Sandbox Code Playgroud)
粘贴正确的端口并保存文件。
2.您也可以手动编辑服务conf文件:
vi your-service.yaml
Run Code Online (Sandbox Code Playgroud)
更新端口号并应用更改
$ kubectl apply -f your-service.yaml
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5382 次 |
最近记录: |