リファレンスブック:「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ファイルを直接削除するだけです