Kubernetes 1.19.0——deployment(1)
时间:2022-07-25
本文章向大家介绍Kubernetes 1.19.0——deployment(1),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Pod是不健壮的,随时都面临挂掉的风险,且本身是没有可再生性的
如果pod个数需要太多,创建起来会比较麻烦
deployment相当于一个机器人,控制器,用来创建pod
K8S 1.17.x 之前创建deploy的命令选项很多,但从1.18.x开始就变得少了
deployment创建出来的每个pod使用相同的一个模板
labels表示创建出来的每个pod具备的标签
[root@vms61 chap5-deploy]# cat web1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web1
name: web1
spec:
replicas: 3
selector:
matchLabels:
app: web1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web1
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
status: {}
[root@vms61 chap5-deploy]# kubectl apply -f web1.yaml
deployment.apps/web1 created
[root@vms61 chap5-deploy]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web1-5bfb6d8dcc-7dvxm 1/1 Running 0 7s 10.244.116.47 vms63 <none> <none>
web1-5bfb6d8dcc-gnvhf 1/1 Running 0 6s 10.244.116.46 vms63 <none> <none>
web1-5bfb6d8dcc-qz77s 1/1 Running 0 6s 10.244.196.51 vms62 <none> <none>
[root@vms61 chap5-deploy]#
[root@vms61 chap5-deploy]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web1-5bfb6d8dcc-7dvxm 1/1 Running 0 22m 10.244.116.47 vms63 <none> <none>
web1-5bfb6d8dcc-gnvhf 1/1 Running 0 22m 10.244.116.46 vms63 <none> <none>
web1-5bfb6d8dcc-qz77s 1/1 Running 0 22m 10.244.196.51 vms62 <none> <none>
[root@vms61 chap5-deploy]# kubectl delete pod web1-5bfb6d8dcc-7dvxm --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "web1-5bfb6d8dcc-7dvxm" force deleted
[root@vms61 chap5-deploy]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web1-5bfb6d8dcc-fg8js 0/1 ContainerCreating 0 2s <none> vms63 <none> <none>
web1-5bfb6d8dcc-gnvhf 1/1 Running 0 22m 10.244.116.46 vms63 <none> <none>
web1-5bfb6d8dcc-qz77s 1/1 Running 0 22m 10.244.196.51 vms62 <none> <none>
[root@vms61 chap5-deploy]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web1-5bfb6d8dcc-fg8js 1/1 Running 0 19s 10.244.116.48 vms63 <none> <none>
web1-5bfb6d8dcc-gnvhf 1/1 Running 0 22m 10.244.116.46 vms63 <none> <none>
web1-5bfb6d8dcc-qz77s 1/1 Running 0 22m 10.244.196.51 vms62 <none> <none>
即便我们强行删除pod,deployment也会帮我们重新拉起
[root@vms61 chap5-deploy]# cat web1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web1
name: web1
spec:
replicas: 3
selector:
matchLabels:
app: web1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web1
app1: web1
app2: web2
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
status: {}
[root@vms61 chap5-deploy]# kubectl apply -f web1.yaml
deployment.apps/web1 created
[root@vms61 chap5-deploy]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web1-bc6bbd46c-gkfn9 1/1 Running 0 4s 10.244.196.52 vms62 <none> <none>
web1-bc6bbd46c-n74zn 1/1 Running 0 4s 10.244.116.49 vms63 <none> <none>
web1-bc6bbd46c-p2cbv 1/1 Running 0 4s 10.244.116.50 vms63 <none> <none>
[root@vms61 chap5-deploy]# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
web1-bc6bbd46c-gkfn9 1/1 Running 0 38s app1=web1,app2=web2,app=web1,pod-template-hash=bc6bbd46c
web1-bc6bbd46c-n74zn 1/1 Running 0 38s app1=web1,app2=web2,app=web1,pod-template-hash=bc6bbd46c
web1-bc6bbd46c-p2cbv 1/1 Running 0 38s app1=web1,app2=web2,app=web1,pod-template-hash=bc6bbd46c
上图中matchLabel里的标签一定要在template下的metada下的labels字段中匹配到,否则会报错
[root@vms61 chap5-deploy]# cat web1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web1
name: web1
spec:
replicas: 3
selector:
matchLabels:
app: web1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web1
app1: web1
app2: web2
spec:
volumes:
- name: v1
emptyDir: {}
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
volumeMounts:
- name: v1
mountPath: /xx
ports:
- containerPort: 80
env:
- name: myenv1
value: haha1
- name: myenv2
value: haha2
resources: {}
status: {}
[root@vms61 chap5-deploy]# kubectl apply -f web1.yaml
deployment.apps/web1 created
[root@vms61 chap5-deploy]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web1-77cc489b4b-89pfh 1/1 Running 0 6s
web1-77cc489b4b-bl8p6 1/1 Running 0 6s
web1-77cc489b4b-q8lgb 1/1 Running 0 6s
[root@vms61 chap5-deploy]# kubectl exec -it web1-77cc489b4b-89pfh -- bash
root@web1-77cc489b4b-89pfh:/# ls /xx
root@web1-77cc489b4b-89pfh:/# echo $myenv1
haha1
root@web1-77cc489b4b-89pfh:/# echo $myenv2
haha2
root@web1-77cc489b4b-89pfh:/# exit
exit
如果想要10个副本,只需要告诉deployment即可(这里不作演示)
kubectl scale deployment nginx --replicas=10
或者
kubectl edit deployment nginx
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- RTSP协议网络摄像头互联网直播开源流媒体平台
- RTSP协议网页无插件播放,匿名登录不显示设备资源如何解决?
- 设计模式~代理模式
- Linux工具入门:make工具与Makefile文件
- PF_RING的多种负载均衡方法
- 【拓展】686- 如何在 Web 上大规模生成 UUID
- Linux进程管理与性能监控
- 重学数据结构(一、线性表)
- Jmeter系列(49)- 详解 HTTP Cookie 管理器
- java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决
- ELK + Filebeat + Kafka 分布式日志管理平台搭建
- 一切皆是文件:UNIX,Linux 操作系統的設計哲學
- 【JS】687- 几行代码摸清楚上拉加载原理
- CTO 写的代码,全网被吐槽,真是绝了
- 定义一个函数,在该函数中可以实现任意两个整数的加法。java实现