4-12 使用kubectl 管理Kubernetes 容器平台

本节所讲内容

12.1  kuberctl  概述  

12.1   kubec 创建和删除一个podl  概述

12.2  yaml  语法规则

 12.4  kubectl  create   加载yaml  文件生成deployment 设备资源

  12.5  kubectl   其他常用命令和参数说明

  12.6  使用kubectl   管理集群中deployment   资源和service  服务

12 。1  kuberctl 概述

kuberctl   是一个用于操作kubernetes  集群的命令接口,通过kuberctl   的各种命令可以实现

各种农功能 

12  。1.1  kubernetes 实验环境:已经安装好kubernetes   集群平台

查看系统版本

[root@master ~]# kubectl version

Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", P

2 查看当前集群构成

一主两从  的kubernetes  集群

  类型                          Hostname                      IP

  Master/etcd              master                            192.168.24.68

  Node                         node1                             192.168.24.62

  Node                         node2                            192.168.24.63

[root@master ~]# kubectl get nodes

NAME      STATUS    AGE

node1    Ready    6h

node2    Ready    5h

12.2   kubernetes   创建和删除一个pod   香瓜操作

 命令                  说明 

 run                   在集群上运行一个镜像

create                使用文件或者标准输入的方式创建一个pod

delete               使用文件或者标准输入以及资源名称或者标签选择器来删除某个资源

提前将  常用的docker 镜像中的镜像 

docker.io-nginx.tar   和 .tar    基础镜像pod-infrastructrue.tar   

上传到node1  和node2   上并导入镜像

1 )两个都要导入

scp   docker.io-nginx.tar   192.168.24.63  :/root/

[root@node1  ~]# docker load -i docker.io-nginx.tar

[root@node2 ~]# docker load -i docker.io-nginx.tar

[root@node2 ~]# docker load -i   pod  基础镜像

[root@node1 ~]# docker load -i   pod  基础镜像

cec7521cdf36: Loading layer [==================================================>] 58.44 MB/58.44 MB

350d50e58b6c: Loading layer [==================================================>] 53.76 MB/53.76 MB

63c39cd4a775: Loading layer [==================================================>] 3.584 kB/3.584 kB

Loaded image: docker.io/nginx:latest

2 ) [root@node1 ~]# route -n

Kernel IP routing table

Destination    Gateway        Genmask        Flags Metric Ref    Use Iface

0.0.0.0        192.168.24.1    0.0.0.0        UG    100    0        0 ens33

10.255.0.0      0.0.0.0        255.255.0.0    U    0      0        0 flannel0

10.255.28.0    0.0.0.0        255.255.255.0  U    0      0        0 docker0

192.168.24.0    0.0.0.0        255.255.255.0  U    100    0        0 ens33

192.168.122.0  0.0.0.0        255.255.255.0  U    0      0        0 virbr0

查看网段 

[root@node2 ~]# cat /run/flannel/subnet.env

FLANNEL_NETWORK=10.255.0.0/16

FLANNEL_SUBNET=10.255.97.1/24

FLANNEL_MTU=1472

FLANNEL_IPMASQ=false

[root@node2 ~]# cat /run/flannel/docker

DOCKER_OPT_BIP="--bip=10.255.97.1/24"

DOCKER_OPT_IPMASQ="--ip-masq=true"

DOCKER_OPT_MTU="--mtu=1472"

DOCKER_NETWORK_OPTIONS=" --bip=10.255.97.1/24 --ip-masq=true --mtu=1472"

kubectl    和docker  run  一样,他能将一个镜像运行起来 

12.2.2   kubectl   run  语法 

创建并运行一个或者多个容器镜像

创建一个deployment 或者job 来管理 

语法 :

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

开始启动pod 

[root@master ~]# kubectl run nginx --image=docker.io-nginx:latest --replicas=1 --port=9000

deployment "nginx" created

注:使用docker.io/nginx   镜像  ,port  =  暴露容器端口9000,设置副本数1  

注: nginx  的docker  镜像,node1  和node2  会自动在docker。io  上下载,也可以改成字节的私有仓库 :

--image  =192.168.24.68:5000/nginx:1.12

在node1  查看镜像

[root@node1 ~]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

docker.io/nginx    latest              9e7424e5dbae        2 years ago        108 MB

 docker  run之后,kubernetes   创建一个deployment  

[root@master ~]# kubectl get deployment

NAME      DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE

nginx    1        1        1            0          8m

生成的pod,kubernetes   将运行在pod  中以方便试试卷和网络共享和管理

[root@master ~]# kubectl get pods 

NAME                    READY    STATUS              RESTARTS  AGE

nginx-4058103961-5xkzm  0/1      ContainerCreating  0          13m

   pods  常见的状态   

1   ContainerCreating 容器创建中

2  ImagePullBackOff     从后端把镜像拉取到本地时断开

注: 如果这里pod  没有正常运行,都是因为docker hub   没有连接上,导致镜像没有下载成功,这时,可以在node  节点上把相关镜像换成阿里云的

3   terminating    终止     删除pod  时的状态

[root@master ~]# kubectl get pods -o wide

NAME                    READY    STATUS              RESTARTS  AGE      IP        NODE

nginx-4058103961-5xkzm  0/1      ContainerCreating  0          34m          node2

4 使用kubectl    delete   删除创建的对象 

[root@master ~]# kubectl delete pod nginx-4058103961-5xkzm

pod "nginx-4058103961-5xkzm" deleted

可以看到刚刚生成的 nginx pod 正在结束(Terminating),随乊一个新的 nginx pod 正在创建,这

是正是 replicas 为 1 的作用,平台会一直保证有一个副本在运行

所以直接删除deployment   

[root@master ~]# kubectl delete deployment nginx

deployment "nginx" deleted

找不到了

[root@master ~]# kubectl get pod    #pod   也被删除了

No resources found.

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

12.3.1   yaml  语法规则 


2.yaml   语法的基本法规则下面

  1,大小敏感

2 ,使用缩进表示层级关系

3  缩进时不允许使用tab  键,只允许使用空格

4  缩进的空格数据不重要,只要相同层级的元素左层对齐即可

5  #  表示注释,从这个字符一直到行尾,斗殴会被解析器忽略

6  在yaml  里面,连续的项目   属组元素,集合元素,  通过减号  “-”  来表示,map  结构里面的键值对  (key/value) 用冒号  “:”  来分割 

3 对象:键值对的集合,又称为映射,mapping    哈希      字典  

数组   一组按次排序的值,又称为列,        列表

纯量  单个的,不可再分的值

4 对象的一组键值对,使用冒号结构表示

例1  :  animal  pets  

animal: pets 

Yaml  :  也允许另一种写法,将所有键值对写成一个行内对象

例2   hash   对象中包括name  和foo

 hash 

       name  :Steve  

       foo  :bar  

或者  hash:{name:Steve,foo:bar}

5  属组

一组连接词开头的,构成一个属组

-Cat

-Dog

-Goldfish 

转为  js  如下

{['cat','Dog','Goldfish']}

数据结构的子成员是一个属组,则可以在该项目下面缩进一个空格

6  复合结构

对象和属组可以结合使用,形成复合结构

例:编写BAT基本的信息bat.yaml   配置文件

bat :

website 

baidu:http://www.baidu.com  

qq:http://www.qq.com   

ali :

  -http:www.taobao.com

  -http://www.tmall.com

ceo :

 yanhongli:  李彦宏

 huatenghua:  马化腾

 yunma: 马云

7 纯量是最基本的,不可再分的值,如,字符串,布尔值看看,整数,浮点数,Null ,时间,日期

12.4   kubectl   create  加载  yaml  文件生成deployment   

使用kubectl  run     在设定很复杂的需求是,需要非常长的一条语句,也很容易出错,也没法保存

所以更多场景会使用yaml  或者json   文件 

生成mysql.yaml   的deployment   文件: 

[root@master ~]# vim mysql-deployment.yaml

写入以下内容

kind: Deployment

apiVersion: extensions/v1beta1

metadata:

  name: mysql   #deployment    的名称,全局唯一

spec:

  replicas: 1  Pod   副本期待数量,1  表示只运行一个pod,里面一个容器

  template:   根据此模板的副本

    metadata:

      labels:  符合目标的pod  拥有此标签,默认和name一样

        name: mysql

    spec:

      containers:  #pod   容器中的定义部分

      - name: mysql

        image: docker.io/mysql/mysql-server   #容器对应的Docker  Image   镜像

        imagePullPolicy: IfNotPresent

        ports:

        - containerPort: 3306  容器暴露的端口号

          protocol: TCP

        env:  容器注入到环境变量

          - name: MYSQL_ROOT_PASSWORD  设置mysql root密码

            value: "hello123"

上传mysql  服务器镜像到node1  和node2 上

导入镜像

[root@node1 ~]# docker load -i docker.io-mysql-mysql-server.tar

[root@node2 ~]# docker load -i docker.io-mysql-mysql-server.tar

查看镜像

[root@node1 ~]# docker images

REPOSITORY                    TAG                IMAGE ID            CREATED            SIZE

docker.io/nginx                latest              9e7424e5dbae        2 years ago        108 MB

docker.io/mysql/mysql-server  latest              a3ee341faefb        2 years ago        246 MB

12.4.2   使用mysql.yaml    创建和删除mysql  资源

[root@master ~]# kubectl create -f mysql-deployment.yaml

deployment "mysql" created


12 。4.3  使用get 参数查看pod 详细信息

[root@master ~]# kubectl get pods

NAME                    READY    STATUS              RESTARTS  AGE

mysql-2261771434-xh5c3  0/1      ContainerCreating  0          1m

[root@master ~]# kubectl    get deployment   

NAME      DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE

mysql    1        1        1            0          3m

[root@master ~]# kubectl  get pod

NAME                    READY    STATUS              RESTARTS  AGE

mysql-2261771434-xh5c3  0/1      ContainerCreating  0          4m

查看详细信息

[root@master ~]# kubectl get pod -o wide

NAME                    READY    STATUS              RESTARTS  AGE      IP        NODE

mysql-2261771434-xh5c3  0/1      ContainerCreating  0          6m            node2

[root@master ~]# kubectl get  service 

NAME        CLUSTER-IP  EXTERNAL-IP  PORT(S)  AGE

kubernetes  10.254.0.1          443/TCP  22h

详细信息

kubectl describe pod mysql


4-12 使用kubectl 管理Kubernetes 容器平台_第1张图片

解决错误

安装  yum install   -y 

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpmrpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm|cpio-iv--to-stdout./etc/rhsm/ca/redhat-uep.pem|tee/etc/rhsm/ca/redhat-uep.pem


4-12 使用kubectl 管理Kubernetes 容器平台_第2张图片


4-12 使用kubectl 管理Kubernetes 容器平台_第3张图片

12.5.1   类似于docker  logs   


4-12 使用kubectl 管理Kubernetes 容器平台_第4张图片


4-12 使用kubectl 管理Kubernetes 容器平台_第5张图片
4-12 使用kubectl 管理Kubernetes 容器平台_第6张图片

你可能感兴趣的:(4-12 使用kubectl 管理Kubernetes 容器平台)