K8S 시작 -> 클러스터 생성 -> Kubeadm init -> Token 발행
Token 을 발행하면 해당 사용자 계정은 admin 계정의 권한을 가지게 된고, Node 는 master Node 가 된다. 해당 계정 정보는 /etc/kubernetes/admin.conf ( K8S admin 을 나타내는 파일 ) 에 저장된다
- root 계정이 아닌 사용자 계정이 K8S 에 명령을 내릴려면 이 파일을 ~/.kube/config ( root 를 나타내는 파일 ) 에 복사 붙여넣기 해야 한다
이를 통해 worker Node 의 등급을 올릴 수 있다. 이때, worker Node 에 master Node 의 컴포넌트들이 생기는 것이 아닌, master Node 에 연결해서 명령을 내리는 것이다
- 만약, admin 권한이 풀리면, export 를 통해 KUBECONFIG 에 넣어줘야 한다
SCP ( SECURE COPY ) : SSH 터널을 이용하여 파일 복사를 진행한다. 이를 통해 원격지 파일을 옮길 수 있다
- SCP 를 통해 admin.conf 를 다른 Node 에 옮길 수 있다
- 따라서, MetalLB 가 동작한다면, Ingress 배포시 생성되는 LB 서비스에 외부에서 접근할 수 있는 EXTERNAL IP 를 할당해준다
- 이는 앞에 Ingress 를 배치하면 NodePort 서비스만 Ingress 에 연결 가능하다!!! LB 서비스는 뒤에 연결 불가
- LB 서비스만 사용할 경우, 서비스는 Node 에 Pod 형태로 존재한다. 즉, Node 의 자원을 공유하므로, Node 의 Ip 역시 공유한다. 이를 통해 LB 서비스에서 Pod 에 접속하는 과정은, 사실상 Node 의 Ip 를 타고 LB 서비스에 접속해서, 뒤에 Calico 를 통해서 Pod 에 연결된다
- 이를 GIT 과 스토리지를 연결하여, GIT 에 COMMIT 됬을 때, 자동으로 스토리지에 update 해주게 할 수 있다
이러한 환경을 간편하게 사용할 수 있는 도구로 AWX 가 있다
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 211.183.3.201-211.183.3.210
- name: kia
protocol: layer2
addresses:
- 211.183.3.211-211.183.3.220
- name: sk
protocol: layer2
addresses:
- 211.183.3.221-211.183.3.230
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-ip
spec:
replicas: 3
selector:
matchLabels:
app: nfs-ip
template:
metadata:
name: my-nfs-ip
labels:
app: nfs-ip
spec:
containers:
- name: webserver
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: nfs-vol
mountPath: /usr/share/nginx/html/lab3/
volumes:
- name: nfs-vol
nfs:
server: 211.183.3.100
path: /root/shared
---
apiVersion: v1
kind: Service
metadata:
name: nfslb
spec:
ports:
- name: nfslb-port
port: 80
targetPort: 80
selector:
app: nfs-ip
type: LoadBalancer