需要有一个支持Python/java环境的镜像,本地研发的代码在阿里云ACK集群中能够正常启动执行对应的Python与Java程序。
为了简化搭建K8S集群及容器镜像服务的过程,我们选择直接使用阿里云上的SAAS化服务:ACK及ACR。能够极大降低了学习K8S门槛。
当执行docker push镜像的时候需要有访问凭证,密码就是在这块设置。
2、设置镜像仓库
3、为了简化配置,我把ACR的一些安全都先关了。比如支持公网的匿名访问。
这样在ACK里面启动POD的时候就不需要再配置访问策略。先简化一下
- FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3
-
-
- RUN yum -y install python3.8 && \
- yum -y install java && \
- curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
- python3 get-pip.py && \
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple alibabacloud_sts20150401==1.1.1 && \
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple aliyun-python-sdk-sts==3.1.0
说明:这个基础镜像可以在阿里云ACR上看到。当然你也可以选择其他开源镜像。
打镜像
docker build -t dsafd-registry.cn-shenzhen.cr.aliyuncs.com/yaofangapp/basicapp:v0.1 -f Dockerfile ./
- FROM dsafd-registry.cn-shenzhen.cr.aliyuncs.com/yaofangapp/basicapp:v0.1
-
- # 这里替换成你自己的应用名
- ARG APP_NAME=calcula
- ARG ENV_TYPE=production
-
- # 容器运行时的环境变量
- ENV APP_NAME=$APP_NAME
- ENV APP_ENVIRONMENT=$ENV_TYPE
-
- COPY bin /root/${APP_NAME}/bin
-
- RUN mkdir -p /root/${APP_NAME}/logs && mkdir -p /root/${APP_NAME}/target
-
- VOLUME /root/${APP_NAME}/logs
-
- COPY ${APP_NAME}.jar /root/${APP_NAME}/target
打包脚本
- #!/bin/bash
-
- # 执行脚本:./build.sh v0.1
-
- TAG=$1
-
- mvn clean package -DskipTests
- cp target/calcula.jar calcula.jar
-
- # yaofangapp
- docker build -t dsafd-registry.cn-shenzhen.cr.aliyuncs.com/yaofangapp/calcula:${TAG} -f Dockerfile_biz ./
- docker push dsafd-registry.cn-shenzhen.cr.aliyuncs.com/yaofangapp/calcula:${TAG}
-
- docker images | grep calcula
-
- rm calcula.jar
部署的Yaml文件
- apiVersion: v1
- kind: Pod
- metadata:
- name: basicapp
- spec:
- containers:
- - image: dsafd-registry-vpc.cn-shenzhen.cr.aliyuncs.com/yaofangapp/basicapp:v0.1
- command:
- - sh
- - -c
- - 'sleep inf'
- name: test
1、ACK无法访问到ACR里面的VPC地址
Failed to pull image "yf-test-registry-vpc.cn-shanghai.cr.aliyuncs.com/yaofang/yaofang-app:v0.1": rpc error: code = Unknown desc = failed to pull and unpack image "yf-test-registry-vpc.cn-shanghai.cr.aliyuncs.com/yaofang/yaofang-app:v0.1": failed to resolve reference "yf-test-registry-vpc.cn-shanghai.cr.aliyuncs.com/yaofang/yaofang-app:v0.1": failed to do request: Head "https://yf-test-registry-vpc.cn-shanghai.cr.aliyuncs.com/v2/yaofang/yaofang-app/manifests/v0.1": dial tcp: lookup yf-test-registry-vpc.cn-shanghai.cr.aliyuncs.com on 100.100.2.138:53: no such host
解决办法
配置专有网络的访问控制, 参考:配置专有网络的访问控制 - 容器镜像服务 ACR - 阿里云
需要配置
本地Java代码打成镜像提交到K8S部署