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
'Kubernetes' 카테고리의 다른 글
Kubernetes Ingress, Autoscaling, Network (0) | 2023.10.23 |
---|---|
kubernetes Service, ClusterIP, NodePort, LoadBalancer (0) | 2023.10.11 |
Kubernetes Replicaset, Deployment, Pod Container에 파일 복사 (0) | 2023.10.10 |
Kubernetes Scheduling, Labels (0) | 2023.10.05 |
Kubernetes 설치 (0) | 2023.10.05 |