今天的内容给大家介绍下如何利用阿里云提供的免费私人容器镜像服务,来实现对个人项目容器镜像的管理,以及通过k8s集群来发布阿里云私人容器镜像服务中管理的服务。本文适合个人及创业团队学习/使用基于容器、镜像仓库、k8s等云原生技术时的参考。
成都创新互联是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站设计、高端网站设计、全网营销推广。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都做网站、网站制作、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。
一般来说大型企业都会自己搭建内部私有镜像仓库(例如Harbor),但对于小公司来说也可以直接使用云服务提供的容器镜像服务。接下来以阿里云免费提供的个人版容器镜像服务,演示容器镜像服务的具体使用。步骤如下:
(1)、登录阿里云,点击->控制台->找到“容器镜像服务”,如下图所示:
如果入口比较难找,可以直接在阿里云搜索框搜索“容器镜像服务”。阿里云提供收费的企业版实例,也提供限制使用的个人版实例。这里选择个人版实例。
(2)、创建成功后,设置镜像仓库登陆密码。如下图所示:
提示:
设置一个自己能记住的密码,例如我这里设置的是“wudimanong”。
(3)密码设置成功后,点击“创建镜像仓库”,最终效果如下图所示:
选择本地仓库,后面通过本地构建直接将Docker镜像推送至阿里云私有镜像仓库。
之后就可以根据提示登录该阿里云镜像仓库,并向其中Push镜像了。
创建私有镜像仓库之后,为了安全设置了用户名及密码,如果k8s集群需要从镜像仓库拉取镜像,则每次都需要登陆是很麻烦的,所以可以进行相关设置。
Kubernetes 集群使用 docker-registry 类型的 Secret 来通过容器仓库的身份验证,进而提取私有映像。
创建Secret,命名为 regcred:
- # kubectl create secret docker-registry regcred --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=jqadmin --docker-password=wudimanong
- secret/regcred created
提示:
上述账号密码为你自己创建镜像仓库时设置的。
打包Docker镜像需要编写Dockerfile文件,可以参考相关资料。这里我写了一个Java项目可以参考,通过工程构建就能直接将Docker镜像打包。
项目地址(GitHub):
https://github.com/manongwudi/springboot-k8s-demo
下载项目后本地可以编译构建,完成后打包的本地镜像如下图所示:
接下来演示登录阿里云私有镜像仓库,并将本地构建的Docker容器镜像上传。步骤如下:
(1)本地登陆阿里云镜像仓库(本地需要安装Docker环境),命令如下:
- $ docker login --username=jqadmin registry.cn-hangzhou.aliyuncs.com
- Password:
- Login Succeeded
提示:
账号密码为创建阿里云仓库时设置的
(2)将前面构建的Docker镜像上传至阿里云私有仓库。命令如下:
- $ docker push registry.cn-hangzhou.aliyuncs.com/wudimanong/springboot-k8s-demo:latest
- The push refers to repository [registry.cn-hangzhou.aliyuncs.com/wudimanong/springboot-k8s-demo]
- 500e5779c8d2: Pushed
- 925523484e00: Pushed
- 344fb4b275b7: Pushed
- bcf2f368fe23: Pushed
- latest: digest: sha256:ba3930f5374ed4cfd2c39cb590c3f772c89cd73abe7bd321838fd453d11309fe size: 1159
(3)此时回到阿里云仓库的界面,就能看到上传的镜像了,如下图所示:
接下来演示,如何将已经上传阿里云私有镜像仓库的服务发布至k8s集群,这里需要在k8s发布文件中进行一些配置。具体如下:
(1)创建发布文件。
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: springboot-k8s-demo
- spec:
- selector:
- matchLabels:
- app: springboot-k8s-demo
- replicas: 1
- #设置滚动升级策略
- #Kubernetes在等待设置的时间后才开始进行升级,例如5s
- minReadySeconds: 5
- strategy:
- type: RollingUpdate
- rollingUpdate:
- #在升级过程中最多可以比原先设置多出的Pod数量
- maxSurge: 1
- #在升级过程中Deployment控制器最多可以删除多少个旧Pod,主要用于提供缓冲时间
- maxUnavailable: 1
- template:
- metadata:
- labels:
- app: springboot-k8s-demo
- spec:
- #设置的阿里云私有镜像仓库登陆信息的secret(对应2.1.2的设置)
- imagePullSecrets:
- - name: regcred
- containers:
- - name: springboot-k8s-demo
- image: registry.cn-hangzhou.aliyuncs.com/wudimanong/springboot-k8s-demo:latest
- env:
- - name: SERVER_PORT
- value: "8080"
- - name: SPRING_PROFILES_ACTIVE
- value: test
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: springboot-k8s-demo
- labels:
- svc: springboot-k8s-demo
- spec:
- selector:
- app: springboot-k8s-demo
- ports:
- - name: http
- #Service在集群中暴露的端口(用于Kubernetes服务间的访问)
- port: 8080
- #Pod上的端口(与制作容器时暴露的端口一致,在微服务工程代码中指定的端口)
- targetPort: 8080
- #K8s集群外部访问的端口(外部机器访问)
- nodePort: 30002
- type: NodePort
标红的部分,就是设置k8s对阿里云容器镜像仓库的连接——使用存储在"secret"资源中的镜像仓库的账号及密码。
(2)执行发布命令。
- # kubectl apply -f springboot-k8s-demo.yaml
- deployment.apps/springboot-k8s-demo created
- service/springboot-k8s-demo created
(3)查看并测试应用部署是否成功。
- # kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-demo-7f7f8db4cc-hd8j2 1/1 Running 0 41s 10.201.17.147 k8s-node
- test-ds-nginx-qdj6n 1/1 Running 0 80m 10.201.17.143 k8s-node
可以看到,部署的Java应用已经成功启动。接下来模拟调用下该服务的测试接口:
- # curl 10.201.17.147:8080/devops/test
- 自动化发布示范工程测试接口返回->OK!
可以成功访问,说明应用部署成功!
网站栏目:利用阿里云免费镜像仓库,实现微服务的K8s部署
文章路径:http://www.shufengxianlan.com/qtweb/news21/497921.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联