k8sポッドの詳細な説明

リファレンスブック:「KubernetesAuthoritative Guide 4th Edition Full Contact from Docker to KubernetesPractice」


1.ポッドの概念

ポッドはk8の最小単位であり、コンテナのセットが含まれています。そのうちの1つは、「ルートコンテナ」とも呼ばれる一時停止コンテナです。

ポッド内の複数のサービスコンテナは、ネットワークと一時停止コンテナのボリュームを共有します。

ポッドは短命です。

各ポッドには、ポッドIPと呼ばれる一意のIPアドレスがあります。K8Sクラスターでは、ポッド内のコンテナーは別のホスト上のポッドコンテナーと直接通信できます

2つ目は、ポッドを定義する

2.1. YAML文件tomcat.yaml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
  labels:
    name: tomcat
  namespace: cka
spec:
  containers:
  - name: tomcat
    image: kubeguide/tomcat-app:v1
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
    - containerPort: 8080
    env:
    - name: MYSQL_SERVICE_HOST
      value: 'mysql'

2.2. 相关解释

apiVersion: v1					#核心API
kind							#指明资源类型,此处为Pod
metadata						#元数据,用于描述当前资源类型。
metadata.name					#Pod的名称为tomcat
metadata.labels.name			#定义该Pod有一个名为name=tomcat的标签
metadata.namespace				#指定该Pod属于哪个命名空间
spec							#定义Pod里面的容器组
spec.containers					#定义容器组
containers.name					#容器的名字为tomcat
containers.image				#容器使用的镜像为kubeguide/tomcat-app:v1
containers.imagePullPolicy		#IfNotPresent表示如果本地存在就不去镜像仓库拉取,不存在则拉取
containers.resources			#定义容器的资源配额
resources.requests				#定义请求的资源,现只支持CPU和内存,此处申请0.25个CPU和64MiB内存,
								#	该值必须小于或者等于limits设置的值
resources.limits				#资源最多申请0.5个CPU和128MiB内存
containers.ports				#定义端口
ports.containerPort				#容器应用监听的端口为8080
containers.env					#往容器注入环境变量,以KV键值对的形式。此处注入了MYSQL_SERVICE_HOST='mysql'的环境变量

kubectl apply -f tomcat.yaml#Createポッド

2.3. 验证

kubectl get pod --show-labels

ポッドの名前はtomcatで、name = tomcatのラベルがあります。
ここに写真の説明を挿入

kubectl describe pod tomcat

コンテナの名前はtomcat、使用されるイメージはkubeguide / tomcat-app:v1、リスニングポートは8080です。
ここに写真の説明を挿入
リソースクォータと環境変数
ここに写真の説明を挿入
は、イメージがすでにローカルで利用可能であることを示します。
ここに写真の説明を挿入

kubectl exec -it tomcat  bash			#登陆到Pod的第一个容器,由于这里只有一个业务容器,默认就是tomcat容器

環境変数が正常に挿入されました
ここに写真の説明を挿入

kubectl get pod -o wide

ポッドIPは10.244.1.9であり
ここに写真の説明を挿入
、クラスター内の任意のホストにcurl 10.244.1.9:8080を介してアクセスできます。
ここに写真の説明を挿入

3つの静的ポッド

概念

静的ポッドは、特定のノードにのみ存在し、kubeletによって管理されるポッドです。API Serverで管理したり、RC、Deployment、または
DaemonSetに関連付けたり、kubeletでヘルスチェックを実行したりすることはできません。

静的ポッドは常にkubeletによって作成され、kubeletが配置されているノードで常に実行されます。

kubeadmによって構築されたK8sクラスターでは、静的ポッドのデフォルト構成ディレクトリは** / etc / kubernetes / manifests / **です。Kubeletは静的ポッドの構成ディレクトリを定期的にスキャンし、ディレクトリ内のyamlに従ってポッドを開始または削除します。

次のシステムコンポーネントはすべて
ここに写真の説明を挿入
静的ポッドの形式で開始されていることがわかります。静的ポッドの構成ディレクトリ/var/lib/kubelet/config.yaml設定して、staticPodPathの値を変更してから、Kubeletを再起動できます。
ここに写真の説明を挿入

创建一个静态Pod

/ etc / kubernetes / manifests /に次のyamlファイルを作成します

apiVersion: v1
kind: Pod
metadata:
  name: static-pod
  labels:
    name: static-pod
spec:
  containers:
  - name: static-pod
    image: nginx
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80

静的ポッドの名前の後に現在のノードの名前が続きます。
ここに写真の説明を挿入
ポッドを削除するにはkubectlを使用し、ポッドを削除するにはkubectl delete pod static-pod-k8smasterを使用すると、削除できないことがわかります。

静的ポッドのyamlファイルを直接削除するだけです

おすすめ

転載: blog.csdn.net/anqixiang/article/details/107978496