ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【K8S】K8S入门基础知识 [打印本页]

作者: 南七星之家    时间: 2022-6-21 16:49
标题: 【K8S】K8S入门基础知识
一、K8S基础知识

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

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

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

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

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

二、一些常用命令

  1. kubectl taint nodes --all node-role.kubernetes.io/master-
复制代码
  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-                #删除标签
复制代码
  1. kubectl create ns                #创建ns
  2. kubectl get ns                #获取所有的NameSpace
复制代码
  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
复制代码
  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示例

  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
复制代码
  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
复制代码
  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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4