私たちはポッドを解決するためにしている場合は、手動で問題が発生し、再起動、焼畑農業の時代はそれではありません前に戻っているようだ、役立つツールがある場合、私たちは、私が自動に追加ヘルプをうまくポッド、ポッドの十分な管理ポッドは、自動的に適切なノード上で私のポッドで新たなスタートを与えるハングアップ、これは我々が手動で解決するの出会いを再起動する必要はありません問題はありません。
幸い、Kubernetesは私たちのために、このようなAリソースオブジェクトを提供します:
- レプリケーションコントローラー:デプロイするために、ポッドをアップグレード
- レプリカセット:次世代のレプリケーションコントローラー
- 展開:より簡単にポッドとレプリカセットを管理することができます
このセクションでは、さらにreplicaSetとReplicationControllerを話します。
一、ReplicationController
レプリケーションコントローラはRCと呼ばれる、RCは、簡単な言葉で、コアコンセプトKubernetesシステムの一つであるRCは、ポッドは常に利用を保証するために、ポッドを実行するために、いつでもコピーの数を保証することができます。実際の数は実際の数は、少ないポッド障害が、削除された新たなスタートにポッドの指定された数、以上である場合には、過剰オフ指定されたポッドの終わりよりも多くのことやハングアップ希望の場合、RCは自動的に行くポッドを確保するための新しいコピーを作成します番号、だけでもポッド場合、我々はまた、私たちのポッドを管理するためにRCを使用する必要があります。Kubernetesは、高可用性クラスタを実現、ReplicationControllerによって、言うことができます。
- スタートプレゼンテーション
#启动k8s
minikube start
#删除上次的pod
kubectl delete -f pod_nginx.yml
- ビューrc_nginx.yml
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
YAMLファイルを上記:
- 種類:ReplicationController
- spec.replicas:ポッドは、部数を指定し、デフォルトは1
- spec.selector:RCフィルタポッドプロパティによって制御されます
- spec.template:ここに私達の前のモジュールのポッドの定義があるが、種類やapiVersionを必要としません。
- spec.template.metadata.labels:ノートポッドへのラベルやspec.selector同じなので、あなたがポッドを制御することができるので、現在のRCいること。
#创建一个ReplicationController的横向扩展
kubectl create -f rc_nginx.yml
kubectl get pods
kubectl get rc
- どのように効果を見て削除します。
削除ポッドの方法でコンテナを削除し、すぐに新しいコンテナアップするには
kubectl get rc
kubectl get pod
kubectl delete pods nginx-h2qbt
kubectl get pods
kubectl get rc
- の数の水平展開をスケーリング
kubectl scale rc nginx --replicas=2
kubectl get rc
kubectl scale rc nginx --replicas=5
kubectl get pods -o wide
二、さらにreplicaSet
複製セットがKubernetesの急速な発展に伴い、当局は、我々はRCを置き換えるためにRSと展開を使用することをお勧めRSとRC機能は、基本的には実際には同じであるが、RSと呼ばれる、唯一の違いは、(RCのみの方程式ベースのセレクタをサポートしていることですENV = DEVや環境!= QA)が、また、RSベースのセレクタのコレクション((v1.0を、V2.0でのバージョン))をサポートし、この複雑な操作や保守管理が非常に便利です。
RCはまた、当社のRSリソースオブジェクトに適用されるほとんどのコマンドにkubectlコマンドラインツール。しかし、我々はめったにそれは主にカスタム機能をアップグレードするか、何のポッドをアップグレードするユーザーのニーズがない限り使用しない、より高レベルのリソースオブジェクトの展開で、一人でRSに行きません、一般的に、我々は展開ではなく、直接の使用を使用することをお勧めしますセットのレプリカ。
ここでは概要およびRC / RSの役割のいくつかの特徴があります:
- ほとんどの場合、我々はコピーポッド制御のRC創出の実現と数を定義することができます
- RCポッド(apiversionと種類を含まない)完全な定義モジュールが含まれています
- RCは、ラベルセレクタ機構によるポッドコピーの制御を達成することです
- スケーリング関数を受信ポッドを達成することができるRCポッドのコピーの数を変えることにより
- ポッドは、アップグレード機能をローリング達成することができRCのポッドテンプレートミラーリングバージョン変更することで(ただし、キーロールバックをサポートしていませんが、あなたは同じようにミラーアドレスを変更する必要があります)
- ビューrc_nginx.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx
labels:
tier: frontend
spec:
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
name: nginx
labels:
tier: frontend
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
#删除ReplicationController创建的pod
kubectl delete -f rc_nginx.yml
#创建一个ReplicationController的横向扩展
kubectl create -f rs_nginx.yml
kubectl get pods -o wide
kubectl get pods
kubectl get rc
- どのように効果を見て削除します。
削除ポッドの方法でコンテナを削除し、すぐに新しいコンテナアップするには
kubectl get rs
kubectl get pod
kubectl delete pods nginx-h2qbt
kubectl get pods
kubectl get rs
- の数の水平展開をスケーリング
kubectl scale rs nginx --replicas=2
kubectl get rs
kubectl scale rs nginx --replicas=5
kubectl get pods -o wide
ポッドのこの拡大の理解を通じて、さらにreplicaSetとReplicationControllerの方法は、基本的にアプリを作成するための直接的ポッド最後の道を断念します。次の話の展開。