ps文中web以及nginx都是指代
升级回滚以及弹性伸缩
kubectl apply -f web.yml
docker images 查看镜像
docker image ls
docker images --digests显示镜像摘要
docker images --no-trunc:显示完整的镜像信息:
查看namespace下的images
kubectl get pods --namespace kubesphere-logging-system
注意,这里并不需要==,最先我以为需要等号,结果纠结了半天
看的这篇文章 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像
应用升级
kubectl set image deployment web nginx=nginx:1.15
查看升级状态
kubectl rollout status deployment:web
版本回滚
查看历史版本
kubectl rollout history deployment:web
回滚到上一个版本
kubectl rollout undo deployment:web
回滚到指定版本
kubectl rollout undo deployment:web --to-revison=2
弹性伸缩
kubectl scale deployment web --replicas=10
创建10个
service
存在意义
为了防止pod失联(服务发现)
定义一组pod访问策略(负载均衡)
pod与service关系
通过label,selector建立关系
通过service实现pod的负载均衡
常见service类型
(1)clusterIP:集群内部访问
(2)NodePort:对外访问应用使用
(3)LoadBalancer:对外访问应用使用,访问公有云
暴露端口
kubectl expose deployment web --port=80 --target-port=80 --dry-run -o yaml>service.yaml
node内网部署应用,外网一般不能访问到
找到一台可以进行外网访问的机器,安装nginx,反向代理
手动吧可以访问的节点添加到nginx里面
LoadBalancer:公有云,负载均衡,控制器
部署有状态应用
1.无状态和有状态
(1)无状态
认为pod都是一样的
没有顺序的要求
不用考虑在哪个node运行
随意进行伸缩和扩展
(2)
上面因素都需要考虑到
让每个pod都是独立的,保持pod启动顺序和唯一性
唯一的网络标识符,持久存储
有序,比如mysql主从
2.部署有状态应用
无头service
加一个clusterIP:none,意思就是clusteip不需要特定的ip,只需要一个标识符
(1)StatefulSet部署有状态应用
加一个kind:StatefulSet
apiVersion:apps/v1
kind:StatefulSet
kubectl apply -f sts.yaml
deployment和StatefulSet区别:有身份的(唯一标识的)
根据主机名+按照一定规则生成域名
每个pod有唯一主机名
唯一域名:
格式:主机名称.service名称.名称空间.svc.cluster.local
如nginx-statefulset-0.nginx.default.svc.cluster.local
部署守护进程DaemonSet
在每个node上运行一个pod,新加入的node也同样运行在一个pod里面。
例子:在每个node节点安装数据采集工具
kubectl exec -it ds-test-12(一个pod) bash
job(一次性任务)
kind:job
backoffLimit
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
![@5QDJE05~0LS6[9K](K5_I8.png](https://img.haomeiwen.com/i13219358/6e9f01034ca6e746.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
kubectl create -f job.yaml
删除pod
kubectl delete pod pi-d6dz2
删除deployment
kubectl get deployment -n xxxxx
一般要删除pod再删除deployment
job是一次性job
删除
kubectl delete -f job.yaml
定时任务
加schedule:
k8s Secret
作用:加密数据存在etcd里面,让Pod容器以挂载Volume方式进行访问
场景:凭证
基于base64编码
echo -n 'admin' | base64
1.创建secret加密数据
kub
网友评论