コンポーネントの原理
7985 ワード
クバーネディスコンポーネント
Control Plane / Master node
Worker node
kube-apiserver
アプリケーションプログラミングインターフェース(API)とは
コンピュータ・プログラム間の相互作用と情報交換を促進するためのデータと機能のセットを提供します.
ko.wikipedia.org/wiki/REST
APIサーバの動作
クライアント認証-認証プラグイン
-APIサーバは、1つ以上のプラグインによってクライアント認証を実行します.
-HTTPリクエストを確認して実行-認証方法に従って証明書またはHTTPヘッダから情報を収集
-プラグインはクライアントのユーザー情報を抽出し、承認フェーズでこれらのデータを使用します.
クライアントまたは承認プラグイン
-APIサーバは、要求されたタスクが要求されたリソースに対して実行できるかどうかを決定する
要求されたリソースの確認と変更-コントローラプラグインの追加
-リソースの作成、変更、削除時にAdd Controllerに要求を送信します.
-欠落したフィールドを初期値に設定するか、初期値に再定義します.
リソースの検証と保存
-APIサーバは、検証対象の有効性→etcdに保存→クライアントに応答を返す
APIサーバの呼び出し
$ kubectl cluster-info
Kubernetes control plane is running at https://10.178.0.41:26443
$ curl https://10.178.0.41:26443
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
認証と承認
# kubeconfig 파일로부터 CA 인증서 추출
kubectl config view --minify --raw --output 'jsonpath={..cluster.certificate-authority-data}' | base64 -d > k8s-ca.cert
# --cacert 옵션으로 사용자가 명시적으로 CA 인증서 제공
curl --cacert k8s-ca.cert https://<IP>:<Port>
# JWT 토큰 추출
TOKEN=$(kubectl get secret $(kubectl get sa default -ojsonpath="{.secrets[0].name}") -ojsonpath="{.data.token}" | base64 -d)
# 권한 부여
kubectl create clusterrolebinding default-cluster-admin --clusterrole cluster-admin --serviceaccount default:default
# JWT 토큰을 헤더로 넣어서 사용자 인증
curl -k -H "Authorization: Bearer $TOKEN" https://<IP>:<Port>
Handle
# Node list
curl -v -k -X GET -H "Authorization: Bearer $TOKEN" https://<IP>:<Port>/api/v1/nodes
# Pod list
curl -v -k -X GET -H "Authorization: Bearer $TOKEN" https://<IP>:<Port>/api/v1/namespaces/default/pods
# Pod delete
curl -v -k -X DELETE -H "Authorization: Bearer $TOKEN" https://<IP>:<Port>/api/v1/namespaces/default/pods/mynginx
# API에 대한 curl 호출 방법 출력
kubectl get service -v 9
etcd (HA Cluster)
etcdは、api-serverとのみ通信するkey-value形式で分散されたデータ・リポジトリです.
Cluster & HA Cluster
したがって、
HAクラスタは、プライマリノードのInstanceを各プライマリノードに配備する
Options for HA topology
Stacked etcd topology
欠点:ThisトポロジはHAトポロジをスタックするホスト数の2倍を必要とする.etcdクラスタ(一貫性)
ko.wikipedia.org/wiki/raft(コンピュータ科学)
kube-proxy
エージェントの典型的な役割は、接続によってクライアントとサーバのトラフィックをクライアントに渡すことです.
kube-proxy : process that runs on each node in the kubernetes cluster to look for new services and every time a new service is created, it creates the appropriate rules on each node to forward traffic to those services to the backend pods
Netfilter (Network Packet Filtering Framework)
www.netfilter.org
kube-proxy
M-mode update=初期(ユーザ空間)→現在(iptables)→IPVS
モード操作
userspace
iptable(現在のデフォルト)
IPVS
メソッドの変更
Options for Highly Available topology
コーヒークジラ/クバーネディスAPIサーバーは本当にAPIサーバーだけです。
eunsukim/クバーネディスの内部動作原理を理解する
伊庫の知恵開発生活/54。Kuberneteskube-proxyモード解析
Can Do It
brb
Reference
この問題について(コンポーネントの原理), 我々は、より多くの情報をここで見つけました https://velog.io/@wqend1001/구성요소-원리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol