我对Kubernetes的学习与理解

1. Pod - 应用程序

我觉得对于用户来说,一个Pod就是一个应用程序。每个Pod都用一个yaml配置文件来描述。

官方的解释是Pod是一组容器以及与容器相关的资源的集合。

A Pod is a group of one or more application containers (such as Docker or rkt) and includes shared storage (volumes), IP address and information about how to run them.

1.1 运行状态

Pod既然是应用程序,那必然会有运行状态,比如running状态代表正在运行,CrashLoopBackOff代表程序运行出错,系统正在不断地尝试重启。

ref: 部署的pod处于CrashLoopBackOff状态 - CSDN博客

该博客介绍了pod出错时可能用到的命令,如查看某程序输出的日志、详细信息、事件等等。

1.2 Pod的yaml文件

yaml文件是pod应用程序的配置文件。创建Pod需要使用这个yaml文件:

kubectl apply -f kubernetes-dashboard.yaml    # 创建Pod

ref: YAML文件简介 - stardsd - 博客园

yaml文件内容举例:

apiVersion: v1                          # api版本
kind: Pod                               # 组件类型
metadata:
  name: nginx-mysql-pod
  labels:                               # 标签
    app: nginx-mysql
spec:
  containers:
  - name: nginx                         # 容器1 名称
    image: nginx                        # 容器1 image地址
  - name: mysql                         # 容器2 名称
    image: mysql                        # 容器2 镜像
    env:                                # 环境变量
    - name: MYSQL_ROOT_PASSWORD
      value: mysql

2. Service 服务(一组Pod)

Kubernetes的 Service 是一组 Pod 的逻辑抽象,这组 Pod 通过 Label 来定义。Service 的定义 yaml 如下。

kind: Service
apiVersion: v1
metadata:
  name: my-service     # 服务名
spec:
  selector:            # 选择器,用于选择一些Pod
    app: MyApp         # 条件是 app为MyApp的所有Pod
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

上面的yaml定义了一组含有app=MyApp标签的Pod共同组成一个名为my-service服务。

Kubernetes支持两种服务发现的模式:环境变量和 DNS。

3. Node - 一台物理机或者虚拟机

用户通过kubectl工具直接操作的是Master节点,其它的节点对于用户来说不可见。

4. Deployment - 部署

部署是选择性地创建一组pod。

早期版本使用Replication Controller对Pod副本数量进行管理,在新的版本中官方推荐使用Deployment来代替RC:

部署应用 kubectl run或者kubectl create

ref. Kubernetes(四) - Pod和Deployment

 

ref: 如何使用 Kubernetes 轻松部署深度学习模型 | 机器之心

该文章介绍了一个深度学习Python脚本逐步封装为Docker镜像的过程。

该脚本使用了基于Flask的Web服务器,将5000端口暴露给外界,对外提供辨识图片的服务。

客户通过POST请求发来图片,此脚本可以返回分类结果。

 

kubectl get 查看信息

kubectl get service

kubectl get rc

kubectl get pods

kubectl get deployment

kubectl run --image=nginx --replicas=3 创建并运行3个Pod. 带有参数 --restart-policy=Always 的资源将被部署为 Deployment,带有参数 --restart-policy=Never 的资源将被部署为 Pod。

kubectl create -f nginx-deployment.yaml 创建一个部署(并执行)

kubectl apply -f kubernetes-dashboard.yaml 创建一个Pod

kubeadm init --config kubeadm.yaml用来启动主节点或Worker节点。

查看日志:

sudo kubectl logs kubernetes-dashboard-6dccb458d5-x7xft --namespace=kube-system
sudo kubectl logs kubernetes-dashboard-6dccb458d5-x7xft -n kube-system # 系统组件必须指定命名空间
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值