区块链技术博客
www.b2bchain.cn

k8s搭建一个lnmp本地环境的完整过程的讲解

这篇文章主要介绍了k8s搭建一个lnmp本地环境的完整过程的讲解,通过具体代码讲解8015并且分析了k8s搭建一个lnmp本地环境的完整过程的讲解的详细步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了k8s搭建一个lnmp本地环境的完整过程的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/8015.html。具体如下:

k8s搭建一个lnmp本地环境的完整过程

  • 1.安装k8s
    • Dashboard登录Token过期时间修改
  • 2.基本概念介绍
    • 1.架构核心组件了解
    • 2.资源对象了解
  • 3.lnmp构建文件介绍
  • 4.kubectl常用命令
  • 5.遇到的坑
    • Docker Desktop for Mac : Kubernetes is starting

1.安装k8s

本机使用了Mac下的Docker Desktop下的k8s环境。
k8s镜像国内下载:Docker Desktop for Mac/Windows 开启 Kubernetes

Dashboard登录Token过期时间修改

本地测试TOKEN是不是经常过期?在构建文件recommended.yaml的–namespace=kubernetes-dashboard下增加一行ttl即可。
k8s搭建一个lnmp本地环境的完整过程
已经启动了怎么办?修改已经启动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去执行。
k8s搭建一个lnmp本地环境的完整过程
图片来源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)

更多请参考Kubernetes指南 核心组件

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里。

更多请参考Kubernetes指南 资源

3.lnmp构建文件介绍

github源码地址

. ├── 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镜像 

本地环境设置分两部分:

  1. 镜像拉去imagePullPolicy: Never ,镜像优先从本地仓库查找。
  2. PV设置hostPath的绝对路径。
  3. 同一个下PVC使用不同的目录subPath。

生成带mysql扩展的php镜像,提供给k8s使用。

docker build -t k8s-php7-fpm php-fpm/. 

运行kustomization.yaml文件即可。

kubectl apply -k .     

k8s搭建一个lnmp本地环境的完整过程

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-05容器的的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/ 

本文地址https://www.b2bchain.cn/8015.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » k8s搭建一个lnmp本地环境的完整过程的讲解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们