해결된 질문
작성
·
206
2
현재 강사님이 알려주신대로 polaris -dashboard다운로드하고 Loadbalancer로 진행하려고하는데요(metalib-system도 이미 설치된상태) expose를 LoadBalancer로 진행했는데 external IP 가 안나와서 yaml파일을 만들어서 진행했습니다.
이렇게하면 external IP는 나오는데 192.168.1.11:8080으로 해도 접속이안되네요.. 제가만든 yaml파일이 잘못되었을까요??
[root@m-k8s ~]# cat go.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: polaris-dashboard
name: polaris
namespace: polaris
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 8080
targetPort: 80
externalIPs:
- 192.168.1.11
selector:
app: polaris-dashboard
[root@m-k8s ~]# k get -n polaris svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
polaris LoadBalancer 10.103.134.128 192.168.1.11 8080:30620/TCP 3m
polaris-dashboard ClusterIP 10.106.219.11 <none> 80/TCP 4m58s
답변 3
1
한가지만 더여쭙겠습니다ㅠ 답변주신
[root@m-k8s ~]# k expose deployment -n polaris polaris-dashboard --type=LoadBalancer --port=8080 --name=polaris-lb
를 실행해도 external IP 가 계속해서 Pending 상태로 나와서요ㅠ
그거를 해결하고자 go.yaml을 만든거였는데 수정해주신 코드로도 안되네요
음...혹시 IP를 모두 할당하신 상태 아니실까요?
현재 설정으로는 192.168.1.11 - 13까지 3개만 가능하거든요.
맞다면 13번 IP를 쓰는 서비스를 지우시면 바로 할당될꺼에요!
이래도 안되면
k describe svc <현재 서비스 이름>
을 주시면 봐드릴께요!
넵 여기있습니다. 할당된 아이피는 default namespace에서 192.168.1.10 만 보여집니다.
[root@m-k8s 4.1]# k get -n polaris svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
polaris-dashboard ClusterIP 10.106.32.158 <none> 80/TCP 81s
polaris-lb LoadBalancer 10.105.222.60 <pending> 8080:30375/TCP 14s
[root@m-k8s 4.1]#
[root@m-k8s 4.1]#
[root@m-k8s 4.1]# k describe -n polaris svc
Name: polaris-dashboard
Namespace: polaris
Labels: app=polaris
Annotations: <none>
Selector: app=polaris,component=dashboard
Type: ClusterIP
IP Families: <none>
IP: 10.106.32.158
IPs: 10.106.32.158
Port: http-dashboard 80/TCP
TargetPort: 8080/TCP
Endpoints: 172.16.132.11:8080
Session Affinity: None
Events: <none>
Name: polaris-lb
Namespace: polaris
Labels: app=polaris
component=dashboard
Annotations: <none>
Selector: app=polaris,component=dashboard
Type: LoadBalancer
IP Families: <none>
IP: 10.105.222.60
IPs: 10.105.222.60
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 30375/TCP
Endpoints: 172.16.132.11:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
[root@m-k8s 4.1]# k get cm -A
NAMESPACE NAME DATA AGE
default kube-root-ca.crt 1 2d10h
kube-node-lease kube-root-ca.crt 1 2d10h
kube-public cluster-info 2 2d10h
kube-public kube-root-ca.crt 1 2d10h
kube-system calico-config 4 2d10h
kube-system coredns 1 2d10h
kube-system extension-apiserver-authentication 6 2d10h
kube-system kube-proxy 2 2d10h
kube-system kube-root-ca.crt 1 2d10h
kube-system kubeadm-config 2 2d10h
kube-system kubelet-config-1.20 1 2d10h
metallb-system kube-root-ca.crt 1 23h
polaris kube-root-ca.crt 1 34m
[root@m-k8s 4.1]# k get svc -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d10h
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 2d10h
polaris polaris-dashboard ClusterIP 10.106.32.158 <none> 80/TCP 34m
polaris polaris-lb LoadBalancer 10.105.222.60 <pending> 8080:30375/TCP 33m
[root@m-k8s 4.1]# k get cm -n metallb-system -o yaml
apiVersion: v1
items:
- apiVersion: v1
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIC5zCCAc+gAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
cm5ldGVzMB4XDTIxMDUzMDA0MDc0OVoXDTMxMDUyODA0MDc0OVowFTETMBEGA1UE
AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM0w
oTouU2TMoaRawfZh0B4sIHM8y4Ns3al4ssv45F+wdxHTMSCTbenBFH6VSacU4n9A
rxKrb4hhjvAsR4UPDZXRkIF7HV7hoI1OSEgnPwKLC1z9vjKfU8rGtE8EnuQOmQqR
22CDuK6jDYqt5o0JqR80uHi0BmGmaS5rSP8jZWFoG5RNVpCE2LJfxkHv2tkofMxs
PAVMGB81+9wu/MTjsRdZc6zkYRdE8peS8S3QLNzexF9EPuBJk20ZWD3qoCSeorOw
YmGAPKgaT7J/1cEXxRuvD5U0zsv6MOZl3dR65Z9dLnman67R5Aep9bIvTwis0MJH
Qj9rlWK+Wu24hNBJDq8CAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB
/wQFMAMBAf8wHQYDVR0OBBYEFIwcpcxZcqxnwDY0na3cUpIjPHSxMA0GCSqGSIb3
DQEBCwUAA4IBAQAFajrT1y38DZkFzGtTD1/orbwqXA8vpOOzBPmR2F3mazCzkuUJ
5Lu1THDkccDncEjwxPZg/RgdRqCuAgxA+j9h5A/ReX8AUtXxnTVPoc23gkMYyItq
/0cxwwA6ijdW99RZCqCGihRqMtAMDu63svUjzo9oXZMsKnQ66z5IwvhtJqjlXqpS
rIfamfFy6ctKA5DbJFOhWDSSANPpCYa7EG9zcC49L3EhnMy0GJnkgrjzCma6ecFF
3p5Knkzra6elZtsyK9LNEoZdROlbwTm6NQZwGa0KWGEGvJ+KCgrbvKQQ1lSszoTD
8hnGh8/xCf72KnrAf0jLquIit9YMIASKFERq
-----END CERTIFICATE-----
kind: ConfigMap
metadata:
creationTimestamp: "2021-05-31T15:27:07Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:data:
.: {}
f:ca.crt: {}
manager: kube-controller-manager
operation: Update
time: "2021-05-31T15:27:07Z"
name: kube-root-ca.crt
namespace: metallb-system
resourceVersion: "21377"
uid: 50a6b2f4-0880-4160-b979-c7952af6c6b7
kind: List
metadata:
resourceVersion: ""
selfLink: ""
음...metallb configmap이 좀 이상한데요...
제꺼로 설치했으면 이렇게 나올수가 없는데....설치를 어떻게 하신지 문의드려도 될까요?
https://github.com/sysnet4admin/_Lecture_k8s_starter.kit/blob/main/ch2/2.4/metallb.yaml
이렇게 나와야 하거든요. 지금 config라는 cm이 없는데요.
[root@m-k8s ~]# k get cm config -n metallb-system -o yaml
apiVersion: v1
data:
config: |
address-pools:
- name: nginx-ip-range
protocol: layer2
addresses:
- 192.168.1.11-192.168.1.13
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{"config":"address-pools:\n- name: nginx-ip-range\n protocol: layer2\n addresses:\n - 192.168.1.11-192.168.1.13\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"config","namespace":"metallb-system"}}
creationTimestamp: "2021-05-23T11:54:11Z"
name: config
namespace: metallb-system
resourceVersion: "449"
uid: 25f1edd0-c9ca-4c5e-a061-666dafdda51b
IP는 좀 영역이 다를수 있는데, 지금 다른 테스트하는 클러스터라서...어쨌든 configmap이 있어야 하는데....
일단 해결은
k delete ns metallb-system
k apply -f ~/_Lecture_k8s_starter.kit/blob/main/ch2/2.4/metallb.yaml
하면 해결되실꺼에요
원인은 아마도 MetalLB 따로 메뉴얼보고 설치하신거 같긴한데, 말씀을 들어봐야 할꺼 같아요.
감사합니다... 해결되었습니다ㅠㅠ 강사님이 말씀하신대로 metallb 때문이었어요 ㅠ
제가 찾아서 깔았는데 잘못깔앗나봅니다..
https://metallb.universe.tf/installation/ 설치는 여기서했습니다.
나중에 컨피그맵 설명할때 할꺼긴 한데 인스톨 후에 컨피그를 넣어서 l2 또는 l3로 쓸지 정해줘야 되요. 설치만 하면 되는게 아니라서요.
해결되서 다행이네요~^^
1
안녕하세요
저희가 실습을 다음과 같이 latest로 하다보니, polaris에서 변경하는 점을 따라갈수가 없네요 ㅠ
https://github.com/fairwindsops/polaris/releases/latest/download/dashboard.yaml
일단 다음과 같이 하시면
[root@m-k8s ~]# k expose deployment -n polaris polaris-dashboard --type=LoadBalancer --port=8080 --name=polaris-lb
service/polaris-lb exposed
[root@m-k8s ~]# k get svc -n polaris
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
polaris-dashboard ClusterIP 10.102.52.63 <none> 80/TCP 3m27s
polaris-lb LoadBalancer 10.101.133.138 192.168.1.13 8080:30706/TCP 9s
192.168.1.13:8080으로 접속이 가능하실꺼고요.
제공해 주신 소스 코드로는 접속을 할 수가 없는데요.
다음 (열심 준비 중) 과정에서 설명 드리겠지만...
파드에서 사용하는 컨테이너는 이미 지정되어 있는 포트가 있습니다.
그래서 일반적으로 port와 targetPort는 동일하게 맞춰서 사용하는데요
(들어오는 문과 나가는 문이 갔다고 할까요? 다르게 하는 예제는 아래에 포함)
이건 일단 이 내용을 참고하시면 좋을꺼 같아요
https://stackoverflow.com/questions/36151986/docker-change-a-port-publishing-of-a-running-container
[root@m-k8s ~]# kubectl apply -f go.yaml
service/polaris-lb created
[root@m-k8s ~]# k get svc -n polaris
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
polaris-dashboard ClusterIP 10.101.127.58 <none> 80/TCP 26s
polaris-lb LoadBalancer 10.102.235.99 192.168.1.13 80:30554/TCP 8s
이렇게 하시면 192.168.1.13 으로 접속 가능하시답니다. (80은 디폴트라서 제외)
문제 해결에 도움이 되시면 좋겠네요.
업데이트도 해야겠네요. 감사합니다.
조훈 드림!
0
apiVersion: v1
kind: Service
metadata:
labels:
app: polaris
component: dashboard
name: polaris-lb
namespace: polaris
spec:
ports:
- port: 80 # 여긴 보통 맞추는데 80을 선호하시는거 같아서 80으로 넣었어요
targetPort: 8080 # 여기는 바꾸실수 없어요 바꾸려면 다시 컨테이너를 포장해야 되요
selector: # 여기 셀렉터가 안 맞아서 그런건데 매우 자세히는 지금 바로 설명은 어려울꺼 같아요 ㅠㅠ
app: polaris
component: dashboard
type: LoadBalancer
와.. 친절한답변에.. 빠른답변.. 감사드립니다:)