zoukankan      html  css  js  c++  java
  • Kubernetes本地私有仓库配置

    实验环境

    master  10.6.191.181
    node1   10.6.191.182
    node2   10.6.191.183
    本地私有仓库   10.6.191.184

    一、安装本地私有仓库

    1、安装docker

    yum install -y docker
    service docker restart

    2、下载Docker registry镜像,并启动私有仓库

    docker pull registry
    mkdir -p  /data/registry/
    docker run -itd  -p  5000:5000 -v /data/registry:/var/lib/registry  docker.io/registry

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

    二、Kubernetes 使用本地私有仓库构建kubernetes-dashboard

    1、docker私有仓库配置

    1)从网盘中下载并导入kubernetes-dashboard和pod-infrastructure(或者docker search这两个镜像,然后pull)

    将两个镜像都改名为。

    10.6.191.184:5000/kubernetes-dashboard-amd64:latest
    10.6.191.184:5000/pod-infrastructure:latest

    2)vim /etc/sysconfig/docker,添加红色代码:

    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry gcr.io --insecure-registry 10.6.191.184:
    5000'

    重启docker

    service docker restart

     3)上传镜像到仓库

    docker push 10.6.191.184:5000/kubernetes-dashboard-amd64:latest
    docker push 10.6.191.184:5000/pod-infrastructure:latest

    4)检测本地私有仓库

    curl -XGET http://10.6.191.184:5000/v2/_catalog
    curl -XGET http://10.6.191.184:5000/v2/kubernetes-dashboard-amd64/tags/list

    2、node节点配置

    1)node节点docker配置文件添加如下代码,同时重启docker服务,获取本地私有仓库。vim /etc/sysconfig/docker

    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false
    ADD_REGISTRY='--add-registry 10.6.191.184:5000'
    #添加私有仓库

    2)需要在Docker主机添加本地仓库地址,/etc/docker/daemon.json文件中代码如下,并重启docker:

    cat > /etc/docker/daemon.json << EOF
    {
    "insecure-registries":["10.6.191.184:5000"]
    }
    EOF
    service docker restart

    3)修改/etc/kubernetes/kubele

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

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

    4)在每台nodes上重启kubelet服务

    systemctl  restart  kubelet.service

    ps:

    1、当构造kubernetes-dashboard报错。

      查看pod描述

    kubectl get pods --all-namespaces
    kubectl describe pods/kubernetes-dashboard-3671102549-hptlr --namespace="kube-system"

    原因:缺少gcr.io/google_containers/pause-amd64:3.0基础镜像

    解决办法:在所有节点都下载这个基础镜像,新版本的Kubernetes在安装部署中,需要从k8s.grc.io仓库中拉取所需镜像文件,但由于国内网络防火墙问题导致无法正常拉取,不能                   直接下载这个镜像,所有拉去其他源的镜像,并改tag。

    docker search pause-amd64
    docker pull docker.io/huangyj/pause-amd64
    docker tag docker.io/huangyj/pause-amd64:latest gcr.io/google_containers/pause-amd64:3.0
    docker rmi docker.io/huangyj/pause-amd64

    2、在/etc/sysconfig/docker和/etc/docker/daemon.json不能同时有insecure-registries,报错了

    解决办法:只在/etc/docker/daemon.json添加,在/etc/sysconfig/docker不添加。

    3、master端配置

    1)创建kube-namespace.yaml

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: kubernetes-dashboard
      namespace: kube-system
      labels:
        k8s-app: kubernetes-dashboard
        kubernetes.io/cluster-service: "true"
    spec:
      selector:
        matchLabels:
          k8s-app: kubernetes-dashboard
      template:
        metadata:
          labels:
            k8s-app: kubernetes-dashboard
          annotations:
            scheduler.alpha.kubernetes.io/critical-pod: ''
            scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
        spec:
          containers:
          - name: kubernetes-dashboard
            image: 10.6.191.184:5000/kubernetes-dashboard-amd64:latest
            resources:
              # keep request = limit to keep this container in guaranteed class
              limits:
                cpu: 100m
                memory: 50Mi
              requests:
                cpu: 100m
                memory: 50Mi
            ports:
            - containerPort: 9090
            args:
              - --apiserver-host=http://10.6.191.181:8080
            livenessProbe:
              httpGet:
                path: /
                port: 9090
              initialDelaySeconds: 30
              timeoutSeconds: 30
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kubernetes-dashboard
      namespace: kube-system
      labels:
        k8s-app: kubernetes-dashboard
        kubernetes.io/cluster-service: "true"
    spec:
      selector:
        k8s-app: kubernetes-dashboard
      ports:
      - port: 80
        targetPort: 9090

    2)创建dashboard

    kubectl create  -k  kube-dashboard.yaml

    3)查看状态

    kubectl  get  pods  --all-namespaces
  • 相关阅读:
    Maven命令行使用:mvn clean package(打包)
    快速构建 Spring Boot 应用
    Spring MVC 表单处理
    Spring Web Hello World 例子
    Spring 事务管理
    开发环境搭建
    考研计算机专业课练习题
    考研计算机自测练习
    考研计算机自测练习答案
    考研计算机专业常见术语
  • 原文地址:https://www.cnblogs.com/deny/p/10179730.html
Copyright © 2011-2022 走看看