k8s中,一.service发布服务,二.dashboard:基于网页的k8s管理插件,三.资源服务与帐号权限

一.service资源对内发布服务Cluster IP对外发布服务NodePortIngress
二.dashboard:基于网页的k8s管理插件
三.资源服务与帐号权限一.service:用户无法预知pod的ip地址以及所在的节点,多个相同的pod如何访问他们上面的服务功能:1.服务自动感知:pod迁移后访问service的ip,不受影响2.服务的自动发现:服务创建时自动在内部dns上注册域名服务名称.名称空间.svc.cluster.local3.服务负载均衡:访问多个相同标签的服务1.ClusterIP类型:集群内部发布服务(标签服务)1.1  资源清单文件生成#命令生成资源清单文件kubectl create service clusterip websvc --tcp=80:80 --dry-run=client -o yaml#自定义[root@master ~]# vim websvc.yaml---kind: ServiceapiVersion: v1metadata:name: websvc  spec:type: ClusterIP  #服务类型selector:app: web       #标签ports:           #端口- protocol: TCP  #协议port: 80 	      #服务的端口targetPort: 80 #后端pod端口1.2 解析域名# 安装工具软件包[root@master ~]# dnf install -y bind-utils# 查看 DNS 服务地址[root@master ~]# kubectl -n kube-system get service kube-dnsNAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)kube-dns   ClusterIP   10.245.0.10   <none>        53/UDP,53/TCP,9153/TCP# 域名解析测试[root@master ~]# host websvc.default.svc.cluster.local 10.245.0.10websvc.default.svc.cluster.local has address 10.245.5.181.3 通过标签完成请求转发,服务和service资源设置相同标签,创建后端应用[root@master ~]# vim web1.yaml ---kind: PodapiVersion: v1metadata:name: web1labels:app: web   # 服务靠标签寻找后端spec:containers:- name: apacheimage: myos:httpd1.4 给service服务设置固定的ip---kind: ServiceapiVersion: v1metadata:name: websvcspec:type: ClusterIPclusterIP: 10.245.1.80  #固定的ipselector:app: webports:- protocol: TCPport: 80targetPort: 801.5 端口别名,解决后端pod中多个服务的端口不一致情况service资源设置:---kind: ServiceapiVersion: v1metadata:name: websvcspec:type: ClusterIPclusterIP: 10.245.1.80  # 固定的ipselector:app: webports:- protocol: TCPport: 80targetPort: myhttp  # 端口别名pod资源设置:---kind: PodapiVersion: v1metadata:name: web1labels:app: web   	# 服务靠标签寻找后端spec:containers:- name: apacheimage: myos:httpdports:- name: myhttp  # 使用别名protocol: TCPcontainerPort: 802.NodePort:使用基于端口映射(30000-32767),外部服务请求节点,节点将请求转发给内部的clusteripnodeport--clusterip(service)--pod2.1 NodePort对外发布服务---kind: ServiceapiVersion: v1metadata:name: mysvcspec:type: NodePort            # 服务类型selector:app: webports:- protocol: TCPport: 80nodePort: 30080         # 映射端口号,不设置使用随机的端口号targetPort: 80	外部服务通过端口转发访问服务:curl http://node-0001:300803.Ingress(规则+控制器):通过http和https访问集群内部服务,支持域名解析ingress--service(clusterip)--pod前提:必须先配置好clusterip3.1 安装并配置ingress的规则# 查询ingress控制器类名称[root@master ~]# kubectl get ingressclasses.networking.k8s.io ---apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: simplespec:ingressClassName: ningx #控制器rules: 	       # 规则- host: foo.com   # 域名http:	       # 协议paths:	//前端参数- path: /bar	# 访问的url路径pathType: Exact #路径的类型(Prefix:宽松模式,访问路径以及子路径的内容,Exact:严格模式)//后端参数	backend: 	# 后端service: name: svc1	#服务名port:		#端口号number: 80status:loadBalancer: {}二.dashbord插件:基于网页的k8s用户界面1.安装dashborad[root@master ~]# cd plugins/dashboard[root@master dashboard]# docker load -i dashboard.tar.xz[root@master dashboard]# docker images|while read i t _;do[[ "${t}" == "TAG" ]] && continue[[ "${i}" =~ ^"harbor:443/".+ ]] && continuedocker tag ${i}:${t} harbor:443/plugins/${i##*/}:${t}docker push harbor:443/plugins/${i##*/}:${t}docker rmi ${i}:${t} harbor:443/plugins/${i##*/}:${t}donesed -ri 's,^(\s*image: )(.*/)?(.+),\1harbor:443/plugins/\3,' recommended.yaml[root@master dashboard]# kubectl apply -f recommended.yaml[root@master dashboard]# kubectl -n kubernetes-dashboard get pods2.修改nodePort发布服务---kind: ServiceapiVersion: v1metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboardspec:type: NodePortports:- port: 443nodePort: 30443targetPort: 8443selector:k8s-app: kubernetes-dashboard
三.资源与帐号权限1.角色与权限分类资源对象			描述					  作用域ServiceAccount	服务账号,为 Pod 中运行的进程提供了一个身份	单一名称空间Role			角色,包含一组代表相关权限的规则		单一名称空间RoleBinding		将权限赋予用户,Role、ClusterRole 均可使用	单一名称空间ClusterRole		角色,包含一组代表相关权限的规则		全集群ClusterRoleBinding	将权限赋予用户,只可以使用 ClusterRole	全集群2.资源对象的权限(对资源类型进行权限管理)create	 delete	deletecollection	get	list	 	创建	 删除		删除集合	     获取属性	获取列表(多个)  patch	 		update  	watch补丁(补充某一部分内容)	 更新	  	监控3.serviceaccount创建服务帐号# 资源对象模板kubectl -n kubernetes-dashboard create serviceaccount kube-admin --dry-run=client -o yaml[root@master ~]# vim admin-user.yaml---kind: ServiceAccountapiVersion: v1metadata:name: kube-adminnamespace: kubernetes-dashboard[root@master ~]# kubectl -n kubernetes-dashboard get serviceaccounts4.获取用户 token[root@master ~]# kubectl -n kubernetes-dashboard create token kube-admin6.自定义角色资源类型# 角色资源对象模板kubectl -n default create role myrole --resource=pods --verb=get,list --dry-run=client -o yaml---kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:name: myrolenamespace: defaultrules:- apiGroups:- ""resources: # 设置的资源- podsverbs:  #设置的授权- get- list7.给kube-admin普通用户授权(RoleBinding)---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:name: kube-admin-role   #授权策略名称namespace: defaultroleRef: 			#关联权限apiGroup: rbac.authorization.k8s.io #角色对象组kind: Role 			#角色资源对象name: myrole 		#角色资源名称subjects: 			#帐号授权配置- kind: ServiceAccount     #帐号资源对象name: kube-admin 		#帐号资源名称namespace: kubernetes-dashboard #帐号所在的名称空间9.给集群管理员授权(ClusterRoleBinding)---kind: ServiceAccountapiVersion: v1metadata:name: kube-adminnamespace: kubernetes-dashboard---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:name: kube-admin-roleroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-adminsubjects:- kind: ServiceAccountname: kube-adminnamespace: kubernetes-dashboard

一.service资源
    对内发布服务
        Cluster IP
    对外发布服务
        NodePort
        Ingress
二.dashboard:基于网页的k8s管理插件
三.资源服务与帐号权限

一.service:用户无法预知pod的ip地址以及所在的节点,多个相同的pod如何访问他们上面的服务
        功能:
        1.服务自动感知:pod迁移后访问service的ip,不受影响
        2.服务的自动发现:服务创建时自动在内部dns上注册域名
            服务名称.名称空间.svc.cluster.local
        3.服务负载均衡:访问多个相同标签的服务
    
    1.ClusterIP类型:集群内部发布服务(标签服务)
      1.1  资源清单文件生成
        #命令生成资源清单文件
        kubectl create service clusterip websvc --tcp=80:80 --dry-run=client -o yaml
        
        #自定义
        [root@master ~]# vim websvc.yaml
        ---
        kind: Service
        apiVersion: v1
        metadata:
          name: websvc  
        spec:
          type: ClusterIP  #服务类型
          selector:
            app: web       #标签
          ports:           #端口
          - protocol: TCP  #协议
            port: 80           #服务的端口
            targetPort: 80 #后端pod端口

      1.2 解析域名
        # 安装工具软件包
        [root@master ~]# dnf install -y bind-utils
        # 查看 DNS 服务地址
        [root@master ~]# kubectl -n kube-system get service kube-dns
        NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)
        kube-dns   ClusterIP   10.245.0.10   <none>        53/UDP,53/TCP,9153/TCP
        # 域名解析测试
        [root@master ~]# host websvc.default.svc.cluster.local 10.245.0.10
        websvc.default.svc.cluster.local has address 10.245.5.18

      1.3 通过标签完成请求转发,服务和service资源设置相同标签,创建后端应用
        [root@master ~]# vim web1.yaml 
        ---
        kind: Pod
        apiVersion: v1
        metadata:
          name: web1
          labels:
            app: web   # 服务靠标签寻找后端
        spec:
          containers:
          - name: apache
            image: myos:httpd

     1.4 给service服务设置固定的ip
        ---
        kind: Service
        apiVersion: v1
        metadata:
          name: websvc
        spec:
          type: ClusterIP
          clusterIP: 10.245.1.80  #固定的ip
          selector:
            app: web
          ports:
          - protocol: TCP
            port: 80
            targetPort: 80

    1.5 端口别名,解决后端pod中多个服务的端口不一致情况
        service资源设置:
        ---
        kind: Service
        apiVersion: v1
        metadata:
          name: websvc
        spec:
          type: ClusterIP
          clusterIP: 10.245.1.80  # 固定的ip
          selector:
            app: web
          ports:
          - protocol: TCP
            port: 80
            targetPort: myhttp  # 端口别名
        pod资源设置:
        ---
        kind: Pod
        apiVersion: v1
        metadata:
          name: web1
          labels:
            app: web       # 服务靠标签寻找后端
        spec:
          containers:
          - name: apache
            image: myos:httpd
          ports:
          - name: myhttp  # 使用别名
            protocol: TCP
            containerPort: 80

    2.NodePort:使用基于端口映射(30000-32767),外部服务请求节点,节点将请求转发给内部的clusterip
        nodeport--clusterip(service)--pod
    2.1 NodePort对外发布服务
        ---
        kind: Service
        apiVersion: v1
        metadata:
          name: mysvc
        spec:
          type: NodePort            # 服务类型
          selector:
            app: web
          ports:
          - protocol: TCP
            port: 80
            nodePort: 30080         # 映射端口号,不设置使用随机的端口号
            targetPort: 80    
        外部服务通过端口转发访问服务:curl http://node-0001:30080

    3.Ingress(规则+控制器):通过http和https访问集群内部服务,支持域名解析
        ingress--service(clusterip)--pod
        前提:必须先配置好clusterip
        
    3.1 安装并配置ingress的规则
        # 查询ingress控制器类名称
        [root@master ~]# kubectl get ingressclasses.networking.k8s.io 
        ---
        apiVersion: networking.k8s.io/v1
        kind: Ingress
        metadata:
          name: simple
        spec:
          ingressClassName: ningx #控制器
          rules:            # 规则
          - host: foo.com   # 域名
            http:           # 协议
              paths:    
            //前端参数
              - path: /bar    # 访问的url路径
                pathType: Exact #路径的类型(Prefix:宽松模式,访问路径以及子路径的内容,Exact:严格模式)
            //后端参数    
                backend:     # 后端
                  service: 
                    name: svc1    #服务名
                    port:        #端口号
                      number: 80
        status:
          loadBalancer: {}

二.dashbord插件:基于网页的k8s用户界面
    1.安装dashborad
        [root@master ~]# cd plugins/dashboard
        [root@master dashboard]# docker load -i dashboard.tar.xz
        [root@master dashboard]# docker images|while read i t _;do
            [[ "${t}" == "TAG" ]] && continue
            [[ "${i}" =~ ^"harbor:443/".+ ]] && continue
            docker tag ${i}:${t} harbor:443/plugins/${i##*/}:${t}
            docker push harbor:443/plugins/${i##*/}:${t}
            docker rmi ${i}:${t} harbor:443/plugins/${i##*/}:${t}
        done
        sed -ri 's,^(\s*image: )(.*/)?(.+),\1harbor:443/plugins/\3,' recommended.yaml
        [root@master dashboard]# kubectl apply -f recommended.yaml
        [root@master dashboard]# kubectl -n kubernetes-dashboard get pods
        
    2.修改nodePort发布服务
        ---
        kind: Service
        apiVersion: v1
        metadata:
          labels:
            k8s-app: kubernetes-dashboard
          name: kubernetes-dashboard
          namespace: kubernetes-dashboard
        spec:
          type: NodePort
          ports:
            - port: 443
              nodePort: 30443
              targetPort: 8443
          selector:
            k8s-app: kubernetes-dashboard
三.资源与帐号权限
    1.角色与权限分类
        资源对象            描述                      作用域
        ServiceAccount    服务账号,为 Pod 中运行的进程提供了一个身份    单一名称空间

        Role            角色,包含一组代表相关权限的规则        单一名称空间
        RoleBinding        将权限赋予用户,Role、ClusterRole 均可使用    单一名称空间

        ClusterRole        角色,包含一组代表相关权限的规则        全集群
        ClusterRoleBinding    将权限赋予用户,只可以使用 ClusterRole    全集群

    2.资源对象的权限(对资源类型进行权限管理)
        create     delete    deletecollection    get    list         
        创建     删除        删除集合         获取属性    获取列表(多个)  
        patch             update      watch
        补丁(补充某一部分内容)     更新          监控

    3.serviceaccount创建服务帐号
        # 资源对象模板
        kubectl -n kubernetes-dashboard create serviceaccount kube-admin --dry-run=client -o yaml
        
        [root@master ~]# vim admin-user.yaml
            ---
            kind: ServiceAccount
            apiVersion: v1
            metadata:
              name: kube-admin
              namespace: kubernetes-dashboard
        
        [root@master ~]# kubectl -n kubernetes-dashboard get serviceaccounts
    
    4.获取用户 token
        [root@master ~]# kubectl -n kubernetes-dashboard create token kube-admin

    6.自定义角色资源类型
        # 角色资源对象模板
        kubectl -n default create role myrole --resource=pods --verb=get,list --dry-run=client -o yaml
        ---
        kind: Role
        apiVersion: rbac.authorization.k8s.io/v1
        metadata:
          name: myrole
          namespace: default
        rules:
        - apiGroups:
          - ""
          resources: # 设置的资源
          - pods
          verbs:  #设置的授权
          - get
          - list

    7.给kube-admin普通用户授权(RoleBinding)
        ---
        kind: RoleBinding
        apiVersion: rbac.authorization.k8s.io/v1
        metadata:
          name: kube-admin-role   #授权策略名称
          namespace: default
        roleRef:             #关联权限
          apiGroup: rbac.authorization.k8s.io #角色对象组
          kind: Role             #角色资源对象
          name: myrole         #角色资源名称
        subjects:             #帐号授权配置
        - kind: ServiceAccount     #帐号资源对象
          name: kube-admin         #帐号资源名称
          namespace: kubernetes-dashboard #帐号所在的名称空间

    9.给集群管理员授权(ClusterRoleBinding)
        ---
        kind: ServiceAccount
        apiVersion: v1
        metadata:
          name: kube-admin
          namespace: kubernetes-dashboard
        
        ---
        kind: ClusterRoleBinding
        apiVersion: rbac.authorization.k8s.io/v1
        metadata:
          name: kube-admin-role
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: cluster-admin
        subjects:
        - kind: ServiceAccount
          name: kube-admin
          namespace: kubernetes-dashboard
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL——表操作及查询

一.表操作 MySQL的操作中&#xff0c;一些专用的词无论是大写还是小写都是可以通过的。 1.插入数据 INSERT [INTO] table_name (列名称…)VALUES (列数据…), (列数据…); "[]"表示可有可无&#xff0c;插入时&#xff0c;如果不指定要插入的列&#xff0c;则表示默…

数据结构-基础

1、概念&#xff1a; 程序 数据结构 算法 2、程序的好坏 可读性&#xff0c;稳定性&#xff0c;扩展性&#xff0c;时间复杂度&#xff0c;空间复杂度。 3、数据结构 是指存储、组织数据的方式&#xff0c;以便高效地进行访问和修改。通过选择适当的数据结构&#xff0c; 能…

本地部署DeepSeek(Mac版本,带图形化操作界面)

一、下载安装&#xff1a;Ollama 官网下载&#xff1a;Download Ollama on macOS 二、安装Ollama 1、直接解压zip压缩包&#xff0c;解压出来就是应用程序 2、直接将Ollama拖到应用程序中即可 3、启动终端命令验证 # 输入 ollama 代表已经安装成功。 4、下载模型 点击模型…

Nginx配置 ngx_http_proxy_connect_module 模块及安装

1、配置完互联网yum源后,安装相关依赖软件包 [root@server soft]# yum install -y patch pcre pcre-devel make gcc gcc-c++ openssl openssh [root@server soft]# yum install openssl* 2、解压缩软件,加载模块 [root@server soft]# ls nginx-1.20.2 nginx-1.20.2.tar.gz …

宾馆民宿酒店住宿管理系统+小程序项目需求分析文档

该系统是一款专为现代酒店设计的高效、智能、易用的管理工具,旨在帮助酒店提升运营效率、优化客户体验,提升客户满意度与忠诚度,并促进业务增长。系统采用先进的云计算技术,支持小程序等多平台访问,第三方接口,确保数据安全与稳定。本系统主要针对中小型精品酒店、连锁酒…

山东大学软件学院人机交互期末复习笔记

文章目录 2022-2023 数媒方向2023-2024 软工方向重点题目绪论发展阶段 感知和认知基础视觉听觉肤觉知觉认知过程和交互设计原则感知和识别注意记忆问题解决语言处理影响认知的因素 立体显示技术及其应用红蓝眼镜偏振式眼镜主动式&#xff08;快门时&#xff09;立体眼镜 交互设…

《Kettle实操案例一(全量/增量更新与邮件发送)》

目录 一、场景描述:二、要求:三、思路四、整体作业五、各部分详细配置1、Start2、转换-获取执行开始时间3、获取目标表抽取前行数4、检验字段的值5、增量更新6、全量更新7、获取目标表抽取后行数8、获取执行结束时间9、日志写入数据库10、写日志11、发送数据抽取完成邮件 六、最…

位运算算法篇:进入位运算的世界

位运算算法篇&#xff1a;进入位运算的世界 本篇文章是我们位运算算法篇的第一章&#xff0c;那么在我们是算法世界中&#xff0c;有那么多重要以及有趣的算法&#xff0c;比如深度优先搜索算法以及BFS以及动态规划算法等等&#xff0c;那么我们位运算在这些算法面前相比&#…

redis高级数据结构HyperLogLog

文章目录 背景常见API注意事项实现原理1、哈希函数2、前导零统计3、存储与计数4、基数估算 pf 的内存占用为什么是 12k&#xff1f;总结 背景 在开始这一节之前&#xff0c;我们先思考一个常见的业务问题&#xff1a;如果你负责开发维护一个大型的网站&#xff0c;有一天老板找…

<tauri><rust><GUI>基于rust和tauri,在已有的前端框架上手动集成tauri示例

前言 本文是基于rust和tauri&#xff0c;由于tauri是前、后端结合的GUI框架&#xff0c;既可以直接生成包含前端代码的文件&#xff0c;也可以在已有的前端项目上集成tauri框架&#xff0c;将前端页面化为桌面GUI。 环境配置 系统&#xff1a;windows 10 平台&#xff1a;visu…

mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别

一 事务简介&#xff0c; 数据库准备&#xff1a; create table account(id int auto_increment primary key comment 主键ID,name varchar(128) not null comment 姓名,backaccountnumber char(18) unique comment 银行账号,money float comment 余额 )comment 银行账号表;…

重塑生产制造企业项目管理新范式:项目模板在Tita中的卓越实践

在竞争激烈的生产制造领域&#xff0c;每一个项目的成功执行都是企业稳健前行的重要基石。然而&#xff0c;面对复杂多变的生产流程、严格的交货期限以及不断变化的客户需求&#xff0c;如何确保项目高效、有序地进行&#xff0c;成为了众多企业面临的共同挑战。此时&#xff0…

AI知识库和全文检索的区别

1、AI知识库的作用 AI知识库是基于人工智能技术构建的智能系统&#xff0c;能够理解、推理和生成信息。它的核心作用包括&#xff1a; 1.1 语义理解 自然语言处理&#xff08;NLP&#xff09;&#xff1a;AI知识库能够理解用户查询的语义&#xff0c;而不仅仅是关键词匹配。 …

1-1二分查找

二分查找 1 基础版1.1 算法描述1.2 算法流程图1.3 算法实现1.3.1 Java实现 2 改动版2.1 算法描述2.2 算法流程图2.3 算法实现2.3.1 Java实现 2.4 改进点分析2.4.1 区间定义差异2.4.2 核心改进原理2.4.3 数学等价性证明 3 平衡版3.1 算法描述3.2 算法流程图3.3 算法实现3.3.1 Ja…

Elasticsearch去分析目标服务器的日志,需要在目标服务器上面安装Elasticsearch 软件吗

Elasticsearch 本身并不直接收集目标服务器的日志&#xff0c;它主要用于存储、搜索和分析数据。要收集目标服务器的日志&#xff0c;通常会借助其他工具&#xff0c;并且一般不需要在目标服务器上安装 Elasticsearch 软件&#xff0c;常见的日志收集方案&#xff1a; Filebeat…

Ajax-介绍

概念: Asynchronous JavaScript And XML&#xff0c;异步的JavaScript和XML. 作用: 数据交换:通过Aiax可以给服务器发送请求&#xff0c;并获取服务器响应的数据 异步交互: 可以在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分网页的技术, 如:搜索联想、…

论软件架构风格论文

摘要: 本人于2023年1月参与广东省某公司委托我司开发的“虚拟电厂”项目,主要负责系统整体架构设计和中间件选型。该项目为新型电力存储、电力调配、能源交易提供一套整体的软件系统。本文以虚拟电厂项目为例,主要讨论架构风格在本项目中的具体应用,主要包括如下,底层架构…

基于可信数据空间的企业数据要素与流通体系建设(附ppt 下载)

近期&#xff0c;可信数据空间会议召开。大数据系统软件国家工程研究中心总工程师王晨发表了题为《基于可信数据空间的企业数据要素与流通体系建设》主旨演讲。 WeChat Subscription Account【智慧城市指北】&#xff0c;可搜索相关关键字“20250107”&#xff0c;可获取具体获…

idea整合deepseek实现AI辅助编程

1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号&#xff0c;DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息&#xff0c;File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…

CentOS 7配置samba服务设置文件共享

CentOS 7配置samba服务设置文件共享 一、生成另一个Linux系统&#xff0c;名为Linux-client&#xff0c;作为测试系统。 [rootliunx-client ~]# hostnamectl set-hostname Liunx-client二、如果没有则安装Samba服务&#xff0c;如果已经安装则省略此步。 yum install samba…