zoukankan      html  css  js  c++  java
  • kubernetes之创建初始化容器

    简介

    此文讲述在应用容器运行之前如何使用初始化容器。

    备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。

    创建一个有初始化容器的Pod

    创将一个Pod,该Pod中包含一个应用容器和初始化容器。在应用容器开始之前,初始化容器的初始化任务已经完成。文件名:init-containers.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: init-demo
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: workdir
          mountPath: /usr/share/nginx/html
      # These containers are run during pod initialization
      initContainers:
      - name: install
        image: busybox
        command:
        - wget
        - "-O"
        - "/work-dir/index.html"
        - http://kubernetes.io
        volumeMounts:
        - name: workdir
          mountPath: "/work-dir"
      dnsPolicy: Default
      volumes:
      - name: workdir
        emptyDir: {}
    

    在配置文件中,可以看出创建的Pod包含一个初始化容器和应用容器共享的Volume

    初始化容器挂载了一个共享的Volume即:/work-dir,应用容器挂载的共享Volume/usr/share/nginx/html目录下。初始化容器运行如下的命令

    wget -O /work-dir/index.html http://kubernetes.io
    

    初始化容器早 nginx server 的根目录下写入index.html文件。

    创建Pod:

    # kubectl apply -f /root/k8s-example/pods/init-containers.yaml
    

    确认初始化容器已经运行:

    # kubectl get pod init-demo
    

    输出结果显示 nginx 容器已经正在运行

    NAME        READY   STATUS    RESTARTS   AGE
    init-demo   1/1     Running   0          17s
    

    进入init-demoPod中正在运行的nginx容器的shell内:

    # kubectl exec -it init-demo -- /bin/bash
    

    在shell中发出GET请求:

    root@nginx:~# apt-get update
    root@nginx:~# apt-get install curl
    root@nginx:~# curl localhost
    

    输出显示nginx正在运行由init容器编写的网页:

    <!Doctype html>
    <html id="home">
    
    <head>
    ...
    "url": "http://kubernetes.io/"}</script>
    </head>
    <body>
      ...
      <p>Kubernetes is open source giving you the freedom to take advantage ...</p>
      ...
    

    删除Pod资源:

    # kubectl delete pods init-demo
    
  • 相关阅读:
    Java学习笔记(三)——运算符
    [镜像]镜像操作losetup
    [DNS]部署局域网DNS服务器
    [3G/4G]3G/4G模块开发
    [4G]常用AT指令
    [ubuntu]E: The package firmware-upgrade needs to be reinstalled, but I can't find an archive for it.
    [mmc]Linux下MMC/SD/SDIO的识别与操作
    [MMC]Linux MMC/SD/SDIO驱动分析
    [mmc]设备树节点含义
    [uboot]What is MLO file?
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12227849.html
Copyright © 2011-2022 走看看