krew 플러그인 관리자 설치
설치는 공식 페이지의 내용을 복붙하기만 하면 된다.
https://krew.sigs.k8s.io/docs/user-guide/setup/install/
- git 설치
- krew 설치
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)
- PATH 등록
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
neat : 첫번째로 선정한 플러그인
모든 쿠버네스트 오브젝트는 YAML 파일로 설치/실행하고, 실행중인 모든 오브젝트는 YAML 파일로 가져올 수(export) 있다. 실제 설치할 때 쓰인 YAML과 export 한 YAML 사이에는 다른 점이 있는데, 설치 시 필요하지 않은 현재 상태 정보도 포함된다. neat 는 이런 불필요한 정보를 제거해서 설치시 원본 YAML 파일이 없어도 쉽게 오브젝트 설치 파일을 만들 수 있다. krew를 이용해서 neat 를 설치해 보자.
kubectl krew install neat
설치된 nginx deployment 를 export 해보자.
kubectl get deployment web-server -o yaml | kubectl neat
결과로는 아래와 같이 나온다.
apiVersion: v1
items:
- apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
labels:
app: web-server
name: web-server
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: web-server
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: web-server
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
kind: List
metadata:
resourceVersion: ""
neat 보내지 않고 export 된 모습과 비교해보자.
kubectl get deployment -o yam
apiVersion: v1
items:
- apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2023-10-29T21:57:48Z"
generation: 1
labels:
app: web-server
name: web-server
namespace: default
resourceVersion: "12926"
uid: 347a4ea0-daec-462f-a9ef-f88cd65be9ff
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: web-server
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: web-server
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2023-10-29T21:58:02Z"
lastUpdateTime: "2023-10-29T21:58:02Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2023-10-29T21:57:48Z"
lastUpdateTime: "2023-10-29T21:58:02Z"
message: ReplicaSet "web-server-6484c4f547" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
kind: List
metadata:
resourceVersion: ""
현재 deployment 의 상태를 나타내는 속성들이 정리되어 나온다. 설치되어 있는 오브젝트들을 분석하기 좋은 플러그인이다.
'DevOps와 Infra > Kubernetes On Premise' 카테고리의 다른 글
1.2. Kubernetes(k8s) 클러스터 구성 - RHEL (2) | 2023.12.02 |
---|---|
5. Storage (0) | 2023.11.06 |
4. Service (2/2) - Istio (0) | 2023.11.05 |
3. Service (1/2) - LoadBalancer (0) | 2023.11.03 |
1.1. Kubernetes(k8s) 클러스터 구성 - Ubuntu (1) | 2023.10.23 |