环境

系统 CentOS-7-x86_64-DVD-1810
master 192.168.10.11
node1 192.168.10.12
node2 192.168.10.13

kubectl概述

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

  1. [root@etcd ~]# kubectl version
  2. 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", Platform:"linux/amd64"}
  3. Server 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", Platform:"linux/amd64"}

kubectl创建和删除一个pod相关操作

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

在集群上运行一个镜像
将docker.io-nginx.tar 和 pod-infrastructure.tar上传到 node1 和 node2 上并导入镜像。

  1. [root@node2 ~]# docker load -i docker.io-nginx.tar ] 512 B/3.584 kB
  2. [root@node2 ~]# docker load -i pod-infrastructure.tar

kubectl run 语法

创建一个 deployment 或者 job 来管理容器
语法:
kubectl run NAME —image=image [—env=”key=value”] [—port=port] [—replicas=replicas]
开始启动pod:

  1. [root@etcd ~]# kubectl run nginx --image=docker.io/nginx --replicas=1 --port=9000 #使用 docker.io/nginx 镜像 ,--port=暴露容器端口 9000 ,设置副本数 1
  2. deployment "nginx" created

在node1上查看镜像
image.png
kubectl run之后,kubernetes创建了一个deployment,查看deployment
image.png
查看生成的pod
kubernetes将容器运行在pod中以方便实施卷和网络共享管理
image.png
pod常见的状态:
1、ContainerCreating #容器创建中
2、ImagePullBackOff #从后端把镜像拉取到本地时断开了
注:如果这里pod没有正常运行,都是因为docker hub没有连接上,导致镜像没有下载成功,这时,可以在node上把相关镜像手工上传或者把docker源换成阿里云的
3、terminating #终止,删除pod时的状态

使用kubectl delete 删除创建的对象
1、删除pod
image.png

可以看到刚刚生成的 nginx pod 正在结束(Terminating),随之一个新的 nginx pod 正在创建,这
是正是 replicas 为 1 的作用,平台会一直保证有一个副本在运行。这就是 deployment 的作用。
2、删除 deployment
直接删除 pod 触发了 replicas 的确保机制,所以我需要直接删除 deployment
image.png