대시보드 dns : 쿠버네티스를 웹인터페이스로 관리할 수 있다.
오픈스택은 3개월마다 마이너한 버전이 나옴
So 도커이미지 교체해줘야함. 패키지도 다시 설치해야함 -> 프로세스 다시 실행(서비스 다운타임 발생 할 수 밖에 없음 -> 그래서 고가용성 필요)
언플랜드 다운타임: 예상치 못한 장애 발생. 플랜드 다운타임과 반대(계획된 다운타임. 점검같은 것)
kube api 를 먼저 업그레이드 해야함. 그다음 kubelet 업그레이드(kube api 보다 높게 업그레이드 할 수 없으므로)
https://kubernetes.io/ko/releases/version-skew-policy/
버전 차이(skew) 정책
다양한 쿠버네티스 구성 요소 간에 지원되는 최대 버전 차이
kubernetes.io
https://kubernetes.io/ko/releases/
릴리스
운영 수준의 컨테이너 오케스트레이션
kubernetes.io
https://kubernetes.io/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
kubeadm 클러스터 업그레이드
이 페이지는 kubeadm으로 생성된 쿠버네티스 클러스터를 1.20.x 버전에서 1.21.x 버전으로, 1.21.x 버전에서 1.21.y(여기서 y > x) 버전으로 업그레이드하는 방법을 설명한다. 업그레이드가 지원되지 않는
kubernetes.io
컨트롤 플레인 먼저 업글. 컨트롤 안에서도 api 먼저 업글. 그다음 노드 업글
# apt-get 버전 1.1부터 다음 방법을 사용할 수도 있다
apt-get update && \
apt-get install -y --allow-change-held-packages kubeadm=1.21.x-00 -> 홀드된 패키지를 업그레이드 하겠다는 의미
adm먼저업글해주고 let 업글하기
업그레이드 순서 참고
1.18.19 -> 1.18.20 으로 패치만 업글해보기
<컨트롤 플레인 업그레이드>
*kubeadm 업그레이드
sudo apt-cache madison kubeadm
sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubeadm=1.18.20-00
kubeadm version
kubeadm upgrade plan
sudo kubeadm upgrade apply v1.18.20
*kubelet과 kubectl 업그레이드
sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubelet=1.18.20-00 kubectl=1.18.20-00
kubelet --version
kubectl version
sudo systemctl daemon-reload
sudo systemctl restart kubelet
<노드 업그레이드>
*kubeadm 업그레이드
sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubeadm=1.18.20-00
sudo kubeadm upgrade node
*kubelet과 kubectl 업그레이드
sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubelet=1.18.20-00 kubectl=1.18.20-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
*컨트롤 플레인에 가서 버전 제대로 올라왔는지 확인
kubectl get nodes
kubectl get pods -A인 -> 러닝되는지 확인
노드3만 1.18.20 기존버전을 아래 사진들 참고하여 삭제 후 1.19.12 새로 설치
sudo rm -rf /var/lib/kubelet/
sudo rm -rf /etc/kubernetes/
sudo rm -rf /etc/cni/net.d
sudo rm -rf ~/.kube/
* 컨트롤 플레인에서 node3 삭제 후 1.19.12 새로 설치
sudo apt-get install -y --allow-change-held-packages kubeadm=1.19.12-00
sudo kubeadm upgrade apply v1.19.12
sudo apt-get install -y --allow-change-held-packages kubelet=1.19.12-00 kubectl=1.19.12-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl get nodes
*node1, 2 가서 1.19.12 다시 설치
sudo apt-get install -y --allow-change-held-packages kubeadm=1.19.12-00
sudo kubeadm upgrade node
sudo apt-get install -y --allow-change-held-packages kubelet=1.19.12-00 kubectl=1.19.12-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
*컨트롤로 가서 각 노드들 버전이 제대로 바뀌었는지 확인
kubectl get nodes
kubectl 실행파일중 가장 중요한 파일
kubectl 의 리소스의 종류
버전에 따라서 api 목록도 달라짐. 리소스의 목록이 달라질 수도 있음.
batch 버전 두가지 중 암거나 쓸수있음
v1 -> 코어그룹의 API 버전(grep -v \/ 슬러쉬를 제외한다는 의미)
*리소스들
bindings configmaps endpoints limitranges namespaces nodes persistentvolumeclaims persistentvolumes pods replicationcontrollers resourcequotas secrets serviceaccounts services daemonsets deployments replicasets statefulsets horizontalpodautoscalers cronjobs jobs ingresses ingresses clusterrolebindings clusterroles rolebindings roles storageclasses
* 모든 리소스에 대한 정의 다 나와있음
kubectl explain pods
kubectl explain pods.spec
pod는 하나이상의 컨테이너를 가지고 있는 쿠버네티스 컨테이너의 모음이다
pod 를 정의할때 컨테이너를 무조건 정의해줘야함. 한번만들면 변경할수없음.
* 파드
vi myapp-pod.yaml 생성시 위와같이 빈칸도 정확하게 맞춰서 써야함. 오타 3번이나 나고 이제야 찾아서 지침....
kubectl create -f myapp-pod.yaml
kubectl get pods
출력을 yaml 버전으로 상세히 보여주는 명령어
wide 를 추가하면 더 상세하게 보여줌
*삭제명령어
kubectl delete -f myapp-pod.yaml
ip 를 10.0.~ 이 아닌 192.~(enp0s8)로 바꿔주기 -> 포트포워딩시 오류가 날수있어서 아이피 바꿔줘야함
* 컨트롤(192.168.200.50), 노드1(x.x.x.51), 노드2(x.x.x.52)
ip a s echo "KUBELET_EXTRA_ARGS='--node-ip 192.168.200.5x'" | sudo tee /etc/default/kubelet -> 컨트롤이랑 각 노드 전부 이것부터 먼저해주고 포트포워딩 명령어 쳐야함. 안그럼 오류뜸 sudo systemctl daemon-reload sudo systemctl restart kubelet
kubectl get nodes -o wide
kubectl port-forward myapp-pod 8080:8080 -> 포트포워딩
*새 터미널 열어서 확인
vagrant@k-control:~$ curl http://localhost:8080 Hello World! myapp-pod