1. 使用控制器部署镜像
2. 案例
2.1 将镜像仓库认证凭据保存在k8s secret 中
[root@k8s-master ~]# kubectl create secret docker-registry harbor-auth --docker-username=admin --docker-password=12345678 --docker-server=harbor.scajy.org
secret/harbor-auth created
2.2 在yaml中使用这个认证凭据
imagePullSecrets:
- name: harbor-auth
2.3 创java-demo目录
[root@k8s-master ~]# cd yaml/
[root@k8s-master yaml]# ll
总用量 0
drwxr-xr-x. 2 root root 76 12月 8 15:31 ingress
[root@k8s-master yaml]# mkdir -p java-demo
[root@k8s-master yaml]# cd java-demo/
2.4 编写k8s 发布的yaml配置文件
[root@k8s-master java-demo]# vim java_demo.yaml
[root@k8s-master java-demo]# cat java_demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-demo
namespace: default
labels:
app: java-demo
annotations: # 记录回滚参数
kubernetes.io/change-cause: "java-demo:v1" #记录到revision中的内容,记录版本号
spec:
replicas: 3 # Pod副本预期数量
revisionHistoryLimit: 10 # RS历史版本保存数量
selector:
matchLabels:
app: java-demo
strategy:
rollingUpdate:
maxSurge: 25% # 滚动更新过程最大pod副本数
maxUnavailable: 25% # 滚动更新过程中最大不可用pod副本数,
type: RollingUpdate
template:
metadata:
labels:
app: java-demo # Pod副本的标签
spec:
imagePullSecrets:
- name: harbor-auth
containers:
- name: java-demo
image: harbor.scajy.org/scajy/java:v1 # 获取容器
ports:
- containerPort: 8080
resources:
requests: # 启动容器最小资源
memory: "256Mi"
cpu: "500m"
limits: # 容器的最大资源限制
memory: "512Mi" # 容器的最大资源内存限制128M
cpu: "1000m" # 容器的最大资源cpu的核数限制,500m=0.5核数
readinessProbe: # 存活检查,如果失败,将杀死容器,来重启
httpGet:
port: 8080
path: /
initialDelaySeconds: 20 #启动容器后多少秒健康检查
periodSeconds: 20 #以后间隔多少秒检查一次
livenessProbe: # 就绪检查,失败就会剔除 service
httpGet:
port: 8080
path: /
2.5 启动服务
[root@k8s-master java-demo]# kubectl apply -f java_demo.yaml
deployment.apps/java-demo created
2.6 检查服务是否启动
[root@k8s-master java-demo]# kubectl get pods
NAME READY STATUS RESTARTS AGE
java-demo-67866dbff6-ckkhd 1/1 Running 0 28m
java-demo-67866dbff6-gvkt6 1/1 Running 0 28m
java-demo-67866dbff6-mgd8p 1/1 Running 0 28m
nginx-6799fc88d8-bvg8q 1/1 Running 0 39h