Kubernetes/k8s(四)Deployment类型的yml拉取Nexus私服镜像创建pod

   日期:2020-11-11     浏览:116    评论:0    
核心提示:文章目录一、搭建需要准备二、搭建Nexus私服镜像库三、利用DockerFile创建镜像上传私服四、创建Deployment类型yml进行创建pod一、搭建需要准备虚拟机ip配置k8s-master192.168.230.127cpu4/4以上,内存8/8以上k8s-node1192.168.230.128cpu4/4以上,内存8/8以上k8s-node2192.168.230.129cpu4/4以上,内存8/8以上nexus192.168.230.

文章目录

    • 一、搭建需要准备
    • 二、搭建Nexus私服镜像库
    • 三、利用DockerFile创建镜像上传私服
    • 四、创建Deployment类型yml进行创建pod

一、搭建需要准备

虚拟机 ip 配置
k8s-master 192.168.230.127 cpu4/4以上,内存8/8以上
k8s-node1 192.168.230.128 cpu4/4以上,内存8/8以上
k8s-node2 192.168.230.129 cpu4/4以上,内存8/8以上
nexus 192.168.230.130 cpu4/4以上,内存4/4以上

二、搭建Nexus私服镜像库

我的私服搭建是基于docker搭建的,所以得先安装docker。

  1. 安装docker

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    yum -y install docker-ce-18.06.1.ce-3.el7
    systemctl enable docker && systemctl start docker
    
    cat > /etc/docker/daemon.json << EOF
    {"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]}
    EOF
    
  2. 关闭seLinux

    sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
    setenforce 0  # 临时
    
  3. 安装Nexus

    docker search nexus  # 搜索nexus,选择下载数最多的第一个sonatype/nexus3
    docker pull sonatype/nexus3
    docker run -id -u root -p 8081:8081 -p 8082:8082 --privileged=true -v  /opt/nexus-data:/nexus-data --restart=always sonatype/nexus3  
    

    注意: 运行镜像命令要加上-u root和–privileged=true,否则会运行失败。

    解释:
    -d 后台运行
    -p 端口号映射 8081 管理界面使用 8082 nexus3私服使用
    -v 文件夹映射 私服的文件都保存到本地文件夹/opt/nexus-data中
    –restart=alwarys 自动重启
    sonatype/nexus3 镜像名称

  4. Neuxs管理工具
    用浏览器访问 ip:8081 进入Nexus管理页面,点击右上角的Sign in进行登录。首次登录,到映射目录(/opt/nexus-data)下找到admin.password,打开可以看到admin的默认密码,登录过程中根据提示修改为自己密码。

  5. 创建存储对象

  6. 创建Docker仓库



  7. 设置权限

  8. 查看私服仓库内容

三、利用DockerFile创建镜像上传私服

  1. 配置k8s集docker的daemon.json文件。

    vi /etc/docker/daemon.json
    {
          "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
          "insecure-registries": ["192.168.230.130:8082"]   #这里放私服ip
    }
    

    重启docker:

    systemctl daemon-reload  #重载docker配置
    systemctl restart docker    #重启docker服务
    docker info #查看docker信息确认仓库是否添加
    
  2. 把项目jar包用DockerFile的方式创建镜像。

    编写DockerFile脚本代码:

    FROM java:8   #基础镜像,如果本地仓库没有,会从远程仓库拉取
    MAINTAINER wei.zhou    #创建人
    ADD demo-0.0.1-SNAPSHOT.jar demo.jar   #第一个是jar包名称,第二个是重命名名称
    EXPOSE 8080  #暴露端口
    ENTRYPOINT ["java","-jar","demo.jar"]
    

    构建镜像
    docker build -f Dockerfile文件位置 -t 镜像名:版本 . 【末尾有个点,一点要注意】

    这里可以看一下我之前的Kubernetes/k8s(三)k8s创建jar包docker镜像的pod

  3. 登录私服并上传镜像。

     docker login 192.168.230.130:8082  #登录私服仓库
    

    发布之前需要把镜像名称修改为私服地址,
    格式为:服务器地址:服务器端口/镜像名称:版本
    命令为: docker tag 镜像id(build好的镜像的id) 镜像新名称

    最后使用上传命令 docker push 镜像名称:TAG

    docker push 192.168.230.130:8082/demo:latest
    

四、创建Deployment类型yml进行创建pod

  1. 创建secret秘钥

    kubectl create secret docker–registry <regsecret-name> --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>。
    

    注意: 每一个空间都需要创建各自的秘钥!
    e.g: --docker-server=192.168.230.130:8082 (不需要加http://)

  2. yaml中使用imagePullSecrets

    ---
    apiVersion: apps/v1
    
    kind: Deployment
    
    metadata:
    
      name: local-demo
    
      namespace: default
    
    spec:
    
      replicas: 1
    
      selector:
    
        matchLabels:
    
          app: lodemo
    
          release: stabel
    
      template:
    
        metadata:
    
          labels:
    
            app: lodemo
    
            release: stabel
    
            env: test
    
        spec:
          
          imagePullSecrets:
          
          - name: docker-local
    
          containers:
    
          - name: lodemo
    
            image: 192.168.230.130:8082/demo:latest
    
            imagePullPolicy: IfNotPresent
    
            ports:
    
            - name: http
    
              containerPort: 80
    ---
    apiVersion: v1
    
    kind: Service
    
    metadata:
    
      name: lodemo
    
      namespace: default
    
    spec:
    
      type: NodePort
    
      selector:
    
        app: lodemo
    
        release: stabel
    
      ports:
    
      - name: http
    
        port: 8080
    
        targetPort: 8080
    
        nodePort: 30080
    ---
    
    
  3. 运行yml

    kubectl apply -f xxxx.yml
    



 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服