目次
1.スケジューリング制約プロセスの分析
1.まず、ユーザーはkubectlコマンドまたはdashborad、API呼び出し(開発用)を介してリソースを作成および管理できます(Kubernetesは監視メカニズムを使用して各コンポーネントと連携し、各コンポーネント間の設計はデカップリングを実現します)
2。ユーザーがAPIサーバーにリソース作成のリクエストを送信します。APIサーバーは作成されたリソースのメタ情報(属性情報)をetcdに書き込みます。etcdは現在の作成状態を記録し、その情報をAPIサーバーに返します。情報はに返されます。ユーザー
3.APIサーバーは監視メカニズムを使用して他のコンポーネントを呼び出し(これらのコンポーネントはK8Sでは互いに独立しています)、最初にスケジューラスケジューラを呼び出し、リソースが作成されたノードノードをスケジューラに計算させ、情報をToに返します。 APIサーバー、APIサーバーは作成されたリソースのアドレスをetcdに書き込み、etcdレコードが完了した後に情報がAPIサーバーに返されます。APIサーバーはスケジューラーに情報を返し、情報の記録が完了したことをスケジューラーに通知します
。次にコンピューティングリソースが作成されるときに、以前に計算されたデータも考慮されます。4。APIサーバーは、監視メカニズムを使用してコントローラーを呼び出します。-manager(コントローラー)は、リソースの作成を記録します。入力して、kubeletをスケジュールします。kubeletがコマンドを受信すると、APIサーバーをプロキシしてdockerエンジンをスケジュールし、docker runがリソースを作成し、dockerが情報をkubeletに返します。 (コンテナは実行中です)、kubeletはコンテナの実行ステータスをAPIサーバーに返します(kubeletにはetcdを直接スケジュールする権限がありません)。APIServerは情報をetcdに書き込み、情報を更新して、APIServerに情報を返します。 etcdの記録が完了した後、APIServerはその後の管理操作のためにkubeletをスケジュールします
1.1。スケジューリング方法
■nodeNameは、指定されたノード名にポッドをスケジュールするために使用されます(スケジューラーをスキップして直接割り当てます)
■nodeSelectorは、ポッドをノード一致ラベルにスケジュールするために使用されます
1.2、例1 nodeName
[root@master01 demo]# vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: nginx
spec:
nodeName: 192.168.140.30 #跳过调度器直接分配
containers:
- name: nginx
image: nginx:1.15
[root@master01 demo]# kubectl create -f pod1.yaml
[root@master01 demo]# kubectl describe pod pod-example
[root@master01 demo]# kubectl get pods
[root@master01 demo]# kubectl delete -f. #清空当前目录下的所有pod(慎用!)
1.3、例2 nodeSelector
[root@master01 demo]# kubectl get nodes
[root@master01 demo]# kubectl label nodes 192.168.140.20 abc=a
[root@master01 demo]# kubectl label nodes 192.168.140.30 abc=b
[root@master01 demo]# kubectl get nodes --show-labels
[root@master01 demo]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: httpd
spec:
nodeSelector:
abc: b
containers:
- name: httpd
image: httpd
[root@master01 demo]# kubectl apply -f pod.yaml
[root@master01 demo]# kubectl describe pod pod-example
[root@master01 demo]# kubectl get pods -o wide
2.トラブルシューティング
2.1、故障現象
2.2、トラブルシューティングのアイデア
■ポッドイベントを表示する
kubectl describe TYPE NAME_PREFIX
■ポッドログの表示(失敗状態)
kubectl logs POD_NAME
■ポッドを入力します(ステータスは実行中ですが、サービスは提供されていません)
kubectl exec –it POD_NAME bash