【K8S】K8S入门基础知识

打印 上一主题 下一主题

主题 651|帖子 651|积分 1955

一、K8S基础知识


  • K8S是什么
K8S(Kubernetes)是⼀个容器集群管理系统,可以做容器集群的⾃动化部署,⾃动化扩缩容,维护等功能


  • 为什么要用K8S
传统应⽤部署是通过将程序打包在服务器上运⾏,通过允许脚本将程序跑起来,如果⼀个服务器⽆法响应⼤量请求,需要通过运维⼈员添加服务器来做负载均衡来分担压⼒,在此过程中,是有⼈⼒介⼊的过程的,K8S⽤于解决该问题


  • K8S的架构
K8S是属于主从设备模型(Master-Slave模型),Master节点主要负责容器的调度、管理和运维,Slave节点负责⽤户程序的执⾏,主节点⼀般称之为Master Node或者Head Node,从节点⼀般称之为Worker Node或者Node,⼀般来说,主节点或者从节点都是K8S的Master组件和Slave组件的实体服务器,每⼀个Node节点都对应着⼀台服务器(可以将Master和Slave安装在同⼀台服务器上,但是不推荐),所有的节点构成K8S集群系统,在⼀个集群中可以存在多个Master节点和Slave节点


  • 通过K8S能做什么
1.快速部署应用
2.快速扩展应用
3.无缝对接新的应用功能
4.节省资源,优化硬件资源的使用


  • K8S几个基本概念
Pod:Pod是在Kubernetes中创建和管理的最⼩可部署的计算单元
Deployment:作⽤是管理和控制Pod和ReplicaSet,管控它们运⾏在⽤户的期望之中
ReplicaSet:管理和控制Pod,但是它是受控于Deployment的,类似于包⼯头下的⼩包⼯头
Service:负责管控Pod的⽹络服务,K8S中的服务不同于我们常说的服务,在官⽅给的解释中说到,Kubenetes为Pods提供⾃⼰的IP地址,并为⼀组Pod提供相同的DNS域名,并且可以在它们之间进⾏负载均衡,这相当于API⽹关,做⼀个负载均衡器。

二、一些常用命令


  • 允许Master节点调度Pod,默认Master节点不允许部署调度Pod,使用如下命令去除污点
  1. kubectl taint nodes --all node-role.kubernetes.io/master-
复制代码

  • 节点Node相关
  1. kubectl get node -owide                #查看节点信息
  2. kubectl top node                #查看Node的资源使用情况
  3. kubectl describe node nodeName                #查询节点的详细信息
复制代码

  • 节点标签相关,标签可以加在各种资源上,进行关联
  1. kubectl get node --show-labels                #查看节点标签
  2. kubectl label nodes xxx k1=v1                #给节点添加标签
  3. kubectl label nodes xxx k1-                #删除标签
复制代码

  • 命名空间相关,NameSpace是一组资源和对象的抽象,有一个默认的NameSpace(Default)
  1. kubectl create ns                #创建ns
  2. kubectl get ns                #获取所有的NameSpace
复制代码

  • Pod相关,Service命令与管理Pod的一致,将【pod】替换成【service】
  1. kubectl apply -f pod-nginx.yml                #使用yaml文件创建Pod
  2. kubectl delete -f pod-nginx.yml                #使用yaml文件删除Pod
  3. kubectl get pod -n ns                #查看ns下所有的Pod
  4. kubectl describe pod -n k8s-demo xxx                #查看Pod的详细信息
  5. kubectl delete pod -n ns xxx                #删除Pod
复制代码

  • Deployment的创建方式和通过yaml文件创建Pod类似,是Pod的管理者
  1. kubectl set image deploy nginx-deployment -n ns *=nginx:latest                #修改Pod的镜像版本
  2. kubectl scale deploy  -n k8s-demo nginx-deployment --replicas=2                #设置Pod的副本数量
复制代码
Pod是平凡的,它门会被创建,也会死掉(生老病死),并且他们是不可复活的,每个pod都有自己的ip,这些IP也随着时间的变化也不能持续依赖。这样就引发了一个问题:如果一些Pods提供了一些功能供其它的Pod使用(让我们叫作前台),在kubernete集群中是如何实现让这些前台能够持续的追踪到这些后台的。答案是Service
三、yaml示例


  • 创建Pod
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: nginx
  5.   namespace: demo
  6. spec:
  7.   nodeSelector:
  8.     app: nginx
  9.   containers:
  10.   - name: nginx
  11.     image: nginx:1.18.0
  12.     # 镜像拉取策略,默认是IfNotPresent,其余还有Always, Never
  13.     imagePullPolicy: IfNotPresent
复制代码

  • 创建deployment
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: nginx-deployment
  5.   namespace: demo
  6. spec:
  7.   # 副本数
  8.   replicas: 3
  9.   selector:
  10.     matchLabels:
  11.       app: nginx
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: nginx
  16.     spec:
  17.       # 绑定节点
  18.       nodeName: demoNode
  19.       # 通过标签进行节点选择
  20.       nodeSelector:
  21.         app: nginx
  22.       containers:
  23.       - name: nginx
  24.         image: nginx:1.18.0
  25.         env:
  26.           - name: k1
  27.             value: v1
  28.         ports:
  29.         - containerPort: 80
  30.         # 存活探针
  31.         livenessProbe:
  32.           httpGet:
  33.             path: /index.html
  34.             port: 80
  35.           initialDelaySeconds: 3
  36.           periodSeconds: 3
  37.         # 就绪探针
  38.         readinessProbe:
  39.           httpGet:
  40.             path: /index.html
  41.             port: 80
  42.           initialDelaySeconds: 3
  43.           periodSeconds: 3
复制代码

  • 创建Service
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: nginx
  5. spec:
  6.   # 通过标签与pod匹配
  7.   selector:
  8.     app: nginx
  9.   ports:
  10.   - name: default
  11.     protocol: TCP
  12.     port: 80
  13.     targetPort: 80
  14.     type: ClusterIp
复制代码
说明:以上K8S内容只是本人作为一个简单入门的记录,包含了日常工作的基本使用,再往深的内容并不涉及,比如Etcd存储,调度器,监控器等等,这些内容可以上Kuberneters的中文社区自己学习

来源:https://www.cnblogs.com/hujh2022/p/16342876.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表