개발하자

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 -

*먼저 빠른 백업을 수행해야 합니다.


반응형