nexus on k8s最佳实战

简介: nexus on k8s最佳实战

nexus on k8s最佳实战


1、helm 安装包


 #添加 helm 仓库
 helm repo add sonatype https://sonatype.github.io/helm3-charts/
# 下载 chart 到本地
 helm pull sonatype/nexus-repository-manager
#copy 到文件服务器方便下载
scp nexus-repository-manager-41.1.2.tgz 10.50.10.25:/www/pigsty

e6702cf73dc7430bae2c9ae92e9c7971.png

2、修改关键参数


image

docker pull ninesun0318/sonatype.nexus3:3.41.1
docker tag ninesun0318/sonatype.nexus3:3.41.1 myharbor.com/nexus/sonatype.nexus3:3.41.1

存储

  storageClass: "managed-nfs-storage"
  storageSize: 50Gi

service 暴露方式


需要外部可访问nexus,建议使用nexus.

service:
  name: nexus3
  enabled: true
  labels: {}
  annotations: {}
  type: NodePort
  port: 31712

3、安装nexus


[root@master2 /opt/helm/nexus-repository-manager]#helm install chot-nexus -n nexus  /opt/helm/nexus-repository-manager
NAME: chot-nexus
LAST DEPLOYED: Fri Sep  2 15:01:33 2022
NAMESPACE: nexus
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace nexus -o jsonpath="{.spec.ports[0].nodePort}" services chot-nexus-nexus-repository-manager)
  export NODE_IP=$(kubectl get nodes --namespace nexus -o jsonpath="{.items[0].status.addresses[0].address}")
  Your application is available at http://$NODE_IP:$NODE_PORT

4、检查


[root@master1 /opt/ansible]#k get all -n nexus
NAME                                                       READY   STATUS    RESTARTS   AGE
pod/chot-nexus-nexus-repository-manager-6595d7c79b-q7znf   1/1     Running   0          64m
NAME                                          TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/chot-nexus-nexus-repository-manager   NodePort   10.96.11.171   <none>        8081:31712/TCP   64m
NAME                                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/chot-nexus-nexus-repository-manager   1/1     1            1           64m
NAME                                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/chot-nexus-nexus-repository-manager-6595d7c79b   1         1         1       64m

5、报错处理


### k8s pod has unbound immediate PersistentVolumeClaims
安装nexus,使用nfs sc pod一直报这个错误?
原因:使用kuboard 托管的sc限制了ns在kube-system,因此再nexus中的无法使用. 后面改用managed-nfs-storage解决问题。
### pod readiness probe端口探测失败原因调查?
安装nexus仓库时pod 的8081 端口一直访问不通
​```bash
Readiness probe failed: Get "http://10.244.166.156:8081/": dial tcp 10.244.166.156:8081: connect: connection refused
​```
探测的yaml
​```yaml
 readinessProbe:
            failureThreshold: 6
            httpGet:
              path: /
              port: 8081
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 10
​```
这个问题的原因是超过了initialDelaySeconds的时间导致探测失败,适当调大这个参数,或者重启一下就好了。

6、访问


b4b265f9a6074d698b707280eaf022f7.png

默认密码会在首次登录提示,按照提示修改密码。

7、批量上传本地jar包


之前物理机上安装的nexus由于每次打包都有问题,花了好多时间。这次干脆直接搭建一个nexus,并使用脚本把本地的包都上传到仓库中。


报错如下:

[ERROR] Failed to execute goal on project chot-configs: Could not resolve dependencies for project com.lichkin.chot:chot-configs:jar:2.0.0-CHOT: Failure to find javax.interceptor:javax.i
nterceptor-api:jar:1.2 in http://ip:8081/repository/maven-releases/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus has
 elapsed or updates are forced -> [Help 1]
#!/bin/bash
# @date 2022年9月2日11:26:51
# @author ninesun
# nexushttp: http://ip:31712/repository/maven-releases/
# 使用方式: bash uploadJarWithscripts.sh -u admin -p chot123  -r http://ip:31712/repository/maven-releases/
while getopts ":r:u:p:" opt; do
  case $opt in
    r) REPO_URL="$OPTARG"
    ;;
    u) USERNAME="$OPTARG"
    ;;
    p) PASSWORD="$OPTARG"
    ;;
  esac
done
find . -type f -not -path './uploadJarWithscripts\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -s -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

8、编译项目


打包验证


mvn clean -U install

31e97ce6fb02468691cce5911121bbc1.png

打包方式的尝试

mvn clean package -Dmaven.repo.local=E:\mavn_repo\MavenRepository
mvn clean package --settings D:\soft\apache-maven-3.5.2\conf\settings.xml -Dmaven.test.skip=true
mvn clean package --settings C:\Users\135\.m2\settings.xml -Dmaven.test.skip=true   

不知为何已经指定本地、setting好像都会从nexus拉取,原因未知,感觉像是bug.

9、参考


https://artifacthub.io/packages/helm/sonatype/nexus-repository-manager

10、nexus 仓库说明


maven-central:maven中央库,默认从 https://repo1.maven.org/maven2/ 拉取 jar。


maven-releases:私库发行版 jar。


maven-snapshots:私库快照版(调试版本)jar。


maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地 maven 基础配置 settings.xml中使用。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Kubernetes 监控 安全
Kubernetes实战:集群管理与自动化技术详解
【6月更文挑战第27天】Kubernetes实战聚焦集群自动化管理,涵盖核心概念如主从架构、API Server及工作节点,强调自动扩缩容、RBAC安全控制与日志监控。通过IaC工具如Helm实现配置自动化,结合Prometheus等进行持续监控,强调安全策略与资源优化,展现K8s在现代应用管理中的威力。
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1292 33
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
900 5
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
3045 4
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
1071 4
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
740 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
149321 19
|
Kubernetes Ubuntu 网络安全
Ubuntu基于kubeadm快速部署K8S实战
关于如何在Ubuntu系统上使用kubeadm工具快速部署Kubernetes集群的详细实战指南。
1025 3

推荐镜像

更多