美文网首页
K8S的各种资源使用技巧

K8S的各种资源使用技巧

作者: JohnYuCN | 来源:发表于2022-02-17 17:05 被阅读0次

本文使用busybox镜像,并尽量使用命令行,试图解释K8S中的各种资源。

一、 一个pod的配置(busy-pod.yaml)

apiVersion: v1
kind: Pod
metadata:
  name: busy-pod
spec:
  restartPolicy: Never
  containers:
  - name: busy-container
    image: "busybox"
    command: ["/bin/sh","-c"]
    args: ["echo hello>/var/www/index.html && httpd -p 80 -h /var/www&& tail -f /dev/null"]

可以使用以下命令创建一个pod,但无法直接用create pod 的方法直接创建一个pod

kubectl create -f busy-pod.yaml

但此时只能在某一个node中创建pod,也无法进行scale。

二、 使用busybox 创建一个deployment:

1. 命令方式

kubectl create deployment busy-deploy --image=busybox -- /bin/sh -c "httpd -p 80 tail -f /dev/null"

此时会创建一个名字为busy-deploy的对象,同时会创建一个以busy-deploy开头的pod。

2. yaml形式,busy-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: busy-deploy # deployment的名字
spec:
  selector:
    matchLabels:
      run: busy-http #使用label对template中的pod进行选择
  replicas: 1 # 水平生成pod的复制集
  # 生成pod的模板
  template:
    metadata:
      labels:
        run: busy-http #使用label,为其它资源使用该pod提供依据
    spec:
      containers:
      - name: busy-http-container #出现在docker容器的名字中
        image: busybox
        # 容器默认执行的命令,tail -f 是保证程序始终处于前台阻塞
        command: ["/bin/sh","-c"]
        args: ["echo hello>/var/www/index.html && httpd -p 80 -h /var/www&& tail -f /dev/null"]
        # 在pod中的container开放的端口(也可以不设置)
        ports:
          - containerPort: 80

3. 对deployment进行水平扩容

无论是用何种方式创建的deployment,都可以使用以下方式进行动态的扩容:

kubectl scale deployment/busy-deploy --replicas=3

三、创建Service

1. 命令行:

(1) 利用已发布的deployment,创建service

kubectl expose  deployment busy-deploy --name=busy-svc1 --port=3001 --target-port=80 type=NodePort

此时,可以使用service的ip:port,或host的ip:随机分配的端口,访问服务。
(2) 也可以利用pod进行发布:

kubectl expose pod busy-deploy-68dd7c4c75-679dz --name busy-svc2 --port 3003 --target-port=80 --type=NodePort

此时,只也可在service ip和host ip上都 可以访问service,但pod是不可以进行针对本服务的扩容的。

2. 配置方式:

apiVersion: v1
kind: Service
metadata:
  name: busy-svc
spec:
  type: NodePort
  ports:
    - port: 9000
      targetPort: 80
      nodePort: 30001
  selector:
    run: busy-http

在此使用selector选择,由(二.2)的template生成的所有的pod

相关文章

  • K8S的各种资源使用技巧

    本文使用busybox镜像,并尽量使用命令行,试图解释K8S中的各种资源。 一、 一个pod的配置(busy-po...

  • k8s各种资源介绍

    k8s各种资源介绍 k8s最小的资源单位pod 使用私有仓库 为了方便节点下载镜像,搭建私有仓库docker ru...

  • 外部Prometheus监控k8s集群资源

    Prometheus监控k8s资源 通过Prometheus监控k8s集群中各种资源:如微服务,容器资源指标 并在...

  • pod学习2

    pod资源标签使用技巧 在k8s之上,每一种资源都可以有一个标签,现实中用到的pod数量可能越来越多,我们期望能够...

  • k8s容器资源可见性配置-lxcfs

    k8s 容器资源可见性配置-lxcfs 问题 使用k8s容器化后,对内存 CPU 资源限制后,在容器内查看资源,显...

  • Ansible的k8s模块完全兼容OpenShift资源

    Ansible的k8s模块完全兼容openshift资源 安装 使用k8s模块需要安装openshift的pyth...

  • K8s一些常用命令合集

    本文旨在记录K8s使用过程中常用的CLI命令集,下面就针对K8s集群中各种资源对象的不同操作对其相关命令简单做以下...

  • 4 存储与资源管理

    k8s卷管理 k8s和docker默认使用本地的主机磁盘 容器卷生命周期 在资源短缺下,k8s可能会停止容器,在相...

  • k8s各种资源对象

    全部可以从官网查询, 这里是常用的几个, 可以从kubectl [command] [type] [name] [...

  • 编写一个自定义K8s Controller

    在 K8s 中当我们需要监控某个资源的变化并作一系列操作时,使用 K8s 提供的 controller 机制来实现...

网友评论

      本文标题:K8S的各种资源使用技巧

      本文链接:https://www.haomeiwen.com/subject/hrrslrtx.html