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'

     

  • 相关阅读:
    docker下安装mysql数据库
    asp.net core3.0 mvc 用 autofac
    遍历Map的方式
    JAVA 每次从List中取出100条记录
    JAVA 必须掌握技能(三)-Java 基础知识
    JAVA 必须掌握技能-Java 知识结构图
    JAVA 必须掌握技能(二)-Java IO流学习之输入输出流
    JAVA 必须掌握技能(一)-集合类型那么多,如何选择使用List, Set, Map?
    JavaScript 开发必须掌握技能(四)- 更好的使用jQuery attr方法
    JavaScript 开发必须掌握技能(三)- 更好的使用for循环方法
  • 原文地址:https://www.cnblogs.com/legenidongma/p/10721021.html
Copyright © 2011-2022 走看看