2022. 5. 17. 19:35ㆍkubernetes
설치 방식
- Kubeadm
- Kubespray(Kubeadm + Ansible)
Kubeadm (for ubuntu, 1대에서)
- kubeadm, kubectl, kubelet 도구 설치
apt 패키지 업데이트
sudo apt-get update
쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치
sudo apt-get install -y apt-transport-https ca-certificates curl
구글 클라우드의 공개 사이닝 gpg키 다운
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg
https://packages.cloud.google.com/apt/doc/apt-key.gpg
쿠버네티스 리포지터리를 apt리포지터리에 추가
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt 패키지 업데이트 후 kubelet, kubeadm, kubectl을 설치 후 해당 버전을 hold(업데이트 잠금)로 고정시킨다.
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
> 해당버전을 설치하려면 각각 "kubeadm=1.22.8-00" 같이 버전명을 붙인다.
Cgroup driver 오류
docker info | grep 'Cgroup Driver' 명령어 실행시 아래와 같이 나올 경우
docker info | grep 'Cgroup Driver'
Cgroup Driver: cgroupfs
/etc/docker/daemon.json 파일을 구성해준다.
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
도커 재시작
sudo systemctl restart docker
정상적으로 실행 되면 아래와 같은 값이 나온다.
docker info | grep 'Cgroup Driver'
Cgroup Driver: systemd
데몬 리로드, kubelet 재실행
sudo systemctl daemon-reload && sudo systemctl restart kubelet
K8s 클러스터 생성
sudo kubeadm init --control-plane-endpoint 192.168.100.100
--pod-network-cidr 172.16.0.0/16 --apiserver-advertise-address 192.168.100.100
위에 kubeadm init 실패 시 아래에 명령어 실행 후 다시 위 명령어 실행
sudo kubeadm reset
kubectl을 root가 아닌 사용자가 쓸 수 있게 구성
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
클러스터 생성이 정상적으로 완료된 경우 아래에 명령어 실행 후 결과
kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker **NotReady** control-plane,master 14m v1.22.8
Add-on
Calico Network (kubernetes에서 주로 쓰는 네트워크 인터페이스)
kubectl create -f
https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
curl https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml -O
다운 받아진 custom-resources.yaml 파일에 주소를 자신의 네트워크 주소로 수정
...
cidr: 172.16.0.0/16
...
수정한 파일로 Calico Network리소스 생성
kubectl create -f custom-resources.yaml
클러스터 상태 확인
kubectl get pods -A 명령어 실행시 아래와 같은 결과 출력
kubectl get pods -A
NAMESPACE NAME ...
calico-apiserver calico-apiserver-c9565f67b-2p29k ...
calico-apiserver calico-apiserver-c9565f67b-slthl ...
calico-system calico-kube-controllers-5d74cd74bc-sg7dn ...
calico-system calico-node-tgxks ...
calico-system calico-typha-7447fdc844-txrdb ...
kube-system coredns-78fcd69978-4ztkq ...
kube-system coredns-78fcd69978-jpwxx ...
kube-system etcd-docker ...
kube-system kube-apiserver-docker ...
kube-system kube-controller-manager-docker ...
kube-system kube-proxy-5st98 ...
kube-system kube-scheduler-docker ...
tigera-operator tigera-operator-7cf4df8fc7-kx87z ...
```
kubectl get nodes 명령어 실행시 아래와 같은 결과 출력
kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker **Ready** control-plane,master 30m v1.22.8
1대의 시스템으로 구성된 컨트롤 플레인 경우 컨테이너를 실행하지 못하게 격리 되있기 때문에 풀어주는 명령어 실행
kubectl taint node docker node-role.kubernetes.io/master-
'kubernetes' 카테고리의 다른 글
Label과 LabelSelector, Annotations (0) | 2022.05.29 |
---|---|
Namespace (0) | 2022.05.29 |
Workload - Pod (0) | 2022.05.29 |
Kubernetes Objects (0) | 2022.05.19 |
Kubespray로 Kubernetes 설치 (0) | 2022.05.17 |