docker提交腾讯云标准模式
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
简介
我们公司的容器化标准模式本次是以redis为例进行示范
技术要求:你会简单的docker容器打包
环境需要:docker、docker-compose、联网环境、腾讯云容器及镜像服务(公司已有TKE
文件需要:除了你自己的Dockerfile所需要的东西外还需要这4个定义规范的文件
docker本地容器打包并且能够正常运行服务后在进行如下操作
各文件介绍
容器有2种一种是容器镜像所有带image的都是镜像另一种是容器这2个都有namespace(命名空间注意不要写混。我这里镜像的命名空间用的是test_env容器的是default
注:红色标记为需要修改的
- deploy.yaml
这个配置文件是腾讯云上的k8s(k8s是管理docker服务的平台配置可修改资源大小以及名称等
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
descheduler.alpha.kubernetes.io/evictable: 'true'
generation: 1
labels:
k8s-app: redis
qcloud-app: redis
name: redis
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: redis
qcloud-app: redis
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s-app: redis
qcloud-app: redis
spec:
containers:
- env:
- name: TZ
value: Asia/Shanghai
- name: DEBIAN_FRONTEND
value: noninteractive
image: dengtacj.tencentcloudcr.com/ test_env/redis:5.0.3
imagePullPolicy: Always
name: redis
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 10m
memory: 50Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloud-docker-image
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
可修改位置说明
含redis都是你的服务名称namespace是你所做项目的命名空间测试统一放在test_env下
labels:
k8s-app: redis
qcloud-app: redis
name: redis
namespace: default
含redis是你的服务名称
creationTimestamp: null
labels:
k8s-app: redis
qcloud-app: redis
...
labels:
k8s-app: redis
qcloud-app: redis
spec:
redis是你的服务名称image的是腾讯云的镜像地址(命名空间/镜像名其他的是资源配置
image: dengtacj.tencentcloudcr.com/ test_env /redis:5.0.3
imagePullPolicy: Always
name: redis
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 10m
memory: 50Mi
- docker-compose.yml
这个配置是docker-compose的镜像控制配置
redis为服务名称image为腾讯云的镜像地址(命名空间/服务名称对应test_env/redis:5.0.3)
version: "3"
services:
redis:
image: dengtacj.tencentcloudcr.com/ test_env/redis:5.0.3
container_name: redis
build:
context: ./
- makefile.docker
这个配置是封装docker-compose的相关指令包含服务名redis以及腾讯云用户的config
命名空间是项目名用于测试的统一放在test_env下
buildall:
@docker-compose build
build:
@docker-compose build redis
pushall:
@docker-compose push
push:
@docker-compose push redis
deploy:
@kubectl --kubeconfig ~/.kube/config -n default apply -f deploy.yaml
@kubectl --kubeconfig ~/.kube/config -n default apply -f service.yaml
restart:
@kubectl --kubeconfig ~/.kube/config -n default rollout restart deployment redis
.kube/config的获取方式
在基本信息中下拉找到查看集群凭证进去后点击下载
得到了这个文件
将这个文件放到 ~/.kube/目录下并且改名为config
- service.yaml
这个配置是腾讯云服务配置用于端口的暴露
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: redis
qcloud-app: redis
name: redis
namespace: default
spec:
ports:
- name: 6379-6379-tcp
port: 6379
protocol: TCP
targetPort: 6379
selector:
k8s-app: redis
qcloud-app: redis
type: ClusterIP
status:
loadBalancer: {}
建立登陆凭证并且登陆
修改 /etc/resolv.conf
注释掉之前的加上这个
nameserver 114.114.114.114
登陆腾讯云创建容器凭证
在访问凭证页面选择地域南京1点击新建
然后点击下载能得到一个csv
打开csv复制登陆指令在linux执行则登陆完毕
出现Login Succeeded代表成功
kubectl 安装
由于在部署阶段用了kubectl命令所以必须安装kubectl
https://blog.csdn.net/cyw8998/article/details/122946959
打包命令
登陆成功后在当前的Dockerfile下运行执行命令
构建
make -f makefile.docker build
推送到腾讯云
make -f makefile.docker push
部署到腾讯云
make -f makefile.docker deploy
重启服务
make -f makefile.docker restart
访问方式
数据库等内部容器访问方式
pod名称.命名空间:端口 只能在容器中或者容器间访问比如我的是redis.default:6379 其他容器配置这个的地址就可以连接
服务类修改方式
如果是服务类如前端或者后端则要修改服务
点击更新配置
选择主机端口访问修改中间的主机端口然后通过 机器ip:主机端口 访问
然后通过我们的nginx域名映射就可以对外访问了
nginx在192.168.9.31上配置他的config注意不要配置错误影响其他人的服务。
测试方法
将服务设置为主机ip:端口访问。比如我的redis我将主机端口设置为32110
主机ip是服务实例(pod)所在节点的ip
通过redis链接测试