代码编织梦想

杜宽老师宽k8s课程学习笔记

7.1 k8s是如何发布服务的

南北流量:放在公网上供用户访问;

东西流量:系统间内部访问;

pod删除后重建,ip地址发生变化,故不能采用ip方式访问pod。

k8s对内用service(对应东西流量),对外用ingress(nginx实现,通过域名代理到service,通过service再访问pod)(对应南北流量)。 

 7.2 什么是Label 和 Selector

不同资源控制器打的标签不要一样,比如deployment和deamomset的标签一样都是app=nginx,那就会出现问题。

---查看节点的标签
kubectl get nodes --show-labels

 

7.3 Label 和 Selector的使用

kubectl label node k8s-node01   k8s-node02  subnet=7

新建测试labels的yaml文件:nginx-deploy_labels_1123.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 5 #副本数
  selector:
    matchLabels:
      app: nginx
  #strategy:
   #rollingUpdate:
      #maxSurge: 25%
      #maxUnavailable: 25%
    #type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      nodeSelector:
        subnet: "7"
      containers:
      - image: registry.cn-beijing.aliyuncs.com/dotbalo/nginx:1.15.12
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
kubectl create -f nginx-deploy_labels_1123.yaml;
kubectl get po -owide;

label命令可以给node,pod,service等多种类型资源打上标签;

5个副本都分配在被打标签的(subnet=7)node01和noge02上面;

 打标签练习

#Selector 选择器过滤
kubectl get nodes  -l 'role in (master,node)' 

 

 修改标签

kubectl label nodes k8s-node01    subnet=120  --overwrite

统一修改标签

kubectl label nodes  -l subnet subnet=120 --overwrite

 删除标签

kubectl label  nodes  k8s-node01 subnet-

 标签批量删除

kubectl label  nodes   -l subnet  subnet-

7.4 什么是service

 可以通过ip访问

 

 7.5 service的基本使用

 

 去掉nodeselector后的yaml文件如下:

[root@k8s-master01 ~]# cat nginx-deploy_labels_1123.yaml
# cat nginx-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 5 #副本数
  selector:
    matchLabels:
      app: nginx
  #strategy:
   #rollingUpdate:
      #maxSurge: 25%
      #maxUnavailable: 25%
    #type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      #nodeSelector:
      #  subnet: "7"
      containers:
      - image: registry.cn-beijing.aliyuncs.com/dotbalo/nginx:1.15.12
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
kubectl replace  -f nginx-deploy_labels_1123.yaml 

 

 

 service必须是pod在同一个namespace下,不然service会找不到pod;

kubectl create -f service_1126.yaml 

测试结果

 测试:删除app=nginx标签的pod后,新建的pod ip地址发生变化,但仍然可以通过service地址访问。

service采用轮循方式,将请求随机转发后其代理的5个pod中处理;

 

 具体修改位置

 修改后的yaml文件如下

[root@k8s-master01 ~]# cat nginx-deploy_labels_1123.yaml
# cat nginx-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 5 #副本数
  selector:
    matchLabels:
      app: nginx
  #strategy:
   #rollingUpdate:
      #maxSurge: 25%
      #maxUnavailable: 25%
    #type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      #nodeSelector:
      #  subnet: "7"
      containers:
      - image: registry.cn-beijing.aliyuncs.com/dotbalo/nginx:1.15.12-alpine
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
kubectl replace -f  nginx-deploy_labels_1123.yaml

 

 7.6 service的类型

Kubernetes Service Type(服务类型)主要包括以下几种:
➢ ClusterIP :在集群内部使用,默认值,只能从集群中访问。
➢ NodePort :在所有安装了 Kube P roxy 的节点上打开一个端口,此端口可以代理至后端
Pod ,可以通过 NodePort 从集群外部访问集群内的服务,格式为 NodeIP:NodePort 。eg:比如笔记本电脑想访问pod服务,显然不能直接在笔记本的浏览器输入pod的地址访问,但我们笔记本和宿主机(master01-03+node01-02,ip:192.168.1.107-192.168.1.111)是通的,可以通过宿主机加映射到pod,这样笔记本就可以直接访问pod里的服务了。
➢ LoadBalancer :使用云提供商的负载均衡器公开服务,成本较高。
➢ ExternalName :通过返回定义的 CNAME 别名,没有设置任何类型的代理,需要 1.7 或
更高版本 kube dns 支持。

7.7 使用NodePort对外发布服务

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dluhehe/article/details/127995337

kubernetes(k8s)从入门到精通--配置dashboard及基础命令-第一章-第二节【入门篇】-爱代码爱编程

意义            在Kubernetes Dashboard 中可以查看集群中应用的运行状态,也能够创建和修改各种 Kubernetes 资源,比如 Deployment、Job、DaemonSet 等。用户可以 Scale Up/Down Deployment、执行 Rolling Update、重启某个 Pod 或者通过向导部署新的应用。D

kubernetes(k8s)从入门到精通--存储卷-第一章-第七节【入门篇】-爱代码爱编程

Kubernetes学习之路(十六)之存储卷 目录 一、存储卷的概念和类型二、emptyDir存储卷演示三、hostPath存储卷演示四、nfs共享存储卷演示五、PVC和PV的概念六、NFS使用PV和PVC 1、配置nfs存储2、定义PV3、定义PVC4、测试访问七、StorageClass八、配置容器应用:Secret和configMap

Kubernetes-K8s集群安装-爱代码爱编程

一、环境准备 1、机器环境 节点CPU核数必须是∶>=2核,否则k8s无法启动。 DNS网络∶最好设置为本地网络连通的DNS,否则网络不通,无法下载一些镜像 linux内核:linux内核必须是4版本以上,因此必须把linlix核心进行升级 准备3台虚拟机环境,或者是3台阿里云服务器都可。 k8s-master01:(192.168.

【谷粒商城】集群篇-k8s(4/4)-爱代码爱编程

【谷粒商城】集群篇-k8s(4/4) 目录 一、K8s快速入门 1)简介 2)架构 3)概念 4)快速体验 二、K8s集群安装 1)kubeadm 2)前置要求 3)部署步骤 4)环境准备 5)所有节点安装docker、kubeadm、kubelet、kubectl 6)部署k8s-master 7)安装POD网络插件(CNI)

谷粒商城-服务4(K8s部署篇)-爱代码爱编程

一、K8s(KubeSphere) 中文官网:https://kubernetes.io/zh/ k8s 是分布式部署管理工具,用于容器的部署和编排 Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。 中文官网:https://kubernetes.io/zh/ 中文社区:https://www.kubernetes

k8s入门你至少需要会哪些-爱代码爱编程

前言 相信很多公司都有集成发布pass系统,底层大多数依赖于k8s来进行服务的发布部署/回滚等功能。对于很多业务开发者都是不可见的,在感叹这个东西真好用的同时,想着探一探这背后的原理。 今天这篇k8s入门我整理了必会的几个k8s知识点,写一个demo应用部署到k8s •docker的使用,镜像的创建和发布(我当你已经会了哈)•k8s开发环境搭建

k8s入门篇-爱代码爱编程

k8s入门篇 docker 起源 我先简单介绍下docker的起源吧,docker是随着pass项目而发展起来的一种容器技术,具有解放开发人员,快速部署的能力定义 开源高性能的容器化技术 开源是他得以快速发展的原因高性能要用快和省来解释,后面讲docker特点时会详细讲容器化用一个词来定义我觉得就是隔离特点 一、高效的虚拟化,它是在操作系

适合小白入门,一篇汇总k8s存储架构、csi原理和实现-爱代码爱编程

适合小白入门 非原创,搜集了一些讲解清晰的资料,做个汇总。 0.基础知识准备 https://draveness.me/kubernetes-volume/ https://www.kubernetes.org.cn/4846.html https://kingjcy.github.io/post/cloud/paas/base/kubernete

kubernetes(k8s)集群搭建基础入门教程_养歌的博客-爱代码爱编程

上一篇文章讲了 K8s 相关组件知识点,这篇文章主要是搭建一个 Master 节点和多个 Node 节点的集群环境。Kubernetes(K8s) 基本概念 前期准备 1、准备 3 台 centos 7 或者更高版本的虚拟机,主要用来安装 K8s 集群,下面是 3 台虚拟机的配置情况: IP操作系统主机名称配置网络192.168.2.124cento

k8s初探入门详细教程(二)_顿顿有鱼有虾的博客-爱代码爱编程

提示:这一篇是第一篇的延续如果没看过第一篇请参考K8s初探入门详细教程(一) 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 例如:本篇接续上一篇主要介绍使用VirtualBox部署K8S遇到的一些小问题以及calico和dashoboard的部署。 一、cali

kubernetes/k8s 基础入门教程_meta.qing的博客-爱代码爱编程

前言 在本文中,您将了解 Kubernetes 并开发和部署示例应用程序。为了避免重复并避免与其他资源发生冲突,本文将重点介绍在 Kubernetes 集群上部署第一个应用程序所需的操作,而不是首先解决理论主题。不过,本文不会回避理论主题;您将在需要时即时了解它们。这种方法将防止过早引入可能没有意义的抽象讨论和解释。 为什么会出现对 Kuberne

flink1.12.0学习笔记第1篇-部署与入门_王亭_666的博客-爱代码爱编程

flink1.12.0学习笔记第 1 篇-部署与入门 flink1.12.0学习笔记第1篇-部署与入门 flink1.12.0学习笔记第2篇-流批一体API flink1.12.0学习笔记第3篇-高级API flin

docker不香吗?为什么还需要k8s?_k8s和docker哪个好用-爱代码爱编程

🌟 前言 大家好,我是Edison😎 今天是我们「云原生」系列的第二篇:「走进 k8s 的世界」; Let’s get it! 文章目录 🌟 前言1. 先导知识🍑 容器🍅 容器的特性 🍑 集