<명령어 정리>
kubectl get pod ->팟의 정보확인. api 요청이 제대로 들어갔는지도 확인 가능하다.(No resources가 뜨면 잘 들어간 것!)
kubectl get nodes - 노드들의 상태 확인
kubectl apply -f <메니페스트파일> - 생성, 동작, 변경사항 반영.
kubectl run <pod이름> --image=<이미지이름:버젼> - 팟 구동
kubectl get pod -o wide - 자세한 팟의 정보 확인
kubectl describe pod test-pod - 완전 자세한 팟의 정보 확인
kubectl run <pod이름> --image=<이미지이름:버젼> --dry-run=client -o yaml - 여기서 --dry-run-client의 의미는 실제로 api요청은 하지 않고 실행되는지 여부만 확인하겠다는 의미이다.
kubectl apply -f <파일이름.yml> - 팟 생성
kubectl delete -f <파일이름.yml> - 팟 삭제
kubectl exec -it <팟 이름> -- /bin/bash - 팟 안으로 진입
kubectl get pod --watch - 팟의 상태를 실시간으로 조회
kubectl get pod -n <네임스페이스> - 해당 네임스페이스에 대한 팟의 상태를 조회
kubectl get pod --all-namespaces - 모든 네임스페이스를 전부 조회
kubectl delete ns <네임스페이스> - 네임스페이스 삭제
kubectl create ns <네임스페이스> - 네임스페이스 생성
디스크확장
root@ubuntem:~# vgextend ubuntu-vg /dev/sdb
root@ubuntem:~# lvextend -l +100%FREE -n /dev/mapper/ubuntu--vg-ubuntu--lv
root@ubuntem:~# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
root@ubuntem:~# hostnamectl set-hostname master
root@ubuntem:~# vi /etc/netplan/00-installer-config.yaml
# ip를 211.183.3.10 /24 으로 하자
클러스터 공통 설정
이미지 관리를 위해서 docker를 설치하자
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 오로지 이미지 관리를 위한 목적.
1.네트워크 설정.
# 쿠버네티스에 필요한 필수포트를 오픈하거나 방화벽을 비활성화한다.
modprobe overlay
modprobe br_netfilter
#모듈을 불러오는 명령어
tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
# 리눅스의 네트워크 관련 모듈 로드.
sysctl --system
# 위 설정값 반영
2.가상메모리 사용 금지
sed -i '/^\/swap.img/s/^/#/' /etc/fstab
# /etc/fstab에서 /swap.img를 #/swap.img으로 변경. 그냥 파일에 들어가서 # 을 추가해줘도 된다.
3.CRI(Container Runtime Interface) 설치 - containerd
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# gpg 다운로드.
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 레포지토리에 목록 추가
apt-get update
# 레포 업뎃.
apt-get install -y containerd.io
mkdir -p /etc/containerd
containerd config default>/etc/containerd/config.toml
# containerd의 설정파일.
root@master:~# systemctl restart containerd
root@master:~# systemctl enable containerd
4.쿠버네티스 v1.30 설치(kubectl, kubelet, kubeadm)
https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
# 공식 문서.
apt-get update
apt-get install -y apt-transport-https ca-certificates curl
mkdir -p /etc/apt/keyrings
# 혹시 위 디렉토리가 없다면 만들어준다.
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# gpg키
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 레포 목록 추가
apt-get update
# 레포 목록 업뎃
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
# # 3명령어 설치 후 추후에 새로운 버전이 나와도 업데이트 되지 않도록 버전 고정.
systemctl restart kubelet
systemctl enable kubelet
kubeadm config images pull --cri-socket unix:///run/containerd/containerd.sock --kubernetes-version v1.30.2
https://github.com/kubernetes/kubernetes/releases
# 버전형식. v.1.xx.xx 설치하고 싶은 버전에 대한 정보를 알 수 있는 페이지
마스터노드로 초기화
kubeadm init --pod-network-cidr=10.244.0.0/16 --upload-certs --kubernetes-version=v1.30.2 --cri-socket unix:///run/containerd/containerd.sock --ignore-preflight-errors=all
kubeconfig
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 디렉토리를 만들어서 admin.conf 파일을 홈디렉토리의 .kube 디렉토리에 config라는 이름의 파일로 변경.
https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml
워커노드에서만
kubeadm join 211.183.3.10:6443 --token 5tzav6.xu34ykuwthrg427l --discovery-token-ca-cert-hash sha256:392ea4312ac0cf0d21866554a31cf52315771e0fd080a3f9223bf92ab3aa23c9 --cri-socket unix:///run/containerd/containerd.sock
# 본인의 master노드에서 생성된 명령어를 입력하세요.
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl 명령 자동완성
apt-get install bash-completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'source <(kubeadm completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl
#자동완성
ln -s /usr/bin/kubectl /usr/local/bin/k
# kubectl 대신 k로 단축명령
root@master:/k8s/rep# cat easy.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: easy-rep
spec:
replicas: 3
selector:
matchLabels:
app: easy
template:
metadata:
labels:
app: easy
spec:
containers:
- name: easy-con
image: oolralra/easy:1
'AWS Cloud School' 카테고리의 다른 글
[06.27] Kubernetes PV, PVC (0) | 2024.06.27 |
---|---|
[06.25-26] Kubernetes Deployment, Service, 배포방법 2가지(NodePort, LoadBalancer), Ingress Controller (0) | 2024.06.26 |
[06.17] AWS ECR, ECS (0) | 2024.06.22 |
[06.14] Docker Swarm (0) | 2024.06.16 |
[06.13] Docker compose (0) | 2024.06.16 |