k8s 介绍与基本使用
一、k8s基本介绍
kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源 的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种 机制。
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、 应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便 对应用请求进行负载均衡。
在 Kubernetes 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通 过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需 要运维人员去进行复杂的手工配置和处理。
二、K8s 所具备的功能
-  
自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
 -  
自我修复(自愈能力)
当容器失败时,会对容器进行重启,当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度,当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
 -  
水平扩展
通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大 或规模剪裁
 -  
服务发现
用户不需使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和 负载均衡
 -  
滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
 -  
版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
 -  
密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
 -  
存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要 存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
 -  
批处理
提供一次性任务,定时任务;满足批量数据处理和分析的场景
 
三、k8s 集群架构节点角色功能
Master Node
k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求; Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成
Worker Node
集群工作节点,运行用户业务应用容器; Worker Node 包含 kubelet、kube proxy 和 ContainerRuntime;

四、k8s集群搭建
k8s集群搭建在我上篇博客,有详细的介绍:
五、K8s的资源管理
在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。
kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。
kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在Pod中,而kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。
Pod可以提供服务之后,就要考虑如何访问Pod中服务,kubernetes提供了Service资源实现这个功能。
当然,如果Pod中程序的数据需要持久化,kubernetes还提供了各种存储系统。
 
六、kubectl 常用命令
kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl命令的语法如下:
kubectl [command] [type] [name] [flags]
-  
查看版本
kubectl --version- 1
 
 -  
查看所有的pods
kubectl get pod- 1
 
 -  
查看所有的nodes
kubectl get nodes- 1
 
 -  
查看所有的pods(详细)
kubectl get pods -o wide- 1
 
 -  
查看所有的namespace
kubectl get pod --all-namespaces- 1
 
 -  
以yaml文件形式显示一个pod详细信息
kubectl get pod pod-redis -o yaml- 1
 
 -  
以json格式显示一个pod的详细信息
kubectl get pod pod-redis -o json- 1
 
 -  
显示一个pod的详细信息
kubectl describe pod pod-redis- 1
 
 -  
创建容器
kubectl create deployment nginx --image=nginx- 1
 
 -  
删除根据resource名或label删除resource。
kubectl delete -f rc-nginx.yaml kubectl delete pod -lapp=nginx kubectl delete deployment tomcat- 1
 - 2
 - 3
 
 
七、用法示例
1. 创建一个namespace
创建一个nginxpod.yaml,内容如下:
apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
  - name: nginx-containers
    image: nginx:latest
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 
kubectl create -f nginxpod.yaml
  
 - 1
 
查看资源
kubectl get -f nginxpod.yaml
  
 - 1
 
删除资源
kubectl delete -f nginxpod.yaml
  
 - 1
 
2. kubectl apply -f yaml声明式对象配置
声明式对象配置跟命令式对象配置很相似,但是它只有一个命令apply。
kubectl apply -f nginxpod.yaml
  
 - 1
 
其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)
 使用apply操作资源:
 如果资源不存在,就创建,相当于 kubectl create
 如果资源已存在,就更新,相当于 kubectl patch
八、使用K8s快速搭建 tomcat
tomcat_dep.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mytomcat
spec:
  replicas: 5
  selector:
    matchLabels:
      app: mytomcat
  minReadySeconds: 1
  progressDeadlineSeconds: 60
  revisionHistoryLimit: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      name: mytomcat
      labels:
        app: mytomcat
    spec:
      containers:
      - name: mytomcat
        image: tomcat:8
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
      volumes:
      - name: tz-config
        hostPath:
          path: /usr/share/data
  
 
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 
kubectl create -f tomcat_dep.yaml
  
 - 1
 
tomcat_svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: mytomcat
spec:
  type: NodePort
  ports:
   - port: 8080
     nodePort: 30012
  selector:
    app: mytomcat
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 
kubectl create -f tomcat_svc.yaml
  
 - 1
 
在node上查看
 
 修改tomcat_dep.yaml 中replicas数量后,运行kubectl apply -f tomcat_dep.yaml可以扩容或收缩副本数量
文章来源: blog.csdn.net,作者:小毕超,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_43692950/article/details/118882049
- 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)