반응형

 


작성일: 2024년 2월 15일

 

$ kubectl get node -o wide
NAME          STATUS   ROLES   AGE    VERSION   INTERNAL-IP   EXTERNAL-IP       ... 생략 ...
10.0.10.111   Ready    node    11d    v1.25.4   10.0.10.111   130.162.111.222   ...
10.0.10.112   Ready    node    11d    v1.25.4   10.0.10.112   146.156.111.110   ...


##
## 위 worker node 정보 중에서 "EXTERNAL-IP"를 이용하여 SSH 접속
## (Oracle OS를 사용했다면, opc가 기존 계정이다)
##

$ ssh opc@130.162.111.222
(암호 없이 private key를 통해 인증 완료)

##
## 주의: OKE Cluster 구축할 때 사용한 node의 private key, public key 쌍 중에서 private key를
##      내 Client PC에 가지고 있어야 위와 같이 접속된다.
##      그러므로, 꼭 private key 관리를 잘 해야 한다.
##

 


 

반응형

 


작성일: 2024년 3월 27일

 

 

Oracle Cloud Infra(OCI) 그리고 Kubernetes Engine(OKE)를 사용하면서 참고하기 좋은 블로그를 찾았다.

타이틀은 개인 기술 블로그이지만, 거의 Oracle Cloud Infra의 공식 사용 매뉴얼 같은 느낌이다.

Oracle Cloud Infra의 공식 문서보다 사용자 입장에서 잘 작성된 글이다.

 

https://thekoguryo.github.io/

 

TheKoguryo's 기술 블로그

 

thekoguryo.github.io

 

공식 홈피에는 너무 많은 자료가 있어서 다 읽기 부담스러운데, 이 블로그는 딱 필요한 부분만 설명되어 있고

대부분 시간순으로 글이 진행되니까 따라서 실행하면 되는지라...

처음 OCI를 접하는 사람이 한번 쭉~ 읽고 OCI를 사용하면 좋을 것 같다.

 

반응형

Amazon EKS, Azure AKS, Google GKE 등과 비슷하게 Oracle OKE에서도 Network LB가 제공된다.

 

Managed Kubernetes를 사용할 때 항상 등장하는 Load Balancer와 Network Load Balancer가 비슷하면서 약간 다른데,

Oracle Cloud Infrastructure의 User Manual에는 아래와 같이 설정하고 있다.

 

 

Load Balancer

Oracle OKE - Load Balancer

  A Load Balancer improves resource utilization, facilitates scaling, and helps ensure high availability. You can configure multiple load balancing policies and application-specific health checks to ensure that the load balancer directs traffic only to healthy instances. Includes: advanced proxy features such as layer-7 routing and SSL termination.

그림에서 묘사한 것처럼

  • HTTP
  • HTTPS
  • TCP

프로토콜을 사용하는 Backend 서비스만 지원한다. 

따라서 UDP나 Dedicated Protocol을 사용하는 Backend 서비스가 있는 경우에 이 LB를 사용할 수 없다. ㅠㅠ

 

Network Load Balancer (일명, NLB)

Oracle OKE - Network Load Balancer (NLB)

A Network Load Balancer is a non-proxy layer-4 load balancing solution. It offers a scalable VIP to the customer and additionally provides the benefits of flow high availability, low latency, and source IP and port preservation.
Includes: layer-4 pass-through load balancing and client header preservation.

그림에서 묘사한 것처럼

  • TCP
  • UDP                                             # <-- 이것이 LB와 NLB가 다른 부분이다. 
  • 기타... 아무거나 다 (Any ~~~)      # <-- 이것이 LB와 NLB가 다른 부분이다.  

프로토콜을 사용하는 Backend 서비스를 지원한다. 

그런데 Oracle Cloud Infra에서는 이 NLB(Network LB)는 3개까지만 사용하도록 제한하고 있다.

OCI Web Console에서는 이 NLB Max Limit을 설정하는 메뉴가 안 보이는데, 아마 Oracle에 직접 전화해서 NLB 개수를 Upgrade해야 하는 것 같다. (아직, 확실하진 않고... 내일 Oracle에 한번 전화해서 물어봐야겠다..)

반응형

Oracle의 Official blog인지는 모르겠는데, 꽤 유용한 정보를 담고 있어서 종종 참고하는 블로그이다.

 

 

https://oracle-cloud.tistory.com/entry/cloud-shell-connects-to-private-instance

 

클라우드 쉘과 Bastion 서비스 사용한 Private 인스턴스 연결

OCI 클라우드 쉘은 OCI 콘솔에서 액세스 할 수 있는 웹 브라우저 기반 터미널입니다. OCI Bastion은 Public 엔드포인트가 없는 대상 리소스에 대한 제한적이고 시간제한이 있는 액세스를 제공합니다.

oracle-cloud.tistory.com

 

반응형

 

준비 작업: Oracle Cloud 사용을 위한 계정 생성

아래 Web Page에서 Oracle Cloud 사용을 위해서 Account를 생성한다.

https://cloud.oracle.com/

 

내 경우, 계정 생성하다가 마지막 "검증" 단계에서 실패했는데  Oracle에 전화해서 물어보니 

요즘 Block Chain Mining을 위해 Cloud Infra를 악용하는 사례가 있어서

계정 생성시 입력한 정보 중에서 블랙 해커로 의심되는 정보가 있으면, Oracle Machine Learning이 계정 생성을 Blocking 한다고 설명해줬다.

혹시 계정 생성하다 실패하면, 계정 정보를 다르게 해서 다시 생성하는 것이 정신 건강에 좋다.

 

 

OKE Cluster 생성하기

Oracle Cloud의 TOP 메뉴에서

[ Developer Services ] -> [ Kubernetes Cluters (OKE) ]

순서로 메뉴를 클릭하고, Quick Start 방식로 몇 가지 기본 설정 값만 정해주면 너무나 간단하게 Kubernetes Cluster가 생성된다.

 

주의: 
동일한 Spec의 Cluster 구축이라고 하더라도 Cluster Infra 상황에 따라 어떤 경우는 5분만에 Cluster가 생성되고,
어떤 경우는 15분이 넘도록 Cluster 생성이 완료되지 않는다.
그래서 마음편하게, Cluster 생성 버튼을 누르고 20분 정도 다른 업무를 하다가 오는 것이 좋다.

 

내 PC (Macbook)에서 OKE Cluster에 접근하기 (Bastion 구성)

Oracle이 너무 간단하게 만들어 놓아서 굳이 장황하게 설명할게 없다.

아래 Web Page에서 아래 빨간 번호 순서로 따라 하기만 하면 된다.

당연한 말이겠지만, 내 Macbook은 Public Network을 통해서 Oracle Cloud Infra에 접근해야 하니까, 아래 그림의 (6)번 절차에서 "VNC-Native public endpoint"와 관련된 명령을 복사해서 내 Macbook의 iTerm에 붙여 넣어야 한다.

 

 

위 절차를 끝낸 후, 내 Macbook의 iTerm 터미널에서 아래와 같이 명령을 수행하면 명령이 잘 수행되는 것을 확인할 수 있다.

 

$  kubectl  get node
NAME          STATUS   ROLES   AGE     VERSION
10.0.10.121   Ready    node    3m7s    v1.24.1
10.0.10.124   Ready    node    2m59s   v1.24.1
10.0.10.127   Ready    node    2m55s   v1.24.1
$

 

 

주의:
위 절차를 따라할 때, (5) ~ (6) 단계 사이에서 아래의 명령을 한번 수행해야 한다.
기존에 사용하던 KUBECONFIG 환경 변수가 설정된 경우라면, (6) 단계가 실패한다.
$  unset KUBECONFIG

 

 

 

Tip:
  [ Multi cluster를 운영하는 경우 ]
  예를 들어서 OKE kubernetes에서 cluster2, cluster3 등 2개의 cluster를 생성하여 운영하는 경우라면
  아래와 같이 .kube/config 파일 이름을 변경해서 사용하는 것을 추천.

 

$ mv $KUBECONFIG/config $KUBECONFIG/config.cluster2


$ cat .bashrc

... 중간 생략 ...

function use-oke-cluster2() {
  AA=$(printf "\033[")
  export KUBECONFIG=~/.kube/config.cluster2
  echo "${AA}32m"
  echo "Cluster Name      :" $(cat $KUBECONFIG | yq '.clusters[0].name')
  echo "Cluster API Server:" $(cat $KUBECONFIG | yq '.clusters[0].cluster.server')
  echo "${AA}0m"
}

... 중간 생략 ...

$ use-oke-cluster2

Cluster Name      : cluster-cja9kqodr9l
Cluster API Server: https://193.135.212.37:6443

$ kubectl get node
NAME          STATUS   ROLES   AGE    VERSION
10.0.10.115   Ready    node    11d    v1.25.4
10.0.10.117   Ready    node    11d    v1.25.4
$

+ Recent posts