コピーPods
15192 ワード
種子を安定させる方法
prob
ノードのkubelet
は、シードが存在する限り、シードのコンテナを実行します.
ではkubelet
パドのコンテナが正常であることをどのように確定しますか?
これを確認するために使用するオプションはliveness probe
です.
livenessという言葉のように、定期的に容器が生きているかどうかをチェックすることができます.これも、サービスが正常に動作する重要な環境で使用する必要があるオプションです.
livenessオプションが適用されたパイドコンテナがアクティブでないと判断した場合(定期的なチェックのフィットネスロジックに応答しない場合)、kubeletはコンテナを再実行します.
livenessprobeでは、この健康診断ロジックをアプリケーションのプライマリ・サービス(ex:order/payment支払)に指定して、キー・サービスが正常に動作していることを確認できます.
しかし、プローブが働きすぎると、容器の速度が遅くなるため、1秒以内に完了する論理を構成する必要があります.
probには3つのシリーズがあります
exec-liveness.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
applyとdescripeで確認すると、以下のリアルタイムオプションが含まれています.今回は、上記のオプションを見てみましょう.
replicaSet ( ReplicationController)
https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicationcontroller/
https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
Replicationコントローラは、シードが常に動作することを保証するクバーネディスリソースです.ノードがクラスタから消えた場合、またはノードからシードが除去された場合、アプリケーションコントローラは消えたシードを検出し、代替シードを生成します.また、実行中のシード数が実際に指定したシード数と一致していることを確認します.
アプリケーションコントローラの3つのコンポーネント
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
kubectl apply -f replicationconroller.yaml
しかし、このリフレッシュコントローラは最近、リフレッシュに取って代わられた.
Reflicasetは、Reflicationコントローラと比較して、より豊富な式を使用してセレクタ機能を改善します.
それは後で見て、まずReflicaコントローラとあまり変わらないReflicasetを見てみましょう.
replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
spec:
# 케이스에 따라 레플리카를 수정한다.
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google_samples/gb-frontend:v3
label
レプリケーションコントローラ(ReplicationController,ReplicationSet)はラベルベースなのでラベルが重要です.
kubectl label pods --show-labels
kubectl get pods -L type
コピーの編集
Reflicaであるシード数を編集する方法は3つあります.
このようにパードの個数を増やすことを水平パードスケールと呼び,scaloutと呼ぶ.
今回は使い切ったリソースを削除します
kubectl delete rs {rs 이름 } --cascade=false
--cascade=falseオプションは、シードを保持し続けます.trueを与えると、実行中のシードも削除できます.複製セットの式
前述したように、replicasetは、より豊富な式matchexpressionsを使用することができる.
selector:
metchExpressions:
- key: app
operator: In
values:
- app2
このセレクタにはpadキーがappであるラベルが含まれ、ラベル値がapp 2である必要があります.また、バッテリに次のオプションを追加することもできます.
悪魔3
https://kubernetes.io/ko/docs/concepts/workloads/controllers/daemonset/
クバーネディスクラスタは通常、ノードから構成されません.複数のノードからなる環境で各ノードにシードを配置する場合は、
daemonSet
を使用します.デーモンプロセスセットは、ノード数に応じてシードを作成し、各ノードに配布します.
デーモンプロセスセットを使用するように設計できますが、特定のノードにのみ配置できます.すなわち、
node-selector
プロパティを使用します.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
tolerations:
# this toleration is to have the daemonset runnable on master nodes
# remove it if your masters can't run pods
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
containers:
- name: fluentd-elasticsearch
image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
EFKは各ノードにFluentdとElasticsearchをインストールして各ノードのログを収集する必要がある.上記の例は、yamlスクリプトに適用されます.配置するノードを選択して配置することもできます.ノードにlabelを追加し、department、rs、daemonsetにlabelを追加すると、指定したノードに配置されます.
kubectl get node
kubectl label node {node name} disk=ssd
kubectl label node {node name} disk=hdd --overwride
ちゃんぽん
ヘテロから1つ以上のシードを生成し、指定した数のシードが正常に終了するまでシードを再試行し続けます.種子が正常に完了すると,完了したヘテロ波を追跡し,ヘテロ波を完了する.キャプチャが削除されると、そのキャプチャが生成されたシードも削除されます.
job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
5つのシードを順次実行する場合は、次のオプション
Completions
を使用します.apiVersion: batch/v1
kind: Job
metadata:
name: multi-job
spec:
completions: 5
template:
spec:
containers:
- name: pi2
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
5つのフィードを並列に実行する場合は、どのくらいのフィード
parallelism
を並列に実行するかを指定できます.apiVersion: batch/v1
kind: Job
metadata:
name: multi-job
spec:
completions: 5
parallelism: 2
次の実行可能ファイルを表示すると、両方が同時に実行されていることがわかります.このような雑用を一定時間おきに実行したい場合は、どうすればいいですか?
コロン雑
https://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/
この場合
Crontab
を使用できます.次のスクリプトは毎分hellopodsを生成します.
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
賭け時間は
schedule
オプションで、導入スケジュールとともに参照できます.リファレンス
クバーネディス公式文書
クバーネディス動作
Reference
この問題について(コピーPods), 我々は、より多くの情報をここで見つけました https://velog.io/@borab/Pods-의-replicationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol