본문 바로가기

분류 전체보기

(202)
[CI/CD] (1) CI/CD 개념 ▶ CI / CD의 개념: CI / CD는 continous integration , continous Delivery 라는 용어의 개발 생태계에서 오래전 부터 사용되던 자동화 툴이다. 실제적으로 CI & CD가 의미하는것은 우리가 검증하고 릴리즈 하는 모든 작업을 자동화된 빌드와 테스트 툴을 이용하여 전체적인 과정을 파이프라인화 하여 자동으로 검증하고 자동으로 배포해주는 환경을 만들어 어플리케이션을 생성하는 과정을 자동화 하는것이다. 하지만, Cloud Native 시장이 확산되면서 CICD라는 명칭은 컨테이너화, 배포환경까지의 경로를 자동화하는 일련의 작업들을 전체적으로 CICD라고 부르게 된것 같다. ▶ CI ( Continuous integration ) 수많은 개발자의 serveral times..
[Kubernetes] (21). 문제풀이 (Ligtening Lab) 1. kubeadm 업그레이드 -> kubelet 업그레이드 2. kubectl custom output 작성하기 # kubectl -n admin2406 get deployment -o custom-columns= DEPLOYMENT:.metadata.name, CONTAINER_IMAGE:.spec.template.spec.containers[].image, READY_REPLICAS:.status.readyReplicas, NAMESPACE:.metadata.namespace --sort-by=.metadata.name > /opt/admin2406_data 3. admin.kubeconfig 수정하기 A kubeconfig file called admin.kubeconfig has been cre..
[Kubernetes] (20) Security 1.View Certificate Details ( Ceritificate & TLS ) 2. Certificates API 3. KubeConfig 4. Role Based Access Controls (RBAC) 5. Cluster Roles 6. Service Accounts 7. image Security 1. Ceritificate & TLS * Authentication ( Who are you? ) Files: Username and Password Files: Username and Tokens Certificates LDAP SA (service accounts) * Authorization ( What can you do? ) RBAC ABAC Node Authorization Webh..
[Kubernetes] (19). Cluster Maintenance 우리는 Cluster Maintenance 클러스터 유지관리에 대해서 3가지 Chapter을 통해 배울것이다. 1. OS 업그레이드 2. Cluster 업그레이드 3. Backup & Restore 1. OS upgrade 너의 k8s 클러스터 중 한개 노드를 꺼야되는 상황이 생겼다고 가정하자. maintenance 목적으로 노드를 종료시켜야 할때가 분명 있을것이다. 인증서 교체를 하거나.. 소프트웨어가 업그레이드가 되었거나 등등 upgrade a base software apply patch like Security patches etc change a CA certification 이러한 상황에 쿠버네티스는 어떤 방식으로 해결을 할까? 1. 노드가 5분안에 정상적으로 돌아올수 있다고 판단한다면, 당신..
[Kubernetes] (18). Application Lifecycle Management 1. 개요 워크로드는 쿠버네티스에서 구동되는 애플리케이션이다. 워크로드가 단일 컴포넌트이거나 함께 작동하는 여러 컴포넌트이든 관계없이, 쿠버네티스에서는 워크로드를 일련의 Pod 집합 내에서 실행한다. 쿠버네티스에서 Pod 는 클러스터에서 실행 중인 Container 집합을 나타낸다. 쿠버네티스 파드에는 LifeCycle이 있다. 예를 들어, pod가 클러스터에서 실행되고 나서 해당 파드가 동작 중인 노드에 심각한 오류를 발생시키면 해당 노드의 모든 파드가 실패한다. 쿠버네티스는 이 수준의 실패를 최종으로 취급한다. 사용자는 향후 노드가 복구되는 것과 상관없이 Pod를 새로 생성해야 한다. 그러나, 이 작업이 훨씬 쉽도록 각 Pod를 직접 관리하지 않고 워크로드 리소스를 통해 관리하는데 Deployment..
[Kubernetes] (16). Static Pods Static Pod란 ? Static Pods are managed directly by the kubelet daemon on a specific node, without the API server observing them. 스태틱 파드는 kubelet이 다이랙트로 controlplane 노드에서 관리되어지는 pod로써 kubelet은 /etc/kubernetes/manifests에 해당 pod의 구성파일(definition files )을 관리하며 kubelet 이 각각의 스태틱 파드를 감시한다. (만약 실패할 경우 다시 구동한다.) etcd, kube-apiserver, kube-controller-manager, kube-scheduler 4개의 pods를 말합니다. # 만약 클러스터로 구성된 ..
[Kubernetes] (17). DaemonSets 데몬셋 DaemonSet는 노드에 1개씩 POD가 배포되는 워크로드이다. RC나 RS에 의해서 관리되는 Pod 는 여러 노드의 상황에 따라서 일반적으로 비균등적으로 배포가 되지만, DS에 의해 관리되는 Pod는 모든 노드에 균등하게 하나씩만 배포 된다. 이런 형태의 워크로드는 서버의 모니터링이나 로그 수집 용도로 많이 사용되는데, DS의 다른 특징중 하나는, 특정 Node들에만 Pod가 하나씩만 배포 되도록 설정이 가능하다. 앞에서 언급한 로그나 모니터링 시나리오에서 특정 장비에 대한 모니터링을 하고자 할 때 이런 시나리오가 유효하다. 예를 들어 특정 장비(노드)에만 Nvme SSD를 사용하거나 GPU를 사용할 경우에는 그 장비가 설치된 노드만을 모니터링하면 된다. 출처: https://bcho.tist..
[Kubernetes] (15). Node Affinity / Pod Affinity Node Affinity label을 통해서 특정 노드에 pod가 스케쥴링 될수 있도록 주는 옵션이다. 조건에 따라서 조금 더 유연한 스케쥴링이 가능하며, 더불어서 운영중에 변경값이 적용되면 무시할지 아니면 재기동 시킬지를 결정한다. node에 라벨링을 해준후에, node Affinity 룰을 통해서 해당 노드에 배포가 될수 있게 스케쥴링 합니다. $ kubectl label nodes node1 disktype=ssd ## 다음과 같이 노드에 라벨링을 해준다. $ kubectl get nodes --show-labels ## 다음과 같이 노드에 라벨링이 된지 확인한다. 노드 어피니티를 통해서 특정 노드에 pod가 스케쥴링 될수 있게 하는 configuration file 이다. apiVersion: v..