古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

Kubernetes 实战之资源文件

时间: 2023-07-23   |   分类: Kubernetes   | 字数: 1646 字 | 阅读约: 4分钟 | 阅读次数:

Kubernetes 实战之资源文件

1. idea配置k8s插件

#插件官网,查找对应版本k8s插件
https://plugins.jetbrains.com/

#kubernetes地址: 
https://plugins.jetbrains.com/plugin/10485-kubernetes

2. 使用ssh客户端

就类似使用xshell工具

#配置ssh连接
settings->Tools->SSH Configurations->新建

#使用ssh连接
Tools->Start SSH session->选择我们刚刚配置的ssh客户端名称

#新建yml类型文件,见下图示例
settings->Edtior->File and Code Template->file->+(新建)

3. Remote Host

目标:将idea工程中的文件上传k8s集群master节点

类似于xftp工具

Tools->Deployment->Configurations->配置Remote Host

下面进行实际的练习

4. NameSpace

  • 创建NameSpace

    安装k8s插件后,会自动生成对应的Live Template模板,创建的时候可以通过快捷指令生成yml信息

    settings->Editor->Live Template->Kubernetes->查看自动生成的模板信息内容

    文件名: qiang_namespace_test.yml

    在文件中输入kres,根据模板快速生成yml文件信息

    apiVersion: v1
    kind: Namespace
    metadata:
      name: qiang
    

    通过idea的Remote Host快速将yml文件上传k8s集群进行测试

    kubectl apply -f /data/namespace/qiang_namespace_test.yml
    
  • 删除NameSpace

    kubectl delete -f /data/namespace/qiang_namespace_test.yml
    

5. pod

  • 创建pod

    文件名: qiang_pod_tomcat.yml

    在文件中输入kpod

    apiVersion: v1
    kind: Pod
    metadata:
      name: tomcat9
      labels:
        app: tomcat9
    spec:
      containers:
        - name: tomcat9
          image: tomcat:9.0.20-jre8-alpine
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
    
    imagePullPolicy: 
    	Always:总是拉取 pull 
    	IfNotPresent:如果本地有镜像,使用本地,如果本地没有镜像,下载镜像。 
    	Never:只使用本地镜像,从不拉取
    restartPolicy: 
    	Always:只要退出就重启。 
    	OnFailure:失败退出时(exit code不为0)才重启
        Never:永远不重启
    
  • 运行pod

    kubectl apply -f /data/pod/qiang_pod_tomcat.yml
    
  • 测试pod

    curl ip:8080
    
  • 删除Pod

    kubectl delete -f /data/pod/qiang_pod_tomcat.yml
    

6. Deployment

文件名: qiang_deployment_tomcat.yml

  • 创建deployment

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tomcat-deployment
      labels:
        app: tomcat-deployment
    spec:
      replicas: 1
      template:
        metadata:
          name: tomcat-deployment
          labels:
            app: tomcat-deployment
        spec:
          containers:
            - name: tomcat-deployment
              image: tomcat:9.0.20-jre8-alpine
              imagePullPolicy: IfNotPresent
          restartPolicy: Always
      selector:
        matchLabels:
          app: tomcat-deployment
    
    总结: 
    在Deployment中必须写matchLables 在定义模板的时候必须定义labels,
    因为Deployment.spec.selector是必须字段,而他又必须和 template.labels对应
    
  • 运行deployment

    kubectl apply -f /data/deployment/qiang_deployment_tomcat.yml
    
  • 控制器类型

    控制器名称作用
    Deployment声明式更新控制器,用于发布无状态应用
    ReplicaSet副本集控制器,用于对Pod进行副本规模 扩大或剪裁
    StatefulSet有状态副本集,用于发布有状态应用
    DaemonSet在k8s集群每一个Node上运行一个副本, 用于发布监控或日志收集类等应用
    Job运行一次性作业任务
    CronJob运行周期性作业任务
  • Deployment控制器介绍

    具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/ 稳定)等功能

    Deployment包含ReplicaSet,除非需要自定义升级功能或者根本不需要升级Pod,否则还是建议使用Deployment而不直接使用ReplicaSet

  • 删除deployment

    kubectl delete -f /data/deployment/qiang_deployment_tomcat.yml
    

7. Service

文件名: qiang_service_tomcat.yml

  • 创建service

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tomcat-deployment
      labels:
        app: tomcat-deployment
    spec:
      replicas: 1
      template:
        metadata:
          name: tomcat-deploymenta
          labels:
            app: tomcat-pod
        spec:
          containers:
            - name: tomcat-deployment
              image: tomcat:9.0.20-jre8-alpine
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 8080
          restartPolicy: Always
      selector:
        matchLabels:
          app: tomcat-pod
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tomcat-svc
    spec:
      selector:
        #标签选择必须是template.labels.app
        app: tomcat-pod
      ports:
        - port: 8888 #对集群内其他服务暴露端口号
          targetPort: 8080
          nodePort: 30088
      type: NodePort
    
  • service的selector

    service.spec.selector.app选择的内容仍然是template.label.app内容。而不是我们 deployment控制器的label内容

  • Service类型

    • ClusterIP:默认,分配一个集群内部可以访问的虚拟IP
    • NodePort:在每个Node上分配一个端口作为外部访问入口
    • LoadBalancer:工作在特定的Cloud Provider上,例如Google Cloud,AWS,OpenStack
    • ExternalName:表示把集群外部的服务引入到集群内部中来,即实现了集群内部pod和集群外部的服务 进行通信
  • Service参数

    • port :访问service使用的端口
    • targetPort :Pod中容器端口
    • NodePort: 通过Node实现外网用户访问k8s集群内service(30000-32767)
  • 运行/删除service

    kubectl apply -f tomcatservice.yml
    
    kubectl delete -f tomcatservice.yml
    
#Kubernetes# #容器# #虚拟化#
QQ扫一扫交流

标题:Kubernetes 实战之资源文件

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

Kubernetes 核心原理之Pod
Kubernetes 实战之命令行
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 1. idea配置k8s插件
  • 2. 使用ssh客户端
  • 3. Remote Host
  • 4. NameSpace
  • 5. pod
  • 6. Deployment
  • 7. Service
© 2019 - 2024 京ICP备19012088号-1
0%