今天将要介绍 kubectl 一些常用的指令
这些指令会在後面实作的部份使用到
minikube 已经安装, 并且已经启动一个 k8s 丛集
kubectl 已经安装
kubectl get nodes
如果已经有安装 minikube 并且跑起来一个 k8s 丛集
会有以下这个结果
kubectl get pod
目前因为还没建制任何 pod 所以会是以下状态
kubectl get services
目前还没建制除了原本 minikube 预设丛集之外的 Services
所以会是以下画面
kubectl create -h
注意的是 在 k8s 内并不直接建制 Pod
而是透过 建立 Pod 的建制蓝图 Deployment 来做 Pod 设定
然後 k8s 丛集会自动根据 Deployment 建制 Pod
建制 Deployment 指令如下:
kubectl create deployment Name --image=image [--dry-run] [options]
举例来说: 使用 nginx docker 映象档来建制 Name 为 nginx-deployment 的 Deployment 指令如下
kubectl create deployment nginx-deployment --image=nginx
注意的是, 这边没指令 image 版本, 会直接指定最新的版本
执行之後, 会有以下画面
kubectl get deployment
在建立 Deployment 後
可以使用上面指令查询已建立的 Deployment
因为已经建制了一个叫作 nginx-deployment 的 Deployment
因此会得到以下的画面
kubectl get replicaset
在建立了 Deployment 之後
k8s 丛集会根据 Deployment 建立 Pod 以及 Pod 的 ReplicaSet
所以如果使用上面查询指令, 会得到以下画面
如果再用查询 Pod 的指令, 会得到以下画面
会发现 ReplicaSet 的 Name 栏位刚好是 Pod 的 Name 栏位 prefix
这个 Pod 属於这个 ReplicaSet
Deployment 管理 ReplicaSet
ReplicaSet 管理 Pod 的 replicas
Pod 处理 Containers 执行
kubectl edit deployment [Name]
如果要修改 Pod 执行的方式, 可以透过上面的指令去做修改
举例来说: 修改 nginx-deployment 就可使用以下指令
kubectl edit deployment nginx-deployment
预设会使用 vim 开启一个预设的 Deployment 设定档
如果要更换 kubectl edit 的预设开启编辑器
可以设定 KUBE_EDITOR 这个环境变数
笔者习惯用 nano 所以先执行以下指令
export KUBE_EDITOR=nano
这样在执行 kubectl edit 指令时, 就是以 nano 开启 Deployment档案
笔者这边把原本的 nginx-deployment 的 image 版本更改为 nginx:1.16 储存後
这时可以用查询 Pod 的指令查看
会发现新的 Pod 产生中, 完成後会发现只剩下新的 Pod
然後去查 ReplicaSet
会看到新的 ReplicaSet 产生, 旧的 ReplicaSet 下面就没有 Pod
kubectl logs $pod_name
会显示出 Pod 内, 容器化程序实际运行 log
可以拿来除错时 使用
以下是查询 Pod mongo-deployment-9fb7f9f76-4cq9x 的范例
kubectl describe pod $pod_name
查询 Pod 运行时的事件, 可以查到 Pod 运行状态
举例来说: 如果用下面指令查询名称 mongo-deployment-9fb7f9f76-4cq9x 的 Pod 状态
kubectl describe pod mongo-deployment-9fb7f9f76-4cq9x
从上图可以看到 mongo-deployment-9fb7f9f76-4cq9x 的运行状态
kubectl exec -it $pod_name -- bin/bash
举例来说: 可以使用以下指令登入 mongo-deployment-9fb7f9f76-4cq9x 的 pod 内运行容器 terminal
kubectl exec -it mongo-deployment-9fb7f9f76-4cq9x -- bin/bash
注意的是, - - 但代表使用 root 身分登入
kubectl delete deployment $deployment_name
如果想要删除 Pod 的话
可以透过删除 deployment 的指令来处理
kubectl apply -f $configuration_file_name
随着发布的应用愈加复杂, kubectl 所需带入的参数愈加复杂
因此, 比较好且实际的作法是
把 kubectl 的所有运行选项写到一个设定档案
再透过上面的指令选择一个设定案来执行
举例来说, 假设一个 nginx-deployment.yaml 如下:
然後执行
kubectl apply -f nginx-deployment.yaml
然後可以用 kubectl get pod 查看
因为 replicas 设定为 2
所以应该会有两个 Pod 如下
如果要修改, 举例来说把 replicas 改成 1
就可以直接修改 nginx-deployment.yaml 如下
然後执行
kubectl apply -f nginx-deployment.yaml
然後就可以验证 Pod 只剩下一个如下
很明显透过设定档来执行 kubectl
比互动式的下指令好管理的多
当要布署的环境很复杂时
而明天将会好好解说设定档的细节部份
>>: [Lesson5] BottomNavigationView
前言 今天开始实作的部分,尝试用完全没碰过的CSS Grid要搞出一个万年历,不停的研究不停地开发新...
看完第一个案例不知道大家有什麽收获?欢迎给我一些回馈哦!接着,跟大家分享第二个案例罗! 欢迎有兴趣的...
好久没有看到的小七...好像也没多久,昨天才见过,但因为昨晚的那个恐布经历,我现在好想看到她,好想听...
案例说明及适用场景 如果说一般的传票(日记帐分录),是通用性的功能,那 日记帐 应算是Odoo特有的...
Z检定: 什麽时候需要用到z检定呢? 当已经知道母体变异数时或是知道是一个大样本但不知道变异数为多少...