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      <none>    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        <none>    node2

[root@master ~]# kubectl get  service 

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

kubernetes  10.254.0.1  <none>        443/TCP  22h

详细信息

kubectl describe pod mysql


解决错误

安装  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



12.5.1   类似于docker  logs   



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335