侧边栏壁纸
博主头像
码途 博主等级

行动起来,活在当下

  • 累计撰写 72 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
k8s

Deployment, Pod, static-pod - k8s

htmltoo
2023-12-14 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

1-定义一个Deployment

1.1-tomcat-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  labels:
  	app: app-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      tier: frontend
    matchExpressions:
      - {key: tier, operator: In, values: [frontend]}
  template:
    metadata:
      labels:
        app: app-demo
        tier: frontend
    spec:
      containers:
      - name: tomcat-demo
        image: kubeguide/tomcat-app:v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080

1.2-相关解释

  • apiVersion: apps/v1 #API版本,可以通过kubectl api-versions查看

  • kind: Deployment #资源类型,可通过kubectl api-resources查看

  • metadata #资源元数据

  • metadata.name #该资源的名称

  • metadata.labels #定义资源的标签,此处定义了一个app=app-demo的标签

  • spec #资源规格

  • spec.replicas #Pod副本数量

  • spec.selector #标签选择器,此处表示自己控制tier=frontend的Pod

  • spec.template #Pod模板

  • spec.template.metadata #Pod的元数据

  • spec.template.metadata.labels #Pod的标签应该包含Deployment控制的标签

  • spec.template.spec #Pod规格

  • spec.template.spec.containers #容器配置

1.3-查看资源

kubectl get deployment

1.4-字段说明

  • # NAME:列出namespace中Deployment的名称(不指定namespace则默认为Default)

  • # READY:显示可用副本数。显示的模式是“就绪个数/期望个数”

  • # UP-TO-DATE:为了达到期望状态已经更新的副本数

  • # AVAILABLE:应用可供用户使用的副本数

  • # AGE:显示deploy运行的总时间

2-定义一个Pod

2.1-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'的环境变量

2.3-创建Pod

kubectl apply -f tomcat.yaml

2.4-验证

kubectl get pod --show-labels

kubectl describe pod tomcat

-容器名为tomcat,使用的镜像为kubeguide/tomcat-app:v1,监听的端口为8080

kubectl get pod -o wide

-在集群任意主机通过curl 10.244.1.9:8080可以访问

3-静态Pod

3.1-概念

不能通过API Server进行管理,无法与RC、Deployment或者

DaemonSet进行关联,并且kubelet无法对它们进行健康检查

静态Pod的默认配置目录为/etc/kubernetes/manifests/,

kubelet会定期扫描静态Pod的配置目录,根据目录下的yaml启动或者删除Pod

静态Pod的配置目录可以通过/var/lib/kubelet/config.yaml设置,修改staticPodPath的值,然后重启Kubelet即可

3.2-创建一个静态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

静态Pod名字后面会带上当前节点的名字

用kubectl删除该Pod,kubectl delete pod static-pod-k8smaster,发现并不能删除,那该怎么删除呢?

直接删除静态Pod的yaml文件即可

0

评论区