一、K8S入门讲解
容器化技术应运而生,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境即可,而且启动速度很快,除了运行其中应用以外,基本不消耗额外的系统资源。Docker是应用最为广泛的容器技术,通过打包镜像,启动容器来创建一个服务。
但是随着应用越来越复杂,容器的数量也越来越多,由此衍生了管理运维容器的重大问题,而且随着云计算的发展,云端最大的挑战,容器在漂移。在此业务驱动下,k8s问世,提出了一套全新的基于容器技术的分布式架构领先方案,在整个容器技术领域的发展是一个重大突破与创新。
那么,K8S实现了什么?
从架构设计层面,我们关注的可用性,伸缩性都可以结合k8s得到很好的解决,如果你想使用微服务架构,搭配k8s,真的是完美,再从部署运维层面,服务部署,服务监控,应用扩容和故障处理,k8s都提供了很好的解决方案。
具体来说,主要包括以下几点:
- 服务发现与调度
- 负载均衡
- 服务自愈
- 服务弹性扩容
- 横向扩容
- 存储卷挂载
总而言之,k8s可以使我们应用的部署和运维更加方便。
k8s之pod详解_kubectl apply -f - << eof-CSDN博客
Pod基础概念
Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一 个进程。kubernetes中其 他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和Ingress对象,为pod提供存储的PersistentVolume存储资源对象等。
一个Pod中运行一个容器。“每个Pod中一个容器"的模式是最常见的用法:在这种使用方式中,你可以把Pod想象成是单个容器的封装,kuberentes管理的是Pod而不是直接管理容器。
在一个Pod中同时运行多个容器。一个pod中也可以同时封装几个需要紧密耦合互相协作的容器,它们之间共享资源。这些在同一个Pod中的容器可以互相协作成为一个service单位, 比如一个容器共享文件,另一个"sidecar"容器来更新这些文件。Pod将这些容器的存储资源作为一个实体来管理。Service是应用中的组件或者微服务,Pod则对应一个个服务实例,实际上,应用上Kubernetes也是这样来做的,每个Pod都是运行应用的单个实例,需要水平扩展应用,则应该使用多个Pods,所以微服务实例个数跟pod是一一对应。
k8s学习总结_齐天大圣数据候的博客-CSDN博客_k8s学习
k8s教程----零基础快速入门_江湖人称小青年的博客-CSDN博客(k8s架构,部署实例,kubectl常用命令等)
kubectl 命令的语法如下:
kubectl命令中,指定执行什么操作(command,如create,delete,describe ,get ,apply 等)指定什么类型资源对象(type)指定此类型的资源对象名称(name)指定可选参数(flags)
kubectl [command] [TYPE] [NAME] [flags]
查看pod,nodee,service,endpoints,secret等信息
kubectl get 组件名 #例如kubectl get pod
查看资源状态,比如有一组deployment内的pod没起来,一般用于pod调度过程出现的问题排查
kubectl describe pod pod名 #先用kubectl get pod查看
查看node节点或者是pod资源(cpu,内存资源)使用情况
kubectl top 组件名 #例如kubectl top node kubectl top pod
进入pod内部
kubectl exec -ti pod名 /bin/bash #先用kubectl get pod查看
删除pod
kubectl delete pod -n
查看集群健康状态
kubectl get cs
基于 pod.yaml 定义的名称删除指定资源
kubectl delete -f pod.yaml
查看容器的日志
kubectl logs -f <pod-name> # 实时查看日志
创建资源
kubectl apply -f ./my-manifest.yaml
二、K8S可视化
现在主要的kubernetes可视化工具主要有:
1. Kubernetes Dashborad: Kubernetes 官方提供的图形化工具
2. Rancher: 目前比较主流的企业级kubernetes可视化管理工具
3. 各个云厂商Kubernetes集成的管理器
4. Kuboard: 国产开源Kubernetes可视化管理工具
推荐一款Kubernetes可视化管理工具——Kuboard_长江之水向西流的博客-CSDN博客
三、部署K8S环境
云原生之史上最全K8S环境搭建(强烈建议收藏)_k8s搭建_码海兴辰的博客-CSDN博客
一键部署 K8S 环境,10分钟玩转,这款开源神器实在太香了 - 知乎
四、总结:DevOps 与容器和 Kubernetes 的关系
【Kubernetes 企业项目实战】06、基于 Jenkins+K8s 构建 DevOps 自动化运维管理平台(上)_devops自动化运维平台_Stars.Sky的博客-CSDN博客
PaaS、DevOps 的概念,在容器和 Kubernetes 普及之前就存在了。广义上的 PaaS、DevOps 的建设,会包含:人、流程、工具等多方面内容。IT 厂商提供的 PaaS、DevOps 以指工具层面的落地为主、以流程咨询为辅。
在 Kubernetes 和容器普及之前,我们通过虚拟机也可以实现 PaaS、CI/CD,只是相对速度较慢,因此普及性不高(想象一下通过 X86 虚拟化来实现中间件集群弹性伸缩的效率)。而正是容器的出现,为 PaaS、DevOps 工具层面的落地提供非常好的承载平台,使得这两年容器云风生水起。这就好比 4G(2014 年出现)和微信(2011 年出现)之间的关系:在手机网速 3G 时代,流量按照兆收费的时候,(即使有)大家对于微信语音聊天、微信视频也不会太感兴趣。
所以说, Docker 使容器具备了较好的可操作性、可移植性,Kubernetes 使容器具备企业级使用的条件。而 IT 界众多基于 Kubernetes 和 Docker 企业级的容器平台,又成为了 Devops 工具落地的新一代基础架构。
常用 DevOps 工具介绍
- Kubernetes 集群:包含 Docker 和 Kubernetes。
- Gogs: 通过 Go 编写的本地代码仓库,功能与 github 类似。
- Jenkins/Jenkins Slave Pods:持续集成工具。
- Nexus :工件管理器,能够解决本地缓存构建依赖项。
- SonarQube:开源代码分析工具,它可以分析常见编程错误的源代码。
以上的 DevOps 工具,都可以以容器方式部署到 Kubernetes 集群中。
其他工具类型及对应的不完全列举整理如下:
-
代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
-
构建工具:Ant、Gradle、maven
-
自动部署:Capistrano、CodeDeploy
-
持续集成(CI):Bamboo、Hudson、Jenkins
-
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
-
容器:Docker、LXC、第三方厂商如AWS
-
编排:Kubernetes、Core、Apache Mesos、DC/OS
-
服务注册与发现:Zookeeper、etcd、Consul
-
脚本语言:python、ruby、shell
-
日志管理:ELK、Logentries
-
系统监控:Datadog、Graphite、Icinga、Nagios
-
性能监控:AppDynamics、New Relic、Splunk
-
压力测试:JMeter、Blaze Meter、loader.io
-
预警:PagerDuty、pingdom、厂商自带如AWS SNS
-
HTTP加速器:Varnish
-
消息总线:ActiveMQ、SQS
-
应用服务器:Tomcat、JBoss
-
Web服务器:Apache、Nginx、IIS
-
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
-
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
在工具的选择上,需要结合公司业务需求和技术团队情况而定。