2:什么是k8s,k8s有什么功能?

k8s是一个docker集群的管理工具

2.1k8s的核心功能

自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。

弹性伸缩: 通过监控容器的cpu的负载值,如果这个平均高于80%,增加容器的数量,如果这个平均低于10%,减少容器的数量.

服务的自动发现和负载均衡: 不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个 DNS 名称,并可以在它们之间进行负载均衡。

滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。

2.2k8s的历史

2014年 docker容器编排工具,立项
20157月 发布kubernetes 1.0, 加入cncf
2016年,kubernetes干掉两个对手,docker swarm,mesos 1.220172018年 k8s 从cncf基金会 毕业
2019年: 1.13, 1.141.15

cncf cloud native compute foundation
kubernetes (k8s): 希腊语 舵手,领航 容器编排领域,
谷歌16年容器使用经验,borg容器管理平台,使用golang重构borg,kubernetes

2.3k8s的安装

yum安装 1.5 最容易安装成功,最适合学习的源码编译安装---难度最大 可以安装最新版
二进制安装---步骤繁琐 可以安装最新版 shell,ansible,saltstack kubeadm 安装最容易, 网络 可以安装最新版
minikube 适合开发人员体验k8s, 网络

2.4k8s的应用场景

k8s最适合跑微服务项目!

k8s常用的资源

3.1创建pod资源

k8s yaml的主要组成
在这里插入图片描述

k8s_pod.yaml
在这里插入图片描述

pod资源:至少由两个容器组成,pod基础容器和业务容器组成。1个pod可以包含多个容器。
当业务容器数量 > 2时,k8s节点上也只有一个pod基础容器用来共享给该节点上的其它容器。
其中pod容器包含IP和端口,业务容器没有IP和端口用来夯住,2个容器之间共用一个网络,采用container网络模式。

pod配置文件2:
在这里插入图片描述

pod是k8s最小的资源单位

3.2ReplicationController资源
rc:保证指定数量的pod始终存活,rc通过标签选择器来关联pod

k8s资源的常见操作:

kubectl create -f xxx.yaml kubectl get pod|rc kubectl describe pod nginx kubectl delete pod nginx 
或者
kubectl delete -f xxx.yaml kubectl edit pod nginx

创建一个rc
在这里插入图片描述
在这里插入图片描述

rc的滚动升级
新建一个nginx-rc1.15.yaml:
在这里插入图片描述

升级
kubectl rolling-update nginx -f nginx-rc1.15.yaml --update-period=10s

回滚 
kubectl rolling-update nginx2 -f nginx-rc.yaml --update-period=1s

3.3service资源

service帮助pod暴露端口创建一个service

在这里插入图片描述

修改nodePort范围:
在这里插入图片描述

service默认使用iptables来实现负载均衡, k8s 1.8新版本中推荐使用lvs(四层负载均衡)

3.4deployment资源

有rc在滚动升级之后,会造成服务访问中断,于是k8s引入了deployment资源
创建deployment:
在这里插入图片描述
deployment升级和回滚命令行创建deployment

kubectl run nginx --image=10.0.0.11:5000/nginx:1.13 --replicas=3 --record

命令行升级版本

kubectl set image deploy nginx nginx=10.0.0.11:5000/nginx:1.15

查看deployment所有历史版本

kubectl rollout history deployment nginx deployment回滚到上一个版本
kubectl rollout undo deployment nginx

deployment回滚到指定版本

kubectl rollout undo deployment nginx --to-revision=2

3.5tomcat+mysql练习

在k8s中容器之间相互访问,通过VIP地址!
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐