kubernetes 从harbor 拉取镜像部署

前提

要在 Kubernetes 中从 Harbor 拉取 Nginx 镜像并部署,需完成以下步骤:配置 Harbor 认证、创建部署资源、暴露服务。

一、配置harbor认证

创建harbor认证secert

kubectl create secret docker-registry harbor-cred \
  --docker-server=192.168.0.100 \  # Harbor 地址(无需 http/https,如带端口需加,如 192.168.0.100:80--docker-username=admin \         # Harbor 用户名
  --docker-password=Harbor12345  \   # Harbor 密码
  --namespace=default               # 命名空间(与后续部署一致)

二、创建deployment部署nginx

nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-from-harbor
  namespace: default  # 与 Secret 同命名空间
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # 引用 Harbor 认证 Secret
      imagePullSecrets:
      - name: harbor-cred  # 与步骤 1 创建的 Secret 名称一致
      containers:
      - name: nginx
        # Harbor 镜像地址(格式:Harbor地址/项目名/镜像名:标签)
        image: 192.168.0.100/myproject/nginx:v1  # 替换为你的镜像地址
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"

应用部署配置

kubectl apply -f nginx-deployment.yaml

验证部署状态

kubectl get deployments nginx-from-harbor

确保 READY 列显示 2/2(表示 2 个副本正常运行)。

排查部署失败问题

kubectl logs <pod-name>

image

 查看pod详细时间,确定具体错误,可通过一下命令

kubectl describe pod <pod_name>

image

image

 三、暴露nginx服务

nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx  # 与 Deployment 中的 Pod 标签一致
  ports:
  - port: 80
    targetPort: 80
  type: NodePort  # 集群外可通过节点 IP:NodePort 访问

应用server 配置

kubectl apply -f nginx-service.yaml

获取访问地址

kubectl get svc nginx-service

输出示例

NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx-service   NodePort   10.109.xx.xx    <none>        80:30080/TCP   10s

外部访问地址:任意节点 IP:3008030080 为 NodePort)。

 

posted @ 2025-10-12 21:52  远洪  阅读(0)  评论(0)    收藏  举报