deployment的配置

自动创建地址?

服务详情



yaml文件
1.service部署
创建服务:kubectl create -f hello-service.yaml --record
查看服务是否创建成功:kubectl get svc |grep hello-service
查看服务详细信息:kubectl describe svc/hello-service
访问该服务:curl ip+port/hello
在前台启动一个访问kube内部的busybox容器:kubectl run -i --tty busybox --image=busybox --restart=Never

2.deployment部署
hello-deployment文件




3.请求的自动负载均衡
4.服务伸缩
修改deployment文件的replicas
修改生效
日志
5.服务版本升级与回退
修改deployment文件版本
监控pod升级过程:逐步替换

快速回滚上一版本:
kubectl rollout undo deployments/hello-deployment //快速回滚到上个版本
busybox 用于调试
kubernetes 服务集群部署、负载均衡、弹性伸缩、版本升级及回退
小结
Kubernetes:
实操演示:应用如何“上云"-Kubernetes 集群”
接下来,为大家揭开 Kubernetes 架构的神秘面纱
服务版本升级
服务伸缩123
示例演示项目
演示项目
Service 部署
Deployment 部署
请求的自动负载均衡
示例演示项目
演示项目
Service 部署
Deployment 部署
示例演示项目
演示项目
Service 部署
示例演示环境说明
示例说明
Demo:Hello Kubernetes
示例图说明
kubectl get nodes // 获取集群的节点列表
kubectl create -f hello-service.yaml --record // 创建服务
kubectl get svc
kubectl describe svc/hello-service // 获取服务的详细信息
kubectl run -i --tty busybox --image=busybox --restart=Never
nslookup hello-service
1. kubectl get nodes
2. kubectl create -f hello-service.yaml --record
3. kubectl get svc
4. kubectl describe svc/hello-service
5. kubectl run -i --tty busybox --image=busybox --restart=Never
6. nslookup hello-service
7. kubectl get deployments
8. kubectl get pods
9. kubectl logs -f hello-delopment-8555555-wmcxj
10. kubectl apply -f hello-deployment.yaml
11. kubectl rollout status deployment/hello-deployment
12. kubectl rollout undo deployment/hello-deployment
4-1 演示service,pod的部署,pod伸缩等功能
官方推荐先部署service再部署Pod,因为部署容器pod的时候,会把service信息以环境变量的形式注入到pod,
官方推荐用内部DNS域名访问service,而不推荐用环境变量访问,兼容了以前必须依赖环境变量访问的应用。
k8s常用yaml定义对象
(注意:k8s总是安装在linux,所以熟悉Linux命令是基础)
yaml常见键值对意义:
apiVersion:当前yaml使用的api版本
kind:声明对象类型
metadata:
name:定义元数据的name
spec:规格说明
type:声明kind的类型,NodePort将服务暴露到k8s集群之外
selector:跟label xxx匹配后选项
app:......
ports:一组poort,跟spec.type对象,用NodePort表示这里的port是每台node监听的端口,
port:虚拟的端口,不真实存在
targetPort:容器监听的端口,到达service的流量会被负载均衡到targetPort上
nodePort:向外暴露的访问端口,外网访问的就是它
通过create命令创建service服务
kubectl create -f 配置文件.yaml --record
通过get命令查看命令是否创建成功了
kubectl get svc|grep 服务名
通过describe查看详细信息
kubectl describe svc/服务名
(如果没有部署pod,那么Endpoints对象为none)
如果此时访问:curl ip地址:nodePort/服务,就会被refused拒绝
---
k8s服务有自动注册,发现机制,通过内部DNS供多服务发现,交互
使用run命令启动busybox容器查看服务内部发现地址,即内部域名
kubectl run -i --tty busybox --image=busybox --restart=Never
在busybox使用nslookup命令查看DNS地址
nslookup 服务名
---
部署pod
官方推荐不直接部署pod,而是通过deployment controller部署pod,(怕我们配置得不完全吧?)
linux查看定义好的deployment controller的yaml配置文件
vi 文件名
spec:
replicas: 部署后pod的个数
template:pod的模板类型,子对象都是模板的具体配置信息
metadata:模板元信息
labels: 通过这个label匹配pod
app:
spec:是pod的规格信息,包括容器的名字,镜像信息,镜像拉取...
通过kubectl的create命令创建deployment
kubectl create -f hello-deployment.yaml --record=true
通过get命令查看deployment创建结果
kubectl get deployments
出现一个列表,desired:期望的pod的副本数,current:当前存在pod的副本数,up-to-date:升级到最新的副本数,available:可以给客户提供服务的pod副本数,age:部署了多久
再敲一次查看服务详情,可以发现EndPoint有两个pod的地址了
再访问一次service,接收请求并通过自动选择容器处理服务逻辑,并响应请求
---
测试pod的负载均衡
先查看pod信息
kubuctl get pods|grep 服务名
复制pod名,新开命令行,实时监测运行日志的查看pod在接收到请求后的处理信息
kubuctl logs -f pod名
再通过curl发起多次请求,
---
服务伸缩
根据服务流量大小改变pod的副本数,可以自动?
手动修改pod的副本数,直接修改depoloyment配置文件:
使配置文件生效命令:
kubectl apply -f 配置文件
查看pod副本命令:
发起多次请求
---
服务的版本升级和回退
spec.template.spec.containers.image是容器版本,可以手动修改,
保存,再apply生效
然后用rollout status命令升级容器
kubectl rollout status deployment/xxx-deployment
发出请求,查看pod的版本信息
undo命令是回退到上一版本:
kubectl rollout undo deployment/xxx-deployment
发出请求,查看pod的版本信息
4-1 k8s集群初体验
居然说这个DEMO相当于编程语言的Hello world?
这是一个单service的应用,service后面是若干个实际支撑的Pod,Pod由Deployment控制器进行部署 外部发送到Hello Service的某个请求被自动负载均衡到某个Pod业务容器,容器返回Hello Kubernetes字样的应答。
演示环境:一个master,两个node
kubernetes集群v1.7.3;镜像仓库hub.docker.com;
kubernetes 提供的kubectl命令kubectl get nodes获取集群的节点列表
Hello
创建服务的时候,应该先创建service,提供环境变量,后面创建pod,
就自动加入了service,这个过程是什么原理。
Kubernetes
k8s集群初体验
k8s集群初体验
先部署Service再部Pod
# kubectl run -i --tty busybox --image=busybox --restrt=Nerver