天天看点

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

使用 Kubectl 管理 Kubernetes 容器平台

  • 一、Kubectl 概述
  • 二、Kubectl 创建和删除一个 pod 相关操作
    • 1.在集群上运行一个镜像
    • 2.Kubectl run 语法
    • 3.pods 常见的状态
    • 3.使用 Kubectl delete 删除创建的对象
      • 1)删除 pod
      • 2)删除 deployment
  • 三、yaml 语法规则
    • 1.yaml 语法的基本语法规则
    • 2.yaml 支持的三种数据结构
  • 四、Kubectl create 加载 yaml 文件生成 deployment
    • 1.生成 mysql-deployment.yaml 文件
    • 2.使用 mysql-deployment.yaml 创建和删除 mysql 资源
    • 3.使用 get 参数查看 pod 详细信息
    • 4.使用 describe 查看 k8s 中详细信息
  • 五、Kubectl 其他常用命令和参数说明
    • 1.Kubectl logs
    • 2.Kubectl exec
    • 3.Kubectl attach
  • 六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
    • 1.生成 nginx-deployment.yaml 资源和 nginx-svc.yaml 服务的配置文件
    • 2.创建 deployment 和 serveice

准备工作:

  • 如果未部署 Kubernetes 容器集群管理系统需看:部署 Kubernetes 容器集群管理系统 来进行部署。
  • 该实验所需软件包从这个链接下载:https://pan.baidu.com/s/1cNdRaG5bIHr2YNo47-N1Fw
  • 提取码:ozfk

一、Kubectl 概述

Kubectl 是一个用于操作 kubernetes 集群的命令行接口,通过利用 Kubectl 的各种命令可以实现各种功能。

二、Kubectl 创建和删除一个 pod 相关操作

命令 说明
run 在集群上运行一个 pod
create 使用文件或标准输入的方式创建一个 pod
delete 使用文件或者标准输入以及资源名称或者标签选择器来删除某个 pod

1.在集群上运行一个镜像

将 docker.io-nginx.tar 和 pod-infrastructure.tar 上传到 node1 和 node2 上并导入镜像

node1,node2操作一致:

[[email protected] ~]# ls
anaconda-ks.cfg      k8s-package         pod-infrastructure.tar
docker.io-nginx.tar  k8s-package.tar.gz
[[email protected] ~]# docker load -i docker.io-nginx.tar 
[[email protected] ~]# docker load -i pod-infrastructure.tar
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

2.Kubectl run 语法

Kubectl run 和 Docker run 一样,Kubectl run 能将一个 pod 运行起来。

  • 格式:

    kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas]

在 master上 启动 pod:

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

查看 Deployment:

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

查看生成的 pod,kubernetes 将容器运行在 pod 中以方便实施卷和网络共享等管理

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

3.pods 常见的状态

  • ContainerCreating:容器正在创建。
  • ImagePullBackOff:从后端把镜像拉取到本地时中断。
  • terminating:终止;当删除 pod 时的状态。
  • Running:正常运行的状态。

3.使用 Kubectl delete 删除创建的对象

1)删除 pod

[[email protected] ~]# kubectl delete pod nginx-1-2637872784-5kg5l
[[email protected] ~]# kubectl get pod
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

过 2 分钟左右,再次确认,发现已经运行

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

2)删除 deployment

直接删除 pod 触发了 replicas 的确保机制,所以需要删除 deployment

[[email protected] ~]# kubectl delete deployment nginx-1
[[email protected] ~]# kubectl get pod
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

三、yaml 语法规则

YAML 语言的设计目标,就是方便人类读写。它实质上是一种数据串行化格式。

1.yaml 语法的基本语法规则

  • 大小写敏感。
  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
  • " # " 表示注释,从这个字符一直到行尾,都会被解析器忽略。
  • 在 yaml 里面,连续的项目(如:数组元素、集合元素)通过减号 " - " 来表示,map 结构里面的键值对(key/value)用冒号 " : " 来分割。

2.yaml 支持的三种数据结构

  • 对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)。
  • 数组:一组按次序排列的值,又称为序列(sequence)/列表(list)。
  • 纯量(scalars):单个的、不可再分的值。

四、Kubectl create 加载 yaml 文件生成 deployment

使用 Kubectl run 在设置很复杂的需求时,需要非常长的一条语句,也很容易出错,也没法保存,所以更多场景下会使用 yaml 或者 json 文件。

1.生成 mysql-deployment.yaml 文件

上传 docker.io-mysql-mysql-server.tar 到 node1 和 node2 上

node1,node2操作一致

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
[[email protected] ~]# vim mysql-deployment.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: mysql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: mysql
    spec:
      containers:
      - name: mysql
        image: docker.io/mysql/mysql-server
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
          protocol: TCP
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: "123123"
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

2.使用 mysql-deployment.yaml 创建和删除 mysql 资源

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
  • 注意:当一个目录下,有多个 yaml 文件的时候,使用

    kubectl create -f 目录

    的方式一下全部创建。

3.使用 get 参数查看 pod 详细信息

[[email protected] ~]# kubectl get pod
[[email protected] ~]# kubectl get deployment
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

加上 -o wide 参数可以查看更详细的信息,比如想看到此 pod 在哪个 node 上运行,此 pod 的集群 IP 是多少也会显示。

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
  • 注意:10.255.5.2 这个IP地址是 flannel 中定义的网段中的一个IP地址。pod 通过这个 IP 和 master 进行通信

在 node2 上查看运行 mysql docker 实例:

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

4.使用 describe 查看 k8s 中详细信息

  • 查看 pod 的详细描述信息:kubectl describe pod pod名字
  • 查看 node 的详细描述信息:kubectl describe node node名字
  • 查看 deployment 的详细描述信息:kubectl describe deployment deployment名字

五、Kubectl 其他常用命令和参数说明

命令 说明
logs 取得 pod 中容器的 log 信息
exec 在 pod 中执行一条命令
cp 从容器拷出或向容器拷入文件
attach attach 到一个运行中的容器上,实时查看容器消息

1.Kubectl logs

类似于 Docker logs,使用 Kubectl logs 能够取出 pod 中镜像的 log,也是故障排除时候的重要信息。

[[email protected] ~]# kubectl get pod
[[email protected] ~]# kubectl logs mysql-2388517676-588kb
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

2.Kubectl exec

exec 命令用于到 pod 中执行一条命令。

[[email protected] ~]# kubectl get pod
[[email protected] ~]# kubectl exec -it mysql-2388517676-588kb bash
bash-4.2# exit
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

3.Kubectl attach

attach 用于取得 pod 中容器的实时信息,可以持续不断实时的取出消息。

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
  • 注意: 到现在,所创建 nginx 和 mysql 都只是 deployment 设备硬件资源,并没有对应 service 服务,所以现在还不能能直接在外网进行访问 nginx 和 mysql 服务。

六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

1.生成 nginx-deployment.yaml 资源和 nginx-svc.yaml 服务的配置文件

使用 Deployment 方式启动 nginx 的 pod 和 service

[[email protected] ~]# vim nginx-deployment.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image:  docker.io/nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
[[email protected] ~]# vim nginx-svc.yaml			#创建 service
kind: Service
apiVersion: v1
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
  - protocol: TCP
    nodePort: 31001
    targetPort: 80
    port: 80
  selector:
    name: nginx
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

2.创建 deployment 和 serveice

[[email protected] ~]# kubectl create -f nginx-deployment.yaml 
[[email protected] ~]# kubectl create -f nginx-svc.yaml
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

查看:

[[email protected] ~]# kubectl get service
或者
[[email protected] ~]# kubectl get svc
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

查看详细信息:

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务
  • 注意:发现 nginx 容器中的 80 端口已经映射到 node(Minion 物理机)节点的 31001 端口上了。可以查看到 nginx 服务已经运行在 node1 上。

使用浏览器访问测试:

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

尽管 nginx 的 pod 是在 node1 运行的,但我们去访问任意 node,都可以正常访问 nginx 的。已经做了负载均衡。所以在 node2 上也可以成功访问 web 服务。

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

修改一下默认主页:

[[email protected] ~]# kubectl get pod
[[email protected] ~]# kubectl exec -it nginx-1011335894-shsfx bash
root@nginx-1011335894-shsfx:/# echo Nginx > /usr/share/nginx/html/index.html     
root@nginx-1011335894-shsfx:/# exit
           
使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

使用浏览器访问测试:

使用 Kubectl 管理 Kubernetes 容器平台一、Kubectl 概述二、Kubectl 创建和删除一个 pod 相关操作三、yaml 语法规则四、Kubectl create 加载 yaml 文件生成 deployment五、Kubectl 其他常用命令和参数说明六、使用 Kubectl 管理集群中 deployment 资源和 service 服务

继续阅读