2023-10-05 09:33:45
728x90
728x90

Pod : 여러 개의 컨테이너를 추상화해 하나의 애플리케이션으로 동작하도록 만드는 컨테이너 묶음.

Namespace: 하나의 물리적인 공간에 존재하는 K8S를 논리적인 작업환경으로 분리, 서로 다른 Namespace 에는 영향을 미치지 않는다. 서로 다른 K8S 작업환경이 필요하다면 Namespace로 분리한다.

 

pod(c,v) ->Replicaset -> Service -> Deployment = cluster
namespace:전체 클러스터에서 특정이름으로 클러스터의 영역을 구분

kubectl get nodes 모든 nodes의 정보 보기
kubectl get nodes -o wide 모든 nodes의 확장 정보 보기
kubectl api-resources

pod 외부에 노출(service)
kubectl run app-nginx --image nginx --port=80
kubectl get pod pod 정보 보기-o wide 옵션은 확장 정보 보기
kubectl expose pod app-nginx --type=NodePort app-ningx pod를 NodePort로 외부에 노출(service)
kubectl get service 외부에 노출한 pod 확인
kubectl get pod,service
kubectl delete service app-nginx
kubectl delete pod app-nginx

kubectl run app-http --image httpd --port=80
kubectl expose pod app-http --type NodePort
kubectl get pod,service -o wide
kubectl describe pod app-http pod의 내부 정보 보기
kubectl delete service app-http
kubectl delete pod app-http

namespace 생성하기
kubectl create namespace 1team 1team 이라는 namespace 생성하기
kubectl run app-nginx --image nginx --port=80 --namespace 1team namespace에 지정해서  nginx 실행하기
kubectl get pods --namespace 1team namespace의 pod 확인 이름은 필수
kubectl delete pod app-nginx -n 1team
kubectl delete namespace 1team

kubectl create namespace 2team
kubectl run app-http --image httpd --port=80 --namespace 2team
kubectl get pods --namespace 2team
kubectl delete namespace 2team namespace를 지우면 안에 있는 pod도 삭제
-----------------------------------------------------------------------------------------------------
namespace 생성하는 yml 파일 작성

vi name.yml
---
apiVersion: v1 버전 정보 확인해서 입력
kind: Namespace 종류
metadata: 속성정보
  name: 1team
kubectl apply -f name.yml
kubectl get ns

vi name.yml
---
apiVersion: v1
kind: Namespace
metadata:
  name: 1team


---
apiVersion: v1 1team은 생성되있어서 2team만 생성함
kind: Namespace
metadata:
  name: 2team
kubectl apply -f name.yml
kubectl get ns
kubectl delete -f name.yml
------------------------------------------------------------------------------------------------
nginx pod 생성하는 yml 파일 작성

https://virtualtech.tistory.com/335
vi nginxpod.yml
---
apiVersion: v1 api의 버전
kind: Pod 종류
metadata: 속성 정보
  name: app-nginx pod의 이름 namespace는 지정해주지 않아서 default namespace에 생성
spec: pod의 스펙 작성
  containers: pod안의 container의 스펙을 작성
  - name: nginx 이름은 nginx
    image: nginx:1.14 이미지는 nginx:1.14
    imagePullPolicy: Never:local에 있는것만 쓴다 IfNotPresent: local에 존재하지 않으면 다운 Always: hub.docker.com에서 다운
    ports:
    - containerPort: 80 컨테이너의 포트, pod의 포트와 공유
kubectl apply -f nginxpod.yml 실행하기
kubectl delete -f nginxpod.yml 삭제하기
kubectl describe pods app-nginx
--------------------------------------------------------------------------------------------------
nginx,mysql pod 생성하는 yml파일 작성

---
apiVersion: v1
kind: Pod
metadata:
  name: app-nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
  - name: mysql 이름
    image: mysql:5.7 사용할 image
    imagePullPolicy: Never
    env: mysql을 실행하려면 환경변수 입력해야함
    - name: MYSQL_ROOT_PASSWORD 환경변수의 이름
      value: "It12345!" 값
    ports:
    - containerPort: 3306 포트
kubectl apply -f nginxpod.yml
kubectl exec app-nginx nginx -it -- bash app-nginx pod의 nginx에 접속하기
kubectl exec app-nginx -c mysql -it -- bash -c 옵션을 줘서 app-nginx pod의 mysql에 접속하기

명령어로 mysql 실행하기
kubectl run app-mysql --image=mysql:5.7 --port 3306 --env="MYSQL_ROOT_PASSWORD=It12345"
----------------------------------------------------------------------------------------------------------
alpine pod 생성하는 yml파일 작성

---
apiVersion: v1
kind: Pod
metadata:
  name: alpine
spec:
  containers:
  - name: alpine
    image: alpine
    imagePullPolicy: Never
    command: ["/bin/sh", "-c", "while true; do sleep 1000; done"]

명령어로 alpine 실행하기
kubectl run sh-alpine -it --image=alpine -- sh

-----------------------------------------------------------------------------------------------------------
1. pod 이름은 bash-cent namespace는 1team, 명령어 실행
kubectl run bash-cent -n 1team -it --image=centos:7 -- bash
kubectl exec bash-cent --namespace 1team -it -- bash
kubectl get pods -n 1team

2. pod 이름은 bash-cent1 namespace는 2team, yaml 생성해서 실행
vi cent.yml
---
apiVersion: v1
kind: Namespace
metadata:
  name: 2team

---
apiVersion: v1
kind: Pod
metadata:
  name: bash-cent2
  namespace: 2team
spec:
  containers:
  - name: centos7
    image: centos:7
    imagePullPolicy: Never
    command: ["bin/bash", "-c", "while true; do sleep 1000; done"]

kubectl apply -f cent.yml
kubectl exec bash-cent -n 2team -it -- bash
kubectl get pods -n 2team

728x90