在KubeSphere中使用harbor仓库

发布时间 2023-06-22 00:01:09作者: 文十七

在KS中添加域名仓库解析

KubeSphere 无法直接解析 Harbor 域名,需要在 CoreDNS 添加解析记录。

NodeLocal DNS

简介


NodeLocal DNS 是 Kubernetes 中的一个功能,它在集群中的每个节点上提供一个 DNS 服务器。这个 DNS 服务器负责为运行在节点本身上的服务以及集群中的任何其他服务解析 DNS 查询。NodeLocal DNS 提高了 DNS 性能和可靠性,特别是在 pod 和节点之间频繁通信的情况下。

NodeLocal DNS 通过 DaemonSet 实现,它确保在集群中的每个节点上都运行着 DNS 服务器的副本。当 pod 需要解析 DNS 查询时,它会将查询发送到运行在其节点上的 DNS 服务器。DNS 服务器可以使用 kubelet 的信息来解析查询,kubelet 维护着集群中所有服务和端点的记录。

NodeLocal DNS 是 Kubernetes 网络的重要组成部分,在生产部署中经常被使用。它尤其适用于 pod 经常被重新调度和移动到不同节点的情况下,因为它确保 DNS 查询总是能够快速、可靠地解析。


获取 coredns 的服务ip

kubectl kubectl get svc coredns -n kube-system

NAME      TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
coredns   ClusterIP   10.233.0.3   <none>        53/UDP,53/TCP,9153/TCP   34h

修改 nodelocaldns configmap 文件

kubectl edit cm nodelocaldns -n kube-system

## 将 forward ./etc/resolv.conf 调整为:forward . 10.233.0.3

.......

.:53 {
errors
cache 30
reload
loop
bind 169.254.25.10
forward . 10.233.0.3 {
    force_tcp
}
prometheus :9253
}

CoreDNS

简介


CoreDNS是一种DNS服务器,可用作传统DNS服务器(如BIND)的替代方案。它是用Go编写的,旨在快速、灵活和可扩展。除了简单的DNS解析之外,CoreDNS还可以执行各种功能,例如服务发现、负载平衡,甚至充当反向代理。CoreDNS的关键优势之一是其模块化架构,这使得它可以使用特定用例的插件进行自定义和扩展。CoreDNS也是高度可配置的,允许管理员微调其行为以适应其需求。


修改coredns configmap文件

kubectl edit cm coredns -n kube-system

## 添加主机记录 hosts (部署harbor的服务器地址 harbor域名)

apiVersion: v1
data:
Corefile: |
    .:53 {
        errors
        health {
        lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
        pods insecure
        fallthrough in-addr.arpa ip6.arpa
        ttl 30
        }
        hosts  {
        192.168.0.3  harbor.com
        fallthrough
        }
        prometheus :9153
        forward . /etc/resolv.conf {
        max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }
.........

加载CA证书

获取CA证书

在部署harbor的服务器上获取CA证书

/etc/docker/certs.d/harbor.com/ca.crt

在ks中创建配置字典,用于保存CA证书

路径: 集群详情-》配置-》配置字典-》创建配置字典harbor,项目选择为kubesphere-system

Alt text

在ks-apiserver中添加镜像仓库的CA证书

路径: 集群详情-》应用负载-》工作负载

编辑部署 ks-apiserver,为其挂载configmap harbor

Alt text

在ks-console中添加镜像仓库的CA证书

在项目中使用Harbor仓库

创建保密字典

进入项目 test-pro 创建类型为镜像服务信息的保密字典

路劲: 企业空间-》项目 test-pro -》配置-》保密字典

Alt text

使用Harbor仓库镜像部署应用

进入项目 test-pro 使用harbor仓库镜像创建工作负载

路径: 企业空间-》项目 test-pro -》应用负载-》工作负载

Alt text