• 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
    
  • 相关阅读:
    代理模式和装饰模式的理解
    Mysql常用命令
    java动态代理(JDK和cglib)
    MyEclipse中SVN使用步骤
    ActionContext和ServletActionContext小结
    java和unicode
    Win7下telnet使用
    MyEclipse8.5安装SVN插件
    linux常用命令(基础)
    选择TreeView控件的树状数据节点的JS方法
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12227849.html
Copyright © 2020-2023  润新知