반응형

ㅁ 각 위치별 security context 적용 범위 

 

Pod는 컨테이너를 담는 보자기? 그릇? 정도로 이해하면 빠를것 같다.

Pod 스펙  (yaml의 빨간색 부분)에 securityContext를 적용했다면 

Pod(보자기) 內 에 모든 컨테이너들이 적용을 받는 것이 맞지만,

컨테이너 스펙 에  SecurityContext( yaml파란색 부분)가 또 있다면,  

파란색 부분(runAsUSer:1002)를 적용 받는다. 

 

요약하면

- 빨간색 SecurityContext의 적용 범위 :   Container2(name:abc)  , Container3 (name:def)

- 파란색 Security Context의 적용 범위 :  Container1(name:web)

 

 

 

 

 

 

 


apiVersion: v1
kind: Pod
metadata:
  name: multi-pod
spec:
  securityContext:
    runAsUser: 1001
  containers:
  -  image: ubuntu
     name: web
     command: ["sleep", “300"]
     securityContext:
      runAsUser: 1002

  -  image: ubuntu
     name: abc
     command: ["sleep", " 300"]

 -  image: ubuntu
     name: def
     command: ["sleep", " 300"]

※ 참조yaml

반응형

'클라우드 > K8S' 카테고리의 다른 글

[k8s] Pod의 DNS 주소  (0) 2023.02.08
[k8s]Node Drain - 2 (Pod)  (0) 2023.02.01
[k8s] 신규 인증서 생성, 승인  (0) 2023.01.27
[k8s] k8s인증서 종류(openssl)  (0) 2023.01.26
helm 명령어  (0) 2023.01.02
반응형

신규 인증서 생성,승인 이걸 하는 이유?

 - k8s는 tls 기반으로 각 component에 엑세스를 하기때문에,  새로 추가된 멤버(개발자)에게 k8s 접근하기 위해선 ceriticate을 필요함.

 

□ 순서 

1.개인key, csr 파일 생성
2. k8scsr object 생성( .yaml작성)
3. k8scsr 승인
 
 
1. 개인key,csr 파일 생성 
 - key 생성 
# key 생성
[node2 pki]$ openssl genrsa -out tam.key 2048
Generating RSA private key, 2048 bit long modulus
...................+++
.....+++
e is 65537 (0x10001)

 - csr파일 생성

## csr파일 생성,   "CN=tam" (CN은  하고싶은대로 하면 됨) 
[node2 pki]$ openssl req -new -key tam.key -subj "/CN=tam" -out tam.csr
[node2 pki]$ cat tam.csr
-----BEGIN CERTIFICATE REQUEST-----
MIICUzCCATsCAQAwDjEMMAoGA1UEAwwDdGFtMIIBIjANBgkqhkiG9w0BAQEFAAOC
<중략>
-----END CERTIFICATE REQUEST-----

2. k8s csr object 생성( .yaml작성)

  ① :   "CN=tam" 으로 생성했기때문에,  name: tam으로 하면 됨

  ② : request 값은   tam.csr을 base64 encoding 한 값을 넣으면 됨 

  -> tam.csr을 base64 encoding  은   base64 -w 0 명령으로 한줄로 뽑으면 편함

### base64 인코딩 한줄로 출력

[node2 pki]$ cat tam.csr | base64 -w 0
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVN

   

ex) csr.yaml 작성예시 

### vi로  yaml 파일 작성
vi tam-csr.yaml

apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: tam
spec:
  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1V6Q0NBVHNDQVFBd0RqRU1NQW9 <중략>  
  signerName: kubernetes.io/kube-apiserver-client
  expirationSeconds: 86400  # one day
  usages:
  - client auth

3. k8s csr 승인

   ex) 

## create csr 
[node2 ~]$ kubectl apply -f tam-csr.yaml 
certificatesigningrequest.certificates.k8s.io/tam created




## 생성된 csr 확인 
[node2 ~]$ kubectl get csr
NAME   AGE   SIGNERNAME                            REQUESTOR          CONDITION
tam    35s   kubernetes.io/kube-apiserver-client   kubernetes-admin   Pending
 
## csr 승인 
[node2 ~]$ kubectl certificate approve tam   
certificatesigningrequest.certificates.k8s.io/tam approved

 

반응형

'클라우드 > K8S' 카테고리의 다른 글

[k8s]Node Drain - 2 (Pod)  (0) 2023.02.01
[k8s] security context 사용법(with multi-container)  (0) 2023.01.31
[k8s] k8s인증서 종류(openssl)  (0) 2023.01.26
helm 명령어  (0) 2023.01.02
[system log]failed to get system container stats  (0) 2022.12.19
반응형

k8s component 별 Certificates , keys 파일

 

출처 : certified-kubernetes-administrator-course/06-TLS-in-Kubernetes.md at master · kodekloudhub/certified-kubernetes-administrator-course (github.com)

 

K8s의 TLS(openssl사용) 구성은 크게 3가지로 분류 한다

모두 최상위 인증(ROOT CA)가 “Issuer: CN = Kubernetes” 이고, “Subject: CN”은 Certificates 마다 다름.

 

CERTIFICATE AUTHORITY(CA)  - 최상위 인증 (ROOT CA)

 - Ca.crt, Ca.key

 - Ca.crt를 통해 인증한 *.crt파일을 생성 한다

   ex) openssl x509 –req in xxx.csr –CA ca.crt –Cakey ca.key –out xxx.crt

  Client Certificates

 - admin.crt, kube-scheduler.crt, controller-manager.crt, kube-proxy

□ Server Certificates for Servers

 - etcd-server,api-server,kubelet server

 

각 Certificate의 CN/만료일 정보는 아래와 같다.

#sample 
openssl x509 -in <인증파일> -noout -text

#example
cd /etc/kubernetes/pki;      
openssl x509 -in ca.crt -noout -text

 

아래 그림을 보면   각 인증서 별로  "Issuer: CN = kubernetes"로 같지만,   "Subject: CN"은 component별로 다르다는 것을 확인 할 수 있다.

Root CA

 

apiserver.crt의 Issuer CN, subject CN

 

kubelet.crt의 Issuer CN, subject CN

 

반응형

'클라우드 > K8S' 카테고리의 다른 글

[k8s] security context 사용법(with multi-container)  (0) 2023.01.31
[k8s] 신규 인증서 생성, 승인  (0) 2023.01.27
helm 명령어  (0) 2023.01.02
[system log]failed to get system container stats  (0) 2022.12.19
[k8s] orphaned pod 조치  (0) 2022.12.16
반응형
## helm 리스트
helm list

 

##helm repo list & update 

helm repo

helm repo list


helm repo update

 

## helm rollback

helm list

helm histroy <release-name>

helm rollback <release-name> <history-revision>

 

# helm delete 
helm delete <release-name> --purge
반응형

'클라우드 > K8S' 카테고리의 다른 글

[k8s] 신규 인증서 생성, 승인  (0) 2023.01.27
[k8s] k8s인증서 종류(openssl)  (0) 2023.01.26
[system log]failed to get system container stats  (0) 2022.12.19
[k8s] orphaned pod 조치  (0) 2022.12.16
kubectl cheet sheet, useful cheet  (0) 2022.12.15
반응형

Failed to get system container stats for "/system.slice/kubelet.service": failed to get cgroup stats for "/system.slice/kubelet.service": failed to get container info for "/system.slice/kubelet.service": unknown container "/system.slice/kubelet.service"

 

ㅁ 조치( To slove this event)

 - docker,kubelet restart

(root user)
systemctl stop kubelet;systemctl stop docker;
systemctl start kubelet;systemctl start docker;

 

 

반응형

'클라우드 > K8S' 카테고리의 다른 글

[k8s] k8s인증서 종류(openssl)  (0) 2023.01.26
helm 명령어  (0) 2023.01.02
[k8s] orphaned pod 조치  (0) 2022.12.16
kubectl cheet sheet, useful cheet  (0) 2022.12.15
[k8s]Node Drain  (0) 2021.09.14
반응형

 

- 발생이벤트
kubelet:E0300 20:45:31.395023 0532 kubelet_volumes.go: 154] orphaned pod "23fww56c-2012-45xv-k124-452395be2792" found, but volume paths are still present on disk.

#상세조회
kurnalctl -f -u kubelet

 

- 원인 : Pod가 삭제된 상태에서 node 이슈(hang,shutdown)으로  node에서 pod 디렉토리가 삭제되지 않음

- 조치 : Pod가 사용하던 디렉토리 삭제해주면 됨

. 삭제된 Pod의 디렉토리 조회 : ls -l /var/lib/kubelet/pods/23fww56c-2012-45xv-k124-452395be2792

  (ls -l /var/lib/kubelet/pods{UID}

. 디렉토리  삭제 : rm -rf /var/lib/kubelet/pods/23fww56c-2012-45xv-k124-452395be2792

 

※ 삭제가 안될경우는 볼륨해제 후 rm 실행

mount | grep {UID}xxxxx
umount /var/lib/kubelet/pods{UID}xxxxxxx

 

 

 

반응형

'클라우드 > K8S' 카테고리의 다른 글

helm 명령어  (0) 2023.01.02
[system log]failed to get system container stats  (0) 2022.12.19
kubectl cheet sheet, useful cheet  (0) 2022.12.15
[k8s]Node Drain  (0) 2021.09.14
kubectl custom column 사용  (0) 2021.07.01
반응형

출처 : https://kubernetes.io/docs/reference/kubectl/cheatsheet/

 

kubectl Cheat Sheet

This page contains a list of commonly used kubectl commands and flags. Kubectl autocomplete BASH source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first. echo "source <(kubec

kubernetes.io

 

ㅁ Pod/Deploy 사용중인 이미지 조회 (  Pod/Deploy's image tag) 

## Pod별 
kubectl get pod -n kube-system -o=custom-columns=podname:metadata.name,namespace:metadata.namespace,image:spec.containers..image

## deploy 별
#여러줄
kubectl get deploy -n kube-system --no-headers -o=custom-columns\
=deployname:metadata.name,name-space:metadata.namespace,\
image:.spec.template..spec.containers..image

## deploy 별
#한줄
kubectl get deploy -n kube-system --no-headers -o=custom-columns=deployname:metadata.name,name-space:metadata.namespace,image:.spec.template..spec.containers..image

## daemonset

 

ㅁ Header 제거 ( no-headers) 

kubectl get ns --output=custom-columns=:.metadata.name --no-headers

ㅁ  pod 시작시간 정렬 (sort by pod's startTime) 

kubectl get pod -A --sort-by=.status.startTime

ㅁ node,ip hostname ( k8s nodes' ip/hostname)

kubectl get nodes -o jsonpath='{.items[*].status.addresses[*].address}'

 

ㅁ secret의 base64 decode 

kubectl -n kubernetes-dashboard get secret dashboard-admin-secret -o go-template="{{.data.token | base64decode}}"

 

 

반응형

'클라우드 > K8S' 카테고리의 다른 글

helm 명령어  (0) 2023.01.02
[system log]failed to get system container stats  (0) 2022.12.19
[k8s] orphaned pod 조치  (0) 2022.12.16
[k8s]Node Drain  (0) 2021.09.14
kubectl custom column 사용  (0) 2021.07.01
반응형

출처: https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/

 

Safely Drain a Node

This page shows how to safely drain a node, optionally respecting the PodDisruptionBudget you have defined. Before you begin Your Kubernetes server must be at or later than version 1.5. To check the version, enter kubectl version. This task also assumes th

kubernetes.io

 

클러스터 구성된 노드를 클러스터에서 안정적으로 제외 시키기 위해  node Drain 사용한다.

 

ㅁ 현재 노드구성

현재 구성노드

 

ㅁ 작업내용

1) Node01(drain 대상)에 Pod가  더이상 배포되지 않도록 Cordon 설정 

#kubectl cordon node01 

cordon 설정 
cordon 설정후 SchedulingDisabled(pod가 더이상 배포되지 않는다는 얘기다)

2) Node01 Drain 

#kubectl drain node01

(만약 cordon을 먼저 실행하지 않았다면, 발생한 에러)

#kubectl drain node01 --ignore-daemonset=true

 

※ drain 시에 node01에 생성되었던 pod들은 모두 다른노드들로 재생성되니 주의가 필요함

반응형

'클라우드 > K8S' 카테고리의 다른 글

helm 명령어  (0) 2023.01.02
[system log]failed to get system container stats  (0) 2022.12.19
[k8s] orphaned pod 조치  (0) 2022.12.16
kubectl cheet sheet, useful cheet  (0) 2022.12.15
kubectl custom column 사용  (0) 2021.07.01
반응형

<조회대상 샘플 yaml>

<deploy yaml>

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: test-nginx
    tier: frontend
spec:
  replicas: 3
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: test-nginx

 

 

<custom column 활용>

 . 조회방법 :   

1) -o custom-columns=컬럼명:경로

2) kubectl custom-columns조회시   mapping이 1번은  . 한개,   N번이라면 N번의 .을 추가하면 됨

 

 

 . ex)

1.Spec  조회 (map .한번) 

controlplane $ kubectl get deploy nginx-deployment -o custom-columns=spec:.spec

<결과>

spec
map[progressDeadlineSeconds:600 replicas:3 revisionHistoryLimit:10 selector:map[matchLabels:map[app:test-nginx]] 
<..중략>

 

 

2. replicas 조회 (map . 한번)

controlplane $ kubectl get deploy nginx-deployment -o custom-columns=replicas:.spec.replicas    #map  .  한번

<결과>

replicas
3

 

3. matchLabelsapp 조회 (map .. 두번)

< selector. 1>

controlplane $ kubectl get deploy nginx-deployment -o custom-columns=matchlabels:.spec.selector

 

matchlabels
map[matchLabels:map[app:test-nginx]]

< app는  map2, 그래서 . 2번 후 key(app)>

 

controlplane $ kubectl get deploy nginx-deployment -o custom-columns=matchlabels:.spec.selector..app

<결과>

matchlabels
test-nginx
반응형

'클라우드 > K8S' 카테고리의 다른 글

helm 명령어  (0) 2023.01.02
[system log]failed to get system container stats  (0) 2022.12.19
[k8s] orphaned pod 조치  (0) 2022.12.16
kubectl cheet sheet, useful cheet  (0) 2022.12.15
[k8s]Node Drain  (0) 2021.09.14
반응형

 

 

 

 - 실생중인 컨테이너 확인

[root@system1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

e4369650fa7a        centos:h3           "/usr/bin/bash"     40 seconds ago      Up 39 seconds                relaxed_wing

 

 

- 실행중인 컨테이너 접속  (docker attach 컨테이너ID)

 

[root@system1 ~]# docker attach e4369650fa7a

[root@e4369650fa7a /]# 

 
 
- 접속종료
1. Ctrl + Q ,   (접속종료,  컨테이너가 종료되지 않음)
     <-> Ctrl + P  컨테이너로 재접속 명령 생성됨  
   . Ctrl +P 실행결과
    [root@e4369650fa7a /]# read escape sequence
    [root@system1 ~]# docker attach e4369650fa7a   # 명령이 프롬프트에 생김
 
 
2. Ctrl + D  or exit   (컨테이너 종료, 접속도 종료됨)
 
 
 
 

 

반응형

'클라우드 > Docker' 카테고리의 다른 글

docker commit 활용  (0) 2018.08.30
도커설치  (0) 2018.07.02

+ Recent posts