k8s入门使用

文章目录

    • 重温概念
    • 入门操作
    • 细节
    • yml模板
    • 作者声明

重温概念

  1. Pod 是什么,Controller 是什么
    https://kubernetes.io/zh/docs/concepts/workloads/pods/#pods-and-controllers
    Pod 和控制器
    控制器可以为您创建和管理多个 Pod,管理副本和上线,并在集群范围内提供自修复能力。
    例如,如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换 Pod。
    包含一个或多个 Pod 的控制器一些示例包括:
    Deployment
    StatefulSet
    DaemonSet
    控制器通常使用您提供的 Pod 模板来创建它所负责的 Podk8s入门使用_第1张图片

  2. Deployment&Service 是什么
    k8s入门使用_第2张图片
    deployment管理pod
    service组合pod

  3. Service 的意义
    统一应用访问入口;
    Service 管理一组 Pod。
    防止 Pod 失联(服务发现)、定义一组 Pod 的访问策略
    现在 Service 我们使用 NodePort 的方式暴露,这样访问每个节点的端口,都可以访问到这
    个 Pod,如果节点宕机,就会出现问题。

  4. labels and selectors

k8s入门使用_第3张图片

  1. Ingress
    通过 Service 发现 Pod 进行关联。基于域名访问。
    通过 Ingress Controller 实现 Pod 负载均衡
    支持 TCP/UDP 4 层负载均衡和 HTTP 7 层负载均衡
    k8s入门使用_第4张图片

步骤:
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 路
由表是同步的。

入门操作

  1. 部署一个 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 信息
  1. 暴露 端口 访问
#暴露
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+端口 成功
k8s入门使用_第5张图片

  1. 动态扩容测试
#查看有哪些
kubectl get deployment
#应用升级
kubectl set image (--help 查看帮助)
#扩容:把tomcat6扩容3份
kubectl scale --replicas=3 deployment tomcat6

扩容了多份,所有无论访问哪个 node 的指定端口,都可以访问到 tomcat6
查看扩容是否成功
缩容只需将replicas数量设置小一点 就会自动停掉一些 进行缩容
k8s入门使用_第6张图片

  1. 删除
#查询所有
kubectl get all
#删除 deploy
kubectl delete deploy/nginx
#删除 service
kubectl delete service/nginx-service

流程;创建 deployment 会管理 replicas,replicas 控制 pod 数量,有 pod 故障会自动拉起
新的 pod

细节

  1. kubectl 文档
    https://kubernetes.io/zh/docs/reference/kubectl/overview/
  2. 资源类型
    https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E8%B5%84%E6%BA%90%E7%B1%BB%E5%9E%8B
  3. 格式化输出
    https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA
  4. 常用操作
    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
  5. 命令参考
    https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

yml模板

k8s入门使用_第7张图片

#yml 形式查看某个pod资源信息
kubectl get pod tomcat6-5f7ccf4cb9-8nv6z -o yaml

作者声明

如有问题,欢迎指正!

你可能感兴趣的:(linux,Java,SpringBoot,SpringCloud,kubernetes,docker,容器)