网站的提交重置按钮怎么做/谷歌seo网络公司
1.安装k8s
本机使用了Mac下的Docker Desktop下的k8s环境。
k8s镜像国内下载:Docker Desktop for Mac/Windows 开启 Kubernetes
Dashboard登录Token过期时间修改
本地测试TOKEN是不是经常过期?在构建文件recommended.yaml的–namespace=kubernetes-dashboard下增加一行ttl即可。
已经启动了怎么办?修改已经启动yaml文件,大概在143行下新增ttl。
kubectl edit deployment -n kubernetes-dashboard
2.基本概念介绍
1.架构核心组件了解
k8s使用类似master/node(cluster)的模型,由客户端发送请求给master的api server,master的api server收到请求后查询ETCD的变动,ETCD进行Controller Manager和Scheduler内部调度后返回给api server,最后转发给对应的node去执行。
图片来源B站UP主:free-coder的【kubernetes入门】快速了解和上手容器编排工具k8s
客户端请求方式
描述
kubectl
命令行工具
webUI
通过Dashboard操作发出请求
RestAPI
自定义,可以给webUI增加功能。
master组件
描述
api server
资源操作的唯一入口,提供认证、授权、访问控制、API 注册和发现等机制。
ETCD
保存整个集群的状态,Raft分布式的kv数据库
Controller Manager
资源控制中心,维护集群的状态,比如故障检测、自动扩展、滚动更新等
Scheduler
调度的主要实施者,按照预定的调度策略将 Pod 调度到相应的机器上
node组件
描述
kubelet
维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理
kube-proxy
为 Service 提供 cluster 内部的服务发现和负载均衡
container runtime
镜像管理以及 Pod 和容器的真正运行(CRI ),被调度的实际容器(docker)
2.资源对象了解
类型
资源名
描述
集群
Namespace
命名空间起隔离作用,初始化有default和kube-system,方便划分项目组或用户组
集群
Node
Pod真正运行的主机,一定包含kubelet、kube-proxy、Container runtime
工作资源
POD
调度的基本单位,多个容器共享网络和文件系统,共享IPC、PID、network和namespace
工作资源
ReplicaSet
新一代RC(Replication Controller),保证集群中运行指定数目的Pod副本
工作资源
Deployment
部署表示用户对K8s集群的一次更新操作,声明式操作。
工作资源
StatefulSet
有状态服务集,确保pod与数据保持连续性,适合跑mysql等挂载数据的服务
工作资源
DaemonSet
后台支撑服务集,有些节点需要有些节点不需要的,存储、日志和监控等在每个节点上支撑K8s集群运行的服务。
工作资源
Job
任务,全局的工作队列,控制批处理型任务的API对象。
服务发现及均衡资源
Service
将多个pod抽象为一个ServiceIP(iptables),通过 labels 为应用提供负载均衡和服务发现,解决Pod 的 IP 地址会随着 Pod 的重启而变化的问题
服务发现及均衡资源
Ingress
路由,进入集群的请求提供路由规则的集合,给 service 提供集群外部访问的 URL、负载均衡、SSL 终止、HTTP 路由等
配置与存储
Volume
让k8s具备存储资源抽象能力,其中持久存储卷(Persistent Volume,PV)由资源提供者配置,持久存储卷声明(Persistent Volume Claim,PVC)由资源使用者根据业务申请
配置与存储
ConfigMap
用于保存配置数据的键值对,相比secret可以保存非敏感信息
配置与存储
Secret
解决了密码、token、密钥等敏感数据的配置问题,不需要暴露到镜像或pod里。
3.lnmp构建文件介绍
.
├── kustomization.yaml#整合多套生产、开发的yaml文件方便管理。
├── local-storage.yaml#通过hostPath创建PV和PVC
├── local_storage
│ ├── mysql#数据持久化目录
│ └── wordpress#应用代码持久化目录
├── mysql-deployment.yaml#mysql的svc和Deployment管理的pod
├── nginx-deployment.yaml#与上类似,多了ConfigMap管理配置和LoadBalancer直接暴露IP。
├── php-deployment.yaml#与上类似
└── php-fpm
└── Dockerfile#装了mysql扩展的php镜像
本地环境设置分两部分:
镜像拉去imagePullPolicy: Never ,镜像优先从本地仓库查找。
PV设置hostPath的绝对路径。
同一个下PVC使用不同的目录subPath。
生成带mysql扩展的php镜像,提供给k8s使用。
docker build -t k8s-php7-fpm php-fpm/.
运行kustomization.yaml文件即可。
kubectl apply -k .
4.kubectl常用命令
类似对pod命令,也对deployment、Service、PVC等资源适用,可以举一反三。
kubectl cluster-info #查询集群运行信息、版本。
kubectl apply -f test.yaml#部署指定文件,--file
kubectl delete -f test.yaml#取消部署
kubectl run d1 --image httpd:alpine --port 80 #创建d1的Apache镜像
kubectl exec -it redis-master-59694fd4d5-txcbc sh #以sh进入容器
kubectl logs -f redis-master-59694fd4d5-txcbc #查看运行时容器内的log
kubectl get - 类似于 docker ps,查询资源列表
kubectl describe - 类似于 docker inspect,获取资源的详细信息
kubectl logs - 类似于 docker logs,获取容器的日志
kubectl exec - 类似于 docker exec,在容器内执行一个命令
kubectl get pod --output=wide #更多的pod信息
kubectl get pods -A #--all-namespaces所有命名空间下的pod
kubectl describe pods #更详细的pods信息
kubectl get pods -w -l #watch命令,挂起观察
kubectl get events -A --sort-by='.metadata.creationTimestamp' #查询运行时事件倒序
kubectl expose deployment d1 --target-port 80 --type NodePort #将d1暴露为一个svc,指定80端口和NodePort类型。
kubectl scale --replicas=3 deployment/nginx-app#自动扩容到3个,自动加入退出service。
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2#滚动升级,默认,无中断服务升级
kubectl rolling-update frontend-v1 frontend-v2 --rollback #回滚
kubectl rollout status deployment/nginx-app#查看滚动状态
for i in 0 5; do kubectl exec "web-$i" -- sh -c 'hostname'; done #循环打印web-0到5容器的的hostname
for i in 0 5; do kubectl exec "web-$i" -- sh -c 'echo "$(hostname)" > /usr/share/nginx/html/index.html'; done #写入nginx hostname
5.遇到的坑
Docker Desktop for Mac : Kubernetes is starting
重写构建验证包,重启k8s,耐心等待几分钟。
rm -rf ~/Library/Group\ Containers/group.com.docker/pki/