2021-04-23

2021-04-23  本文已影响0人  文茶君

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

上一篇下一篇

猜你喜欢

热点阅读