1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CKA試験、Pod

Last updated at Posted at 2023-03-05

Pod

チートシート

  • コンテナを表現するk8s APIの最小の単位
  • Podには1つ、または、複数のコンテナが含まめる場合がある

Pod生成方法

kubectl run web --image=nginx:1.14 --port=80

nginxのイメージで80ポートを設定する

Pod確認

kubectl get pods

Pod削除方法

kubectl delete pod web

web というPodを削除する

Pod作成Yaml方法

kubectl run web --image=nginx:1.14 --port=80 --dry-run=client -o > web.yaml

dry run実行計画をweb.yamlファイルで出力

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80
kubectl apply -f web.yaml

作成したYamlファイルを元に、Podを作成

CKA試験例1

cka-examというnamespaceを作成し、cka-examnamespaceに下のようなPodを作成しなさい

pod 名: pod-01
image: buxybox
環境変数: CERT="CKA-cert"
command: /bin/sh
args: -c "while true; do echo $(CERT); sleep 10; done"
kubectl config use-context k8s

kubectl create namespace cka-exam

kubectl run pod-01 --image=busybox --dry-run=client -o yaml > 3-1.yaml
  • 環境変数に関するDocs
  • コマンドに関するDocs
3-1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-01
  namespace: cka-exam
spec:
  containers:
  - name: pod-o1
    image: busybox
    env: 
      - name: CERT
        value: "CKA-cert"
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(CERT); sleep 10; done"]
kubectl apply -f 3-1.yaml

CKA試験例2

pod custom-appのLogをモニタリングし、file not foundメッセージを含むログラインをopt/REPORT/2022/custom-app/logに記録しなさい

kubectl get logs custom-app | grep 'file not found' > opt/REPORT/2022/custom-app/log

Static Pod

  • APIサバーなしに、特定のノードにあるkubeletによって、直接管理する
  • /etc/kubernetes/manifests/ディレクトリにPod Yamlファイルを保存したら、適応される
  • 上記のディレクトリ(/etc/kubernetes/manifests/)/var/lib/kubelet/config.yamlにて設定可能
  • Static Podを置いておくディレクトリを修正したら、Kubeletでデモンを再実行する必要あるsystemctl restart kubelet
sudo su - 
cd /etc/kubernetes/manifest
kubectl run webserver --image=nginx:1.14 --port=80 --dry-run=client -o yaml > webserver.yaml

스크린샷 2023-03-05 18.02.38.png
static podが存在することを確認

Multi-Container

  • ひとつのPodに幾つかのコンテナが含まめて一緒に実行される

チートシート

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

스크린샷 2023-03-05 18.14.33.png

CKA試験例3

4つのコンテナを動作する eshop-frontend Pod を作成しなさい

  • nginx
  • redis
  • memcached
  • consul
kubectl run eshop-frontend --image=nginx --dry-run=client -o yaml > 3-2.yaml
3-2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: eshop-frontend
spec:
  containers:
  - image: nginx
    name: nginx-container
  - image: redis
    name: redis-container
  - image: memcached
    name: memcached-container
  - image: consul
    name: consul-container
kubectl apply -f 3-2.yaml
kubectl get pod eshop-frontend

Sidecarコンテナ

  • 基本コンテナ機能を拡張するために利用。本来のコンテナは基本サービスを実行し、追加機能を別途コンテナを利用して適応

CKA試験例4

現在の運用中のeshop-cart-app PodのログをKubernetes built in loggingアーキテクチャに統合するログストリミんぐサイドカーコンテナを運営しなさい

  • busyboxイメージを利用したpriceという名前のサイドカーコンテナを既存のeshop-cart-appに追加します
  • 新たなpriceコンテナは次のコマンドを実行する必要があります`/bin/sh, -c, "tail -n+1 -f /var/log/cart-app.log"
  • /var/logにマウントしたVolumeを利用し、サイドカーコンテナでログファイルcart-app.logうぃ利用する必要があります
  • eshop-cart-appPODとcart-appコンテナを修正しないでください
kubectl get pod eshop-cart-app -o yaml > 3-3.yaml
3-3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: eshop-cart-app
  namespace: default
  resourceVersion: "978814"
  uid: a9800501-c50e-4168-a142-347ea9173433
spec:
  containers:
  - command:
    - /bin/sh
    - -c
    - 'i=1;while :;do  echo -e ": Price: 1875" >> /var/log/cart-app.log; i=1; sleep
      2; done'
    image: busybox
    name: cart-app
    volumeMounts:
    - mountPath: /var/log
      name: varlog
  - name: price
    image: busybox:1.28
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/cart-app.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}
kubectl apply -f 3-3.yaml

チートシート

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?