现在,让我们回到k8s的使用上来。
主要内容
命名空间
1
2
3
4
5
|
$ kubectl create namespace nginx-test # 创建 命名空间
$ kubectl get ns # 获取所有命名空间
$ kubectl config set-context --current --namespace=nginx-test # 切换命名空间
$ kubectl delete ns nginx-test # 删除
|
应用的更新
1
|
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1
|
- deployment/nginx-deployment
deployment/
表示是一个Deployment 资源
nginx-deployment
是 Deployment资源的名字
- nginx=nginx:1.16.1
执行成功之后, k8s会自动滚动更新pod。
滚动更新的大致流程如下:
- 先终止N个旧版本的pod
- 然后启动N个新版本的pod
- 等N个新版本的Pod启动完毕之后,继续第一步,直到旧的pod全部被替换完毕。
应用的版本回滚
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$ # 查看可以回退的历史版本, 以及标注更新信息
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.17.1
$ kubectl rollout history deploy/nginx-deployment
deployment.apps/nginx-deployment
REVISION CHANGE-CAUSE
1 <none>
4 <none>
5 <none>
6 <none>
$ kubectl annotate deployments.apps/nginx-deployment kubernetes.io/change-cause="version to 1.17.1" --overwrite=true
$ kubectl rollout history deploy/nginx-deployment
deployment.apps/nginx-deployment
REVISION CHANGE-CAUSE
1 <none>
4 <none>
5 <none>
6 version to 1.17.1
|
使用 --record=true
可以自动附加使用的命令为 CHANGE-CAUSE, 只是目前这个参数被标记为废弃了。
1
2
3
4
5
6
7
8
9
10
11
12
|
$ kubectl rollout undo deployment/nginx-deployment
deployment.apps/nginx-deployment rolled back
$ kubectl annotate deployments.apps/nginx-deployment kubernetes.io/change-cause="rollback to 1.16.1" --overwrite=true
$ kubectl rollout history deploy/nginx-deployment
deployment.apps/nginx-deployment
REVISION CHANGE-CAUSE
1 <none>
4 <none>
6 version to 1.17.1
7 rollback to 1.16.1
$ kubectl rollout undo deployment/nginx-deployment --to-revision=4
deployment.apps/nginx-deployment rolled back
|
简单来说
- rollout history 查看历史
- rollout undo 回退到上一个版本
- rollout undo –to-revision=4 回退到指定的 REVISION
下面几个应该都是同义词, 喜欢哪个用哪个即可。
- deploy
- deployment
- deployments.apps
应用的扩缩
1
|
$ kubectl scale deployment/nginx-deployment --replicas=10
|
GUI 程序
笔者试用了一下 Kuboard, 发现这个确实很方便, 不需要记各种命令,鼠标点点就可以回滚,更新镜像,修改pod数量。 还可以直接看到变更历史等。
官方的web-ui方案: https://github.com/kubernetes/dashboard