k8s入门使用
创建 deployment 会管理 replicas,replicas 控制 pod 数量,有 pod 故障会自动拉起。现在 Service 我们使用 NodePort 的方式暴露,这样访问每个节点的端口,都可以访问到这。控制器可以为您创建和管理多个 Pod,管理副本和上线,并在集群范围内提供自修复能力。例如,如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换 Pod。扩容了多份,
重温概念
-
Pod 是什么,Controller 是什么
https://kubernetes.io/zh/docs/concepts/workloads/pods/#pods-and-controllers
Pod 和控制器
控制器可以为您创建和管理多个 Pod,管理副本和上线,并在集群范围内提供自修复能力。
例如,如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换 Pod。
包含一个或多个 Pod 的控制器一些示例包括:
Deployment
StatefulSet
DaemonSet
控制器通常使用您提供的 Pod 模板来创建它所负责的 Pod -
Deployment&Service 是什么
deployment管理pod
service组合pod -
Service 的意义
统一应用访问入口;
Service 管理一组 Pod。
防止 Pod 失联(服务发现)、定义一组 Pod 的访问策略
现在 Service 我们使用 NodePort 的方式暴露,这样访问每个节点的端口,都可以访问到这
个 Pod,如果节点宕机,就会出现问题。 -
labels and selectors
- Ingress
通过 Service 发现 Pod 进行关联。基于域名访问。
通过 Ingress Controller 实现 Pod 负载均衡
支持 TCP/UDP 4 层负载均衡和 HTTP 7 层负载均衡
步骤:
1)、部署 Ingress Controller
文件参考gulimall gitee 文档
kubectl apply -f ingress-controller.yaml
2)、创建 Ingress 规则
apiVersion: extensions/v1beta1 #规则
kind: Ingress
metadata:
name: web
spec:
rules:
- host: tomcat6.atguigu.com
http:
paths:
- backend:
serviceName: tomcat6 #service名称
servicePort: 80 #service端口
如果再部署了 tomcat8;看效果;
kubectl create deployment tomcat8 --image=tomcat:8.5.51-jdk8
kubectl expose deployment tomcat8 --port=88 --target-port=8080 --type=NodePort
kubectl delete xxx 删除指定资源
随便配置域名对应哪个节点,都可以访问 tomcat6/8;因为所有节点的 ingress-controller 路
由表是同步的。
入门操作
- 部署一个 tomcat
k8s 会自动选择一个节点进行部署 如果已部署的节点发生宕机会在其他节点自动恢复
#部署tomcat6
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
#查看tomcat6 yml部署方式
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 --dry-run -o yaml
#查看tomcat6 yml部署方式 并将其输入到一个文件中
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8 --dry-run -o yaml > tomcat6.yaml
kubectl get all #获取所有资源
kubectl get pods -o wide #可以获取到 tomcat 信息
- 暴露 端口 访问
#暴露
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml
Pod 的 80 映射容器的 8080;service 会代理 Pod 的 80
NodePort节点端口 模式 会随机分配一个端口
#查看服务
kubectl get svc
#查看服务详情
kubectl get svc -o wide
ip+端口 成功
- 动态扩容测试
#查看有哪些
kubectl get deployment
#应用升级
kubectl set image (--help 查看帮助)
#扩容:把tomcat6扩容3份
kubectl scale --replicas=3 deployment tomcat6
扩容了多份,所有无论访问哪个 node 的指定端口,都可以访问到 tomcat6
查看扩容是否成功
缩容只需将replicas数量设置小一点 就会自动停掉一些 进行缩容
- 删除
#查询所有
kubectl get all
#删除 deploy
kubectl delete deploy/nginx
#删除 service
kubectl delete service/nginx-service
流程;创建 deployment 会管理 replicas,replicas 控制 pod 数量,有 pod 故障会自动拉起
新的 pod
细节
- kubectl 文档
https://kubernetes.io/zh/docs/reference/kubectl/overview/ - 资源类型
https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E8%B5%84%E6%BA%90%E7%B1%BB%E5%9E%8B - 格式化输出
https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA - 常用操作
https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E7%A4%BA%E4%BE%8B-%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C - 命令参考
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
yml模板
#yml 形式查看某个pod资源信息
kubectl get pod tomcat6-5f7ccf4cb9-8nv6z -o yaml
作者声明
如有问题,欢迎指正!
更多推荐
所有评论(0)