볼륨(volume)
PV/PVC
cat /etc/kubernetes/admin.conf # 쿠버네티스 전체 관리자 admin
export KUBECONFIG=/etc/kubernetes/admin.conf # KUBECONFIG 환경변수에 저장
root@manager:~/k8slab# echo $KUBECONFIG
/etc/kubernetes/admin.conf
KUBECONFIG 는 service account 의 정보를 누구로 할 것인지 파일을 지정하는 변수
kubctl delete -f .
# 현재 폴더에서 생성된 pod,svc, 모두 삭제
기본적으로 nfs의 공유 저장소에 외부 사용자가 접속하여 파일을 생성하게 되면 이 소유주는 "nfsnobody" 로 작성된다. 하지만 /etc/exports에 no_root_squash 가 옵션으로 작성
선결조건
시나리오.
systemctl status nfs-server | grep Active
: nfs-server 작동확인
chmod 777 /sk -R
: 해당 디렉토리와 하위 디렉토리 모두 777로 설정
vi /etc/exports
: 밑에 부분추가
/kia 211.183.3.0/24(rw,sync,no_root_squash)
/sk 211.183.3.0/24(rw,sync,no_root_squash)
systemctl restart nfs-server
showmount -e 211.183.3.100
: worker에서 확인
mkdir lab1 ; cd lab1
touch kia-ns.yaml sk-ns.yaml
kubectl api-resources | grep Name
:namespaces 버전확인
vi kia-ns.yaml
: sk도 생성apiVersion: v1 kind: Namespace metadata: name: kia
yaml 파일이 아닌 명령어로 생성하는 방법:
kubectl create ns sk
default: 211.183.3.201 - 211.183.3.210
kia: 211 ~ 220
sk: 221 ~ 230
metallb + configmap
vi lb-config.yaml
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
touch kia-deploy-svc.yaml sk-deploy-svc.yaml
vi kia-deploy-svc.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: kia
name: kia-deploy
spec: # RS
strategy:
type: Recreate
replicas: 3
selector:
matchLabels:
app: kia
template: #POD
metadata:
labels:
app: kia
spec:
containers:
- name: kia-nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: kia-lb
namespace: kia
annotations:
metallb.universe.tf/address-pool: kia
spec:
ports:
- port: 80
targetPort: 80
selector:
app: kia
type: LoadBalancer
kubectl get deploy,svc
결과:service의 externel ip로 접속하면 nginx 로드. sk도 똑같이 구성
kubectl exec kia-deploy-5ccc6dc745-lbjbr -n kia -- ls/test
kubectl exec[포드이름] -n kia --ls /test
kia.txt <- 결과로 떠야 한다.
kubectl get node
kubectl get pod -n kube-system (calico, api/scheduler/controller)
kubectl get pod -n metallb-system (controller, speaker)
위의 명령이 실행되지 않은다면 현재 계정은 kubernetes 환경에 대한 SA가 없는 상태다.
/etc/kubernetes/admin.conf
docker login