kubernetes常用命令:缩容扩容回滚
查看版本
kubectl version
查看节点
kubectl get nodes
部署app
说明: 提供deployment名称和app镜像地址(docker镜像地址)
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=
再如:
run test --image=preparedman/mytomcat:tagname --port=
查看app
kubectl proxy
测试:curl http://localhost:8001/version
{
"major": "",
"minor": "",
"gitVersion": "v1.13.3",
"gitCommit": "721bfa751924da8d1680787490c54b9179b1fed0",
"gitTreeState": "clean",
"buildDate": "2019-02-01T20:00:57Z",
"goVersion": "go1.11.5",
"compiler": "gc",
"platform": "linux/amd64"
}
获取pod
名字
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
测试:echo Name of the Pod: $POD_NAME
使用kubectl进行故障排除
主要使用如下命令
kubectl get - list resources 列出资源
kubectl describe - show detailed information about a resource 显示资源详情
kubectl logs - print the logs from a container in a pod 打印`pod` 中container的日志
kubectl exec - execute a command on a container in a pod 在`pod`中的container上执行命令
获取应用配置
查看应用是否在运行
kubectl get pods
查看pod
中有哪些container
kubectl describe pods
结果如下:
Name: kubernetes-bootcamp-6bf84cb898-jk4jc
Namespace: default
Priority:
PriorityClassName: <none>
Node: minikube/172.17.0.72
Start Time: Wed, Apr :: +
Labels: pod-template-hash=6bf84cb898
run=kubernetes-bootcamp
Annotations: <none>
Status: Running
IP: 172.18.0.4
Controlled By: ReplicaSet/kubernetes-bootcamp-6bf84cb898
Containers:
kubernetes-bootcamp:
Container ID: docker://55491b363d26b62e432cd4841ed4f65cc5b98e645d172c6ed88feaebcb4ec06c
Image: gcr.io/google-samples/kubernetes-bootcamp:v1
Image ID: docker-pullable://jocatalin/kubernetes-bootcamp@sha256:0d6b8ee63bb57c5f5b6156f446b3bc3b3c143d233037f3a2f00e279c8fcc64af
Port: /TCP
Host Port: /TCP
State: Running
Started: Wed, Apr :: +
Ready: True
Restart Count:
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-l7v8b (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-l7v8b:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-l7v8b
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m6s default-scheduler Successfully assigned default/kubernetes-bootcamp-6bf84cb898-jk4jc to minikube
Normal Pulled 3m4s kubelet, minikube Container image "gcr.io/google-samples/kubernetes-bootcamp:v1" already present on machine
Normal Created 3m4s kubelet, minikube Created container
Normal Started 3m4s kubelet, minikube Started container
打印container
日志
kubectl logs $POD_NAME
在container
中直接执行命令
比如:获取pod
名字是kubernetes-bootcamp-6bf84cb898-jk4jc的日期,默认使用第一个container container by default
kubectl exec kubernetes-bootcamp-6bf84cb898-jk4jc date
再入:进入container
的命令行环境
kubectl exec kubernetes-bootcamp-6bf84cb898-jk4jc bash
退出使用
exit
暴露你的应用service
列出当前集群中的service
kubectl get services
创建一个新的service
并暴露给外部流量
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port
查看service
详情
kubectl describe services/kubernetes-bootcamp
结果:
Name: kubernetes-bootcamp
Namespace: default
Labels: run=kubernetes-bootcamp
Annotations: <none>
Selector: run=kubernetes-bootcamp
Type: NodePort
IP: 10.105.231.53
Port: <unset> /TCP
TargetPort: /TCP
NodePort: <unset> /TCP
Endpoints: 172.18.0.4:
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
创建一个环境变量NODE_PORT
,它的值等于service
暴露的端口
export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT
测试:
curl $(minikube ip):$NODE_PORT
使用labels
查看label
kubectl describe deployment
你能看到这样一行:
Labels: run=kubernetes-bootcamp
通过label
查询pod
kubectl get pods -l run=kubernetes-bootcamp
通过label
查询service
kubectl get services -l run=kubernetes-bootcamp
获取pod名字,并保存到环境变量POD_NAME
中
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}') echo name of the pod: $POD_NAME
添加新的lebel
使用label命令
kubectl label pod $POD_NAME app=v1
查看:
kubectl describe pods $POD_NAME
删除service
通过label
删除service
kubectl delete service -l run=kubernetes-bootcamp
确认删除:
kubectl get services
确认没有暴露给集群外部:
curl $(minikube ip):$NODE_PORT
确认集群内部还可以访问:
kubectl exec -ti $POD_NAME curl localhost:
扩容
设置deployments
的replica
数量为4
kubectl scale deployments/kubernetes-bootcamp --replicas=
查看结果:
可以看到修改replica
设置生效
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp / 3m17s
pod
数量已经改变,查看详情
kubectl get pods -o wide
结果:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubernetes-bootcamp-6bf84cb898-7tbrg / Running 2m50s 172.18.0.5 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-fx68f / Running 3m52s 172.18.0.4 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-prgsc / Running 2m50s 172.18.0.6 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-qv4gc / Running 2m50s 172.18.0.7 minikube <none> <none>
查看4个pod
kubectl describe deployments/kubernetes-bootcamp
结果:
Replicas: desired | updated | total | available | unavailable
查看service
是否是负载均衡的
查看具体IP
kubectl describe services/kubernetes-bootcamp
结果:
Endpoints: 172.18.0.2:,172.18.0.4:,172.18.0.6: + more...
创建环境变量NODE_PORT
\
export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT
调用请求
可以看到,每次请求的都是不同的pod
curl $(minikube ip):$NODE_PORT
结果:
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-2l975 | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-zbmj4 | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-qg5xh | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-zbmj4 | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-bn98t | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-zbmj4 | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-zbmj4 | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-zbmj4 | v=
缩容
kubectl scale deployments/kubernetes-bootcamp --replicas=
## 更新到版本2
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
验证更新
查看暴露出来的ip和端口
kubectl describe services/kubernetes-bootcamp
结果:
Name: kubernetes-bootcamp
Namespace: default
Labels: run=kubernetes-bootcamp
Annotations: <none>
Selector: run=kubernetes-bootcamp
Type: NodePort
IP: 10.98.28.235
Port: <unset> /TCP
TargetPort: /TCP
NodePort: <unset> /TCP
Endpoints: 172.18.0.10:,172.18.0.11:,172.18.0.8: + more...
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
创建环境变量
export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT
访问:
curl $(minikube ip):$NODE_PORT
结果:
访问版本2,且每次访问不同的地址
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-tcxpf | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-tcxpf | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-86c8g | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-fx9tf | v=
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-tcxpf | v=
确认更新
kubectl rollout status deployments/kubernetes-bootcamp
回滚
更新到版本10
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
查看发现报错,因为版本库中没有版本10
kubectl get deployments
kubectl get pods
kubectl describe pods
报错
Warning Failed 38s (x3 over 77s) kubelet, minikube Failed to pull image "gcr.io/google-samples/kubernetes-bootcamp:v10": rpc error: code = Unknown desc = Error response from daemon: manifest for gcr.io/google-samples/kubernetes-bootcamp:v10 not found
执行会滚
kubectl rollout undo deployments/kubernetes-bootcamp
kubernetes常用命令:缩容扩容回滚的更多相关文章
- Docker Kubernetes 常用命令
Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...
- kubernetes常用命令
#.查询信息 kubectl get [需要查询的服务] node 节点componentstatuses 简写 cs 组件状态namespaces 简写 ns 名命空间pod pod信息 添加 ...
- Kubernetes 常用命令
文章摘自:https://blog.csdn.net/felix_yujing/article/details/51622132 1 查看类命令--- # 查看集群信息 kubectl cluster ...
- 最新版Kubernetes常用命令大全
#查看所有namespace的pods运行情况 kubectl get pods --all-namespaces #查看具体pods,记得后边跟namespace名字哦 kubectl get po ...
- 【kubevirt】VirtualMachineInstanceReplicaSet(vmis)-扩缩容-弹性伸缩
@ 目录 概述/理解 使用场景 创建vmis 扩缩容 弹性伸缩 方法1 方法2 概述/理解 VirtualMachineInstanceReplicaSet(vmis)确保指定数量的 VirtualM ...
- kubernetes 知识点及常用命令
一.附上一个Deployment文件 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selec ...
- Docker Swarm 常用命令
# 管理配置文件 docker config # 查看已创建配置文件 - docker config ls # 将已有配置文件添加到docker配置文件中 - dock ...
- Docker Swarm(二)常用命令
# 管理配置文件 docker config # 查看已创建配置文件 - docker config ls # 将已有配置文件添加到docker配置文件中 - dock ...
- 不能回滚的Redis事务还能用吗
前言 事务是关系型数据库的特征之一,那么作为 Nosql 的代表 Redis 中有事务吗?如果有,那么 Redis 当中的事务又是否具备关系型数据库的 ACID 四大特性呢? Redis 有事务吗 这 ...
随机推荐
- python tkinter txt窗口,开线程两个卡死
一个线程可以,两个卡死 #!/usr/bin/python # coding: utf-8 from Tkinter import * import threading class MyThread2 ...
- Linux安装pycharm并添加图标到桌面
安装: 1.到pycharm官网下载Linux版本的pycharm包. 2.打开中端 cd到下载的文件夹,默认为 ~/Downloads/ 文件夹下 3.执行命令 tar -xvzf pycharm- ...
- 51nod1814 Clarke and string
[传送门] 直接想最暴力的做法就是正解了.每次询问都把两个串的回文树建出来,然后再两棵树上同时dfs,经过相同的节点答案就加一.遇到一个不存在的就退出.再把询问记忆化一下就OK了.复杂度是 $O(n ...
- python实现用户登录、注册实例
python面向函数式编程,模拟用户登录验证.注册的代码实现. 主要有以下两个文件: 1.user.txt文档文件,相当于数据库的用户信息表,主要是记录用户名和密码. 注意:1)此文档需要与.py文件 ...
- springcloud(三)
雪崩效应 一.为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC).为了保证其高可用,单个服务又必须集群部署.由于网络原因或者自身的原因,服 ...
- podium podlets 说明
podlets 提供了一个页面片段服务,podlets 包含了一些元数据信息,通过json 暴露, 主要包含以下内容 一个 http endpoint 提供主要内容 一个 http endpoint ...
- Bzoj 4517: [Sdoi2016]排列计数(排列组合)
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MB Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ...
- 为什么学习JavaScript设计模式,因为它是核心
那么什么是设计模式呢?当我们在玩游戏的时候,我们会去追求如何最快地通过,去追求获得已什么高效率的操作获得最好的奖品:下班回家,我们打开手机app查询最便捷的路线去坐车:叫外卖时候,也会找附近最近又实惠 ...
- mac 以多tab的方式打开
让mac 始终以多tab的方式打开程序 背景: 开发中始终需要多个 项目 的方式进行处理, 但一直使用 `command + `` 的方式总是比较烦人, 有没有一个比较好的视图方式呢; 即我想在一个窗 ...
- 倍增&矩阵乘法 专题复习
倍增&矩阵乘法 专题复习 PreWords 这两个基础算法我就不多说啦,但是还是要介绍一下" 广义矩阵 "乘法 其实就是把矩阵换成取\(max\),然后都一样... 据神仙 ...