k8s部署docker集群需要拉取docker私服的镜像,docker私服harbor镜像已经有相应的镜像了,只需要在安装有k8s集群的机器上运行k8s的yaml文件就可以创建相应的对象资源,或者在bash的shell脚本中运行相应的命令。
1,创建secret资源指定连接docker私服
docker login ip:port --username=xxx
kubectl create secret docker-registry regprivatesecret --docker-server=ip:port --docker-username=xxx --docker-password=xxxxxx --docker-email=xxx@xxx.com
使用kubectl get secret就可以查看刚才新建的secret资源
2,pod文件内容
apiVersion: v1
kind: Pod
metadata:
name: springboot-crm
labels:
app: crm
env: test
spec:
imagePullSecrets:
- name: regprivatesecret 指定secret资源
nodeSelector:
gpu: "true"
containers:
- image: ip:port/xhl/springboot-crm
name: crm
ports:
- name: http 命名
containerPort: 7088 对外提供的监听端口
command: [" java ","-Dloader.path=.,resources,lib","-jar","/spring-crm.jar","--spring.profiles.active=test"] 会覆盖dockerFile中的ENTRYPOINT命令
volumeMounts: 挂载pod中的目录地址
- mountPath: /tmp
name: file-tmp
env:
- name: JAVA_OPTS
value: -Xms512m,-Xmx512m
- name: ACTIVE
value: test
volumes:
- name: file-tmp
emptyDir: {} 指定pod中的空临时目录,pod消失,目录消失
3,deployment文件内容
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-crm
spec:
selector:
matchLabels:
app: crm 匹配pod的label标签
env: test
replicas: 1
template: 指定pod的模板
metadata:
name: springboot-crm
labels:
app: crm
env: test
spec:
imagePullSecrets:
- name: regprivatesecret
nodeSelector:
gpu: "true"
containers:
- image: ip:port/xhl/springboot-crm harbor地址34.92.172.25:8888
name: crm
env:
- name: JAVA_OPTS
value: -Xms512m,-Xmx512m
- name: ACTIVE
value: test
4,service文件内容
apiVersion: v1
kind: Service
metadata:
name: crm-lb
spec:
type: LoadBalancer 负载均衡service
ports:
- name: http
port: 7088
targetPort: http 指定pod的端口
selector:
app: crm 指定pod的label
5,在集群中运行kubectl create -f ./pod.yaml -f ./deployment.yaml -f ./service.yaml,要是在Jenkins类似的CI/CD工具中整合k8s环境,以及运行devops工具时可以放到bash的shell里
然后从service对外开放的ip和端口就可以访问相应容器中提供的服务