개발하자
Kubernetes : 패치를 사용하여 서비스 포트를 변경하는 방법
Cuire
2023. 4. 23. 22:09
반응형
Kubernetes : 패치를 사용하여 서비스 포트를 변경하는 방법
다음과 같은 서비스를 제공합니다:
serivce1.yml
apiVersion: v1
kind: Service
metadata:
name: service1
spec:
type: ClusterIP
ports:
- port: 90
name: port0
targetPort: 40000
selector:
app: nginx
저는 다음과 같이 신청합니다: kubectl apply -f service1.yml
이제 포트 섹션을 변경하고 싶습니다. 나는 yml을 편집하고 다시 적용할 수 있지만 패치를 사용하는 것을 선호한다:
kubectl patch service service1 -p '{"spec":{"ports": [{"port": 80,"name":"anotherportspec"}]}}'
service/service1 patched
그러나 이 명령은 새 포트를 추가하고 이전 포트를 유지합니다:
$ 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>
내 질문: 이전 섹션을 매개 변수로 전달된 섹션으로 교체하여 포트 섹션을 변경할 수 있습니까?
고마워
(@Abdelhani와 함께) 논의했듯이 문제는 패치 전략에 있습니다. 다음 명령 사용:
문제를 해결해 줍니다.
플래그를 사용하면 기존 값을 바꿀 수 있습니다.
자세히 보기: .
패치 적용을 위한 대안으로 다음과 같은 몇 가지 옵션이 있습니다:
다음 명령을 사용하여 서비스를 편집합니다: 인프롬프트
i - to edit the service
ESC, :wq - update your service
적절한 포트를 붙여넣고 파일을 저장합니다.
서비스 conf 파일을 수동으로 편집할 수도 있습니다:
vi your-service.yaml
포트 번호 업데이트 및 변경 사항 적용
$ kubectl apply -f your-service.yaml
참고로, 다른 모든 것이 실패하고 당신이 그것을 끝내기만 하면 될 때, awk, perl은 도움이 될 수 있다. 다음은 클러스터에서 서비스를 변경하는 예입니다IP에서 NodePort로 이동하고 특정 포트를 사용합니다.
kubectl get service/kubernetes-dashboard -n kubernetes-dashboard -o yaml | sed -E "s/(targetPort:\s[0-9]{0,5})/\1\n\ \ \ \ nodePort: 32323/" | sed 's/type: ClusterIP/type: NodePort/' | kubectl replace -f -
*먼저 빠른 백업을 수행해야 합니다.
반응형