zoukankan      html  css  js  c++  java
  • Kubernetes 本地仓库

    1、Kubernetes本地私有仓库

    Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库。使用私有仓库有如下优点:

    1)节省网络带宽,针对于每个镜像不用去Docker官网仓库下载;

    2)下载Docker镜像从本地私有仓库中下载;

    3)组件公司内部私有仓库,方便各部门使用,服务器管理更加统一;

    4) 可以基于GIT或者SVN、Jenkins更新本地Docker私有仓库镜像版本。

    2、构建Docker 本地私有仓库方法

    1)下载Docker registry镜像

    docker pull registry

    2)启动私有仓库容器,启动命令如下:

    mkdir -p /data/registry/
    docker run -itd  -p  5000:5000 -v /data/registry/:/tmp/registry docker.io/registry

    Docker 本地仓库启动后容器启动,

    默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下。

    3、上传镜像至本地私有仓库

    客户端上传镜像至本地私有仓库,如下以docker.io/lemonbar/centos6-ssh 为例,上传至私有仓库服务器

    docker pull docker.io/lemonbar/centos6-ssh 
    docker tag efd998bd6817 centos6-ssh #改名字
    docker rmi docker.io/lemonbar/centos6-ssh 
    docker tag centos-ssh 192.168.0.112:5000/centos6-ssh
    docker push 192.168.0.112:5000/centos6-ssh

    4、检测本地私有仓库:

    curl -XGET http://192.168.0.112:5000/v2/_catalog
    curl -XGET http://192.168.0.112:5000/v2/centos6-ssh/tags/list

    5、在docker配置文件中添加如下代码并且重启 

    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.0.112:5000'
    ADD_REGISTRY='--add-registry 192.168.0.112:5000'

     

     6、Kubernetes Pods配置私有仓库

    创建kuber-namespace.yaml

    {
    "kind": "Namespace",
    "apiVersion": "v1",
    "metadata": {
    "name": "kube-system"
    }
    }

    建kubernetes-dashboard.yaml,读取本地私有仓库,代码如下:

    # Copyright 2015 Google Inc. All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    # Configuration to deploy release version of the Dashboard UI.
    #
    # Example usage: kubectl create -f <this_file>
    
    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      labels: 
        app: kubernetes-dashboard
        version: latest
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      replicas: 2 
      selector:
        matchLabels:
          app: kubernetes-dashboard
      template:
        metadata:
          labels:
            app: kubernetes-dashboard
        spec:
          containers:
          - name: kubernetes-dashboard
            image: 192.168.0.112:5000/kubernetes-dashboard-amd64
            imagePullPolicy: Always
            ports:
            - containerPort: 9090
              protocol: TCP
            args:
              # Uncomment the following line to manually specify Kubernetes API server Host
              # If not specified, Dashboard will attempt to auto discover the API server and connect
              # to it. Uncomment only if the default does not work.
              - --apiserver-host=192.168.0.111:8080
            livenessProbe:
              httpGet:
                path: /
                port: 9090
              initialDelaySeconds: 30
              timeoutSeconds: 30
    ---
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: 9090
      selector:
        app: kubernetes-dashboard

    1)在docker主机添加本地仓库地址 vim /etc/docker/daemon.json

    {
    "insecure-registries":["192.168.0.112:5000"]
    }

    2)/etc/kubernetes/kubelet配置文件将KUBELET_POD_INFRA_CONTAINER选项注释,同时添加一个新的KUBELET_POD_INFRA_CONTAINER参数,代码如下,前提需要将pod-infrastructure镜像上传私有仓库 

    在每台nodes上重启kubelet服务:systemctl  restart  kubelet.service

    #KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
    KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.0.112:5000/pod-infrastructure:latest"

    3) nodes上Docker配置文件/etc/sysconfig/docker中,添加如下代码,并重启Docker服务:

    ADD_REGISTRY='--add-registry 192.168.0.112:5000'

     

  • 相关阅读:
    CodeForces 219D Choosing Capital for Treeland (树形DP)
    POJ 3162 Walking Race (树的直径,单调队列)
    POJ 2152 Fire (树形DP,经典)
    POJ 1741 Tree (树的分治,树的重心)
    POJ 1655 Balancing Act (树的重心,常规)
    HDU 2196 Computer (树形DP)
    HDU 1520 Anniversary party (树形DP,入门)
    寒门子弟
    JQuery选择器(转)
    (四)Web应用开发---系统架构图
  • 原文地址:https://www.cnblogs.com/legenidongma/p/10721021.html
Copyright © 2011-2022 走看看