kubernetes namespace 추가하기

$ kubectl create namespace capture

$ kubectl get namespace

NAME            STATUS   AGE

capture         Active   13s


쿠버네티스 설정 yaml 파일에서도 커맨드와 동일한 효과를 줄 수 있다.


---
apiVersion: v1
kind: Namespace
metadata:
name: capture
labels:
app.kubernetes.io/name: capture
app.kubernetes.io/part-of: capture
app.list: phantomjs


Posted by '김용환'
,


쿠버네티스 공식 페이지에는 ingress nginx에 대한 설명이 되어 있다. 

https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md


기본은 아래와 같다. 

https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml


특이할 점은 service는 따로 정의되어 있지 않지만, ingress-nginx namespace가 디폴트로 사용됨을 알 수 있다.


한편, aws에서 l7을 사용하려면 loadbalancer type을  사용하는 것을 참고할 수 있다.

https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/aws/service-l7.yaml


spec:
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      targetPort: http
    - name: https
      port: 443
      targetPort: http



이후 아래 링크에서 응용 버전을 참고할 수 있다.


https://knight76.tistory.com/entry/kubernetes-ingress-nginx-%EC%84%A4%EC%A0%95-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0



Posted by '김용환'
,


kubernetes에서는 네임 스페이스를 줘서 상태 정보를 확인한다. 



$ kubectl get pods  -n capture

NAME                             READY   STATUS    RESTARTS   AGE

phantom-server-f597bbbb6-24pww   1/1     Running   0          1d

phantom-server-f597bbbb6-2vljz   1/1     Running   0          1d

phantom-server-f597bbbb6-z7fk5   1/1     Running   0          1d




특정 노드에 대한 로그를 확인할 때도 네임 스페이스를 지정해야 한다.


$ kubectl logs -f phantom-server-f597bbbb6-24pww -n capture

(로그)




따라서 3개의 pods를 모두 보려면 pod 별로 호출해야 한다.



하지만, 

https://github.com/wercker/stern를 사용하면 예쁘게 많은 pods 로그를 쉽게 볼 수 있다. 

맥이라면 brew install stern으로 설치한다.



$ stern phantom-server-f597bbbb6-z7fk5 --namespace capture

(예쁘게 로그)




3개의 포드에 대한 로그를 보려면 다음 커맨드를 실행한다.


$ stern phantom-server --namespace capture





또한 동일한 방식으로 ingress 로그도 출력할 수 있다.



$ kubectl logs ingress-nginx-controller-lh75d  -n ingress-nginx

->


$ stern ingress-nginx-controller  -n ingress-nginx




Posted by '김용환'
,


default namespace 앱을 새로운 namespace로 옮길 때 이슈가 발생할 수 있다.


k8s는 기본적으로 기존 정보를 모른다. 

default namespace에 올린 service,ingress,pods는 그대로 둔채..

새로운 namespace에 service, ingress,pods는 뜬다.


이때 ingress는 같은 포트를 사용하기 때문에 에러가 당연히 발생한다.

디폴트의 ingress는 종료시키고, 새로운 namespace의 ingress는 떠있게 한다.

그리고 default service, pods도 일일이 종료 시킨다. 


다음과 같이 나오면 정상이다. 



$ kubectl get ingress

x


$ kubectl get ingress -n <새로운 namespace>

새로운 ingress


Posted by '김용환'
,



<mac OS>


시스템 환경설정 ->

네트워크 ->

이더넷(또는 와이파이)에서 고급 선택 ->

하드웨어 탭에서 MAC 주소





<윈도우>


윈도수 ->

설정 ->

네트워크 및 인터넷 ->

Wi-Fi -> 하드웨어 속성    (또는) 이더넷 -> 하드웨어 속성   -> 

물리적 주소(MAC) 



Posted by '김용환'
,


Service, Ingress 설정을 주고 ingress 확인하기


아래와 같은 k8s으로 kubectl apply 적용했다.

---
apiVersion: v1
kind: Service
metadata:
name: phantomjs-service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 3001
selector:
app: phantom-server
---
apiVersion: app/v1beta2
kind: Ingress
metadata:
name: phantomjs-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/rewrite-target: /
ingress.kubernetes.io/proxy-body-size: 10m
nginx.org/client-max-body-size: 10m
spec:
rules:
- host: capture.internal.google.com
http:
paths:
- path: /
backend:
serviceName: phantomjs-service
servicePort: 80



 ingress-nginx 네임스페이스를 확인한다.


$ kubectl get pods -n ingress-nginx

NAME                               READY   STATUS    RESTARTS   AGE

default-backend-55d45476bb-q9cwd   1/1     Running   0          14d

ingress-nginx-controller-ff5ht     1/1     Running   0          1d






docker에서 다음을 실행하면 nginx 설정을 확인할 수 있다.

$ kubectl -n ingress-nginx exec -it ingress-nginx-controller-ff5ht /bin/bash

쉘) cat /etc/nginx/nginx.conf





지금까지의 작업을 한 커맨드로 사용해 namespace에 nginx ingress가 하나 밖에 없다면 다음과 같이 쉽게 볼 수 있다.


$ kubectl exec -it -n ingress-nginx $(kubectl -n ingress-nginx get pods | grep ingress-nginx-controller | grep Running | awk '{print $1}' | head -n 1) cat /etc/nginx/nginx.conf 



ingress docker 내부 vi로 보고 싶다면, vi가 설치가 안되어 있어서 보기 어렵다. '| vi - '를 추가한다.


$ kubectl exec -it -n ingress-nginx $(kubectl -n ingress-nginx get pods | grep ingress-nginx-controller | grep Running | awk '{print $1}' | head -n 1) cat /etc/nginx/nginx.conf | vi -





Posted by '김용환'
,


'근성없고 화내는'이라는 뜻이 있지만 

(참고 https://reckon.tistory.com/2186)


소프트웨어 세상에서는 

ansible과 같은 설정 관리 툴로 특정 OS에서 소프트웨어/애플리케이션을 설치 및 설정 한후 

운영을 진행하다 세월이 흘러, 운영체제와 설치소프트웨어도 조금씩 달라진다. 따라서 ansible만 해도 조금씩 playbook을 다르게 써야 하는 경우가 있다. 

이런 환경을 snowflake(눈송이) 시스템이라고 한다.


도커 환경에서 이런 운영 환경을 이겨낼 수 있기에 

docker/cloud /kubernetes 환경에서 기존 레거시와 차별하기 위해 사용되고 있다. 


'영어앤영문권' 카테고리의 다른 글

Stalemate- 교착 상태  (0) 2019.08.24
개발자 영어 - HTTP의 조건부 GET(conditional get)  (0) 2018.08.31
self-contained system (SCS) 번역  (0) 2018.08.28
authz, authn  (0) 2018.08.10
BYOD  (0) 2018.07.28
Posted by '김용환'
,