Docker K8s 03 使用 kubectl 管理集群

下载安装 kubectl 工具

使用浏览器访问 http://storage.googleapis.com/kubernetes-release/release/stable.txt 查看当前最新版本.

本文当前版本为 v1.16.3.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env bash

VERSION=`curl -s "http://storage.googleapis.com/kubernetes-release/release/stable.txt"`
echo "latest version: ${VERSION}"

if [ "$(uname)"=="Darwin" ]; then
# macos
SYS=darwin
EXT=
elif [ "$(expr substr $(uname -s) 1 5)"=="Linux" ]; then
# linux
SYS=linux
EXT=
elif [ "$(expr substr $(uname -s) 1 10)"=="MINGW32_NT" ]; then
# windows
SYS=windows
EXT=.exe
fi

if [ ! -f "./kubectl" ]; then
curl -LO "http://storage.googleapis.com/kubernetes-release/release/${VERSION}/bin/${SYS}/amd64/kubectl${EXT}"
fi

chmod +x kubectl

./kubectl version

简单使用 kubectl 命令

语法

命令行格式为 kubectl [command] [TYPE] [...NAME|-f FILE] [flags], 其中

  • command: 为对资源的操作, 例如 create, get, describe, delete 等.
  • TYPE: 指定资源类型, 大小写不敏感, 可以是单数, 复数, 简写. 比如 pod, pods, po 都是相同的含义.
  • NAME: 资源名称, 大小写敏感, 如果省略则操作所有资源. 也可以指定多个 NAME: TYPE N1 N2.. 或者 TYPE1/N1 TYPE2/N2.. 或者 -f f1 -f f2..
  • flags: 可选, 使用 -s--server 可以指定 K8s 服务器 API 地址. flags 会覆盖 k8s 默认的参数.

其中, 可用的 command 列表, 资源类型列表, 可以参考官方文档: Overview of kubectl.

Flags 标记

  • -s 在本地连接服务器的 api 使用
  • -o 格式化输出, 可以是 json, yaml wide 等

创建一个服务, 进行简单操作

创建一个 nginx 服务部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-controller
spec:
replicas: 2
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

创建并启动 nginx 服务

1
2
3
4
5
6
7
8
9
# 使用 create 创建服务
kubectl create -f nginx.yml
# 使用 run 创建服务, 与 docker run 类似, 所有参数均可以由命令行指定
kubectl run --image=nginx --port=8081 nginx

# 查看节点信息, 服务列表, pod 服务信息
kubectl get nodes
kubectl get services
kubectl get pods -o wide

查看 pod 详细状态

1
kubectl get pods -o wide | grep -v "NAME" | awk '{print $1}' | xargs -I {} kubectl describe pods/{}

在 pod 容器中执行命令 - 类似 docker exec

1
2
3
4
# 登录
kubectl exec -it NAME /bin/sh
# 执行命令
kubectl exec -it NAME ls

删除 pod 服务

1
kubectl delete pods/NAME
Donate - Support to make this site better.
捐助 - 支持我让我做得更好.