目次
1. リソースの詳細情報を表示します: kubectl describe pod pod_name -n nameapace
2. 指定された名前空間内のポッドの基本情報を確認します: kubectl get pods -n namespace
3. ホスト全体でコンテナにログインします: kubectl exec -it pod_name /bin/bash -n namespace
4.1. Pod を直接削除します。しかし、デプロイ、レプリカ コントローラーはまだそこにあり、彼は自分で別のものを作成します。
4.2. ポッド レプリカ コントローラーのデプロイを削除します。
4.3. 削除プロセス中に蛾が存在する場合、Pod は削除できず、常に終了状態になっているため、強制削除 --force --grace-period=0 を実行します
7. ポッド ネットワーク ステータスの詳細とサービス公開ポートを確認する
1. Pod を作成し、nginx インスタンスを開始し、コンテナー ポート 80 を公開し、レプリカ セットを 3 に設定します (ポッドの作成)。
1. kubectl コマンドの詳細説明
1. リソースの詳細情報を表示します: kubectl describe pod pod_name -n nameapace
[root@master ~]# kubectl describe pods -n kube-public
### 指定された名前空間のポッドの詳細を表示します
Name: nginx-w1-7464d66457-psk6h
Namespace: kube-public
Priority: 0
Node: node01/192.168.159.11
Start Time: Wed, 02 Nov 2022 01:40:47 +0800
Labels: app=nginx-w1
pod-template-hash=7464d66457
Annotations: <none>
Status: Running
IP: 10.150.1.3
IPs:
IP: 10.150.1.3
Controlled By: ReplicaSet/nginx-w1-7464d66457
Containers:
nginx:
Container ID: docker://4011df060a9ad777793f061675fc1a784f4effe56f5585d91d5ba3670660c620
Image: nginx
Image ID: docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
Port: <none>
Host Port: <none>
State: Running
Started: Wed, 02 Nov 2022 01:41:06 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-llzgh (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-llzgh:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
Name: nginx-x1-77484d895f-ddhqt
Namespace: kube-public
Priority: 0
Node: node02/192.168.159.13
Start Time: Thu, 03 Nov 2022 16:16:11 +0800
Labels: app=nginx-x1
pod-template-hash=77484d895f
Annotations: <none>
Status: Running
IP: 10.150.2.3
IPs:
IP: 10.150.2.3
Controlled By: ReplicaSet/nginx-x1-77484d895f
Containers:
nginx:
Container ID: docker://ecc07803682f2d7a51037024354dae0d190841443121ca0a8514ab224179cbf5
Image: nginx:latest
Image ID: docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
Port: <none>
Host Port: <none>
State: Running
Started: Thu, 03 Nov 2022 16:16:36 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-47hxr (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-47hxr:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
2. 指定された名前空間内のポッドの基本情報を確認します: kubectl get pods -n namespace
[root@master ~]# kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-w1-7464d66457-psk6h 1/1 Running 0 43h
nginx-x1-77484d895f-ddhqt 1/1 Running 0 5h12m
3. ホスト全体でコンテナにログインします: kubectl exec -it pod_name /bin/bash -n namespace
root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public
[root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@nginx-x1-77484d895f-ddhqt:/#
4. ポッドを削除する
4.1. Pod を直接削除します。しかし、デプロイ、レプリカ コントローラーはまだそこにあり、彼は自分で別のものを作成します。
[root@master ~]# kubectl delete pod nginx- -n kube-public
pod "nginx-w1-7464d66457-psk6h" を削除
①.PODを直接削除
②本来のpod_nameと違うことを確認し、
4.2. ポッド レプリカ コントローラーのデプロイを削除します。
[root@master ~]# kubectl delete deployment nginx-w1 -n kube-public
4.3. 削除プロセス中に蛾が存在する場合、Pod は削除できず、常に終了状態になっているため、強制削除 --force --grace-period=0 を実行します
5. コマンドラインの伸縮
5.1. レプリカセットの拡張
①オリジナルレプリカセットを見る:1
②レプリカセットを4つに拡張
5.2. レプリカセットのスケールダウン
上記の結果に基づいて実験を行い、--replicas=2 を設定し、レプリカ セットの数を指定した後、既存のレプリカ セットの数を期待値と比較して、拡張するか縮小するかを決定します。
6. サービスの削除
[root@master ~]# kubectl delete svc nginx-server -n default
[root@master ~]# kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.125.0.1 <none> 443/TCP 2d6h
nginx-server NodePort 10.125.126.34 <none> 80:30537/TCP 45m
nginx1-server NodePort 10.125.103.25 <none> 80:31070/TCP 2m41s
[root@master ~]# kubectl delete svc nginx-server -n default
service "nginx-server" deleted
7. ポッド ネットワーク ステータスの詳細とサービス公開ポートを確認する
[root@master ~]# kubectl get svc,pods -n default
8. 関連するノードを表示する
[root@master ~]# kubectl get endpoints
[root@master ~]# kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 192.168.159.10:6443 2d6h
nginx1-service 10.150.1.10:80,10.150.1.9:80,10.150.2.9:80 32m
9. サービスの説明情報を表示する
[root@master ~]# kubectl describe svc nginx
[root@master ~]# kubectl describe svc nginx
Name: nginx1-service
Namespace: default
Labels: app=nginx
Annotations: <none>
Selector: app=nginx
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.125.32.0
IPs: 10.125.32.0
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 31625/TCP
Endpoints: 10.150.1.10:80,10.150.1.9:80,10.150.2.9:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
10. コア コンポーネントのログを表示する
kubeadm によってデプロイされた K8S
kubectl ログ -f pod_name -n 名前空間または journalctl -u kubelet -f
バイナリ展開による K8S
journalctl -u kubelet -f
2.ポッドのライフサイクル
Pod のライフ サイクルとは、作成から削除までの過程で Pod が保持し経験する状態を指します。
ポッドには次の 2 種類があります。
①、自律: コントローラの管理はセルフサービスではありません。削除するときは削除するだけ
②. 宣言型: コントローラーが管理する Pod。(普段使っているタイプ)
1. Pod を作成し、nginx インスタンスを開始し、コンテナー ポート 80 を公開し、レプリカ セットを 3 に設定します (ポッドの作成)。
名前空間がデフォルトです
[root@master ~]# kubectl create deployment nginx-ceshi --image=nginx:1.14 --port 80 --replicas=3
deployment.apps/nginx-ceshi created
2. リリース: kubectl 公開コマンド
3. ポートを確認する
3. サービスの種類
①、clusterIP:Podアクセス用にクラスタ内に仮想IPを提供(サービスデフォルトタイプ)
②、NodePort: 外部アクセスのために各ノードでポートを開きます。Kubernetes は各ノードでポートを開き、各ノードのポートは同じであり、NodeIp:NodePort を介して、Kubernetes クラスター外のプログラムがサービスにアクセスできます。各ポートは 1 つのサービスのみであり、ポート範囲は 30000 ~ 32767 のみです。
③. LoadBalancer: LoadBalancer を設定して、クラウド サービス プロバイダーが提供する LoadBalancer アドレスにマップします。この使用法は、パブリック クラウド サービス プロバイダーのクラウド プラットフォームでサービスをセットアップするシナリオでのみ使用されます。外部ロード バランサーを介してアクセスするには、通常、クラウド プラットフォームに LoadBalancer をデプロイするための追加料金が必要です。
④、externalName: サービス名を DNS ドメイン名にマッピングします, これは DNS サービスの CNAME レコードに相当し、Pod がクラスター外のリソースにアクセスできるようにするために使用されます. Pod 自体はリソースをバインドしません.