官方指令文档
官方常用指令
准备文件
[root@m01 ~]# vim wordpress.yaml
apiVersion: v1
kind: Pod
metadata:
name: wordpress
spec:
containers:
- name: nginx
image: nginx
- name: php
image: alvinos/php:v2-fpm-mysql
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
[root@m01 ~]# vim test.yaml
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: nginx
image: nginx
从文件或标准输入创建资源。
接受 JSON 和 YAML 格式。
用法:kubectl create -f FILENAME
kubectl create -f wordpress.yaml
kubectl create -f test.yaml
按文件名、标准输入、资源和名称或资源和标签选择器删除资源。
接受 JSON 和 YAML 格式。只能指定一种类型的参数:文件名、资源和名称或资源和标签选择器。
kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])
-f 根据文件删除资源
-k 根据目录删除资源
type 根据类型删除资源
-l 根据标签删除资源
–all 删除所有资源
–force 强制删除
注意:强制删除 Pod 不会等待确认 Pod 的进程已终止,这可以让这些进程继续运行,直到节点检测到删除并完成正常删除。如果您的进程使用共享存储或与远程 API 通信并依赖 pod 的名称来标识自己,则强制删除这些 pod 可能会导致多个进程使用相同的标识在不同的机器上运行,这可能会导致数据损坏或不一致。仅当您确定 pod 已终止,或者您的应用程序可以容忍同一 pod 的多个副本同时运行时,才强制删除 pod。此外,如果您强制删除 pod,调度程序可能会在节点释放这些资源之前将新 pod 放置在这些节点上,并导致这些 pod 立即被逐出。
请注意,delete 命令不执行资源版本检查,因此如果有人在您提交删除时提交了对资源的更新,则他们的更新将与资源的其余部分一起丢失。
使用 pod.json 中指定的类型和名称删除 pod。
kubectl delete -f ./pod.json
从包含 kustomization.yaml 的目录中删除资源 - 例如 dir/kustomization.yaml。
kubectl delete -k dir
根据传递到 stdin 的 JSON 中的类型和名称删除 pod。
cat pod.json | kubectl delete -f -
删除具有相同名称“baz”和“foo”的 pod 和服务
kubectl delete pod,service baz foo
删除标签名称为 myLabel 的 Pod 和服务。
kubectl delete pods,services -l name=myLabel
以最小延迟删除 Pod
kubectl delete pod foo --now
强制删除死节点上的 pod
kubectl delete pod foo --force
删除所有 Pod
kubectl delete pods --all
显示一项或多项资源,打印有关指定资源的最重要信息的表。
用法
kubectl get [选项] [资源名称]
示例:
# 查看所有的资源信息
kubectl get all
# 查看pod列表
kubectl get pod
# 显示pod节点的标签信息
kubectl get pod --show-labels
# 根据指定标签匹配到具体的pod
kubectl get pods -l app=example
# 查看node节点列表
kubectl get node
# 显示node节点的标签信息
kubectl get node --show-labels
# 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
kubectl get pod -o wide
# 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
kubectl get svc
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
go-service NodePort 10.10.10.247 <none> 8089:33702/TCP 29m
java-service NodePort 10.10.10.248 <none> 8082:32823/TCP 5h17m
kubernetes ClusterIP 10.10.10.1 <none> 443/TCP 5d16h
nginx-service NodePort 10.10.10.146 <none> 88:34823/TCP 2d19h
# 查看命名空间
kubectl get ns
# 查看所有命名空间下的pod
kubectl get pod --all-namespaces
# 查看所有pod所属的命名空间并且查看都在哪些节点上运行
kubectl get pod --all-namespaces -o wide
# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
kubectl get rs
[root@master ~]# kubectl get rs
NAME DESIRED CURRENT READY AGE
go-deployment-58c76f7d5c 1 1 1 32m
java-deployment-76889f56c5 1 1 1 5h21m
nginx-deployment-58d6d6ccb8 3 3 3 2d19h
# 查看目前所有的deployment
kubectl get deployment
[root@master ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
go-deployment 1/1 1 1 34m
java-deployment 1/1 1 1 5h23m
nginx-deployment 3/3 3 3 2d19h
# 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
kubectl get deploy -o wide
[root@master bin]# kubectl get deploy -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 3/3 3 3 16m nginx nginx:1.10 app=example
在集群中创建并运行一个或多个容器镜像
#启动一个 nginx pod。
kubectl run nginx --image=nginx
#启动一个hazelcast pod,让容器暴露5701端口。
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
#启动一个 hazelcast pod 并在容器中设置环境变量“DNS_DOMAIN=cluster”和“POD_NAMESPACE=default”。
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
#启动一个 hazelcast pod 并在容器中设置标签“app=hazelcast”和“env=prod”。
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
#试运行。打印相应的 API 对象而不创建它们。
kubectl run nginx --image=nginx --dry-run=client
#启动一个 nginx pod,但使用从 JSON 解析的部分值集重载规范。
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }'
#启动一个busybox pod并保持在前台,如果它退出不要重启它。
kubectl run -i -t busybox --image=busybox --restart=Never
#使用默认命令启动 nginx pod,但对该命令使用自定义参数 (arg1 .. argN)。
kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>
#使用不同的命令和自定义参数启动 nginx pod。
kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>
创建一个service服务,并且暴露端口让外部可以访问
#为复制的 nginx 创建一个服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose rc nginx --port=80 --target-port=8000
#为由“nginx-controller.yaml”中指定的类型和名称标识的复制控制器创建服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000
#为 pod valid-pod 创建一个服务,它在端口 444 上服务,名称为“frontend”
kubectl expose pod valid-pod --port=444 --name=frontend
#基于上述服务创建第二个服务,将容器端口8443暴露为名称为“nginx-https”的443端口
kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https
#为端口 4100 上的复制流应用程序创建一个服务来平衡 UDP 流量并命名为“video-stream”。
kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream
#使用副本集为复制的 nginx 创建服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose rs nginx --port=80 --target-port=8000
#为 nginx 部署创建一个服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose deployment nginx --port=80 --target-port=8000
配置应用的一些特定资源,也可以修改应用已有的资源
# 使用新的环境变量更新部署“注册表”
kubectl set env deployment/registry STORAGE_DIR=/local
#列出在部署“sample-build”上定义的环境变量
kubectl set env deployment/sample-build --list
#列出所有 pod 上定义的环境变量
kubectl set env pods --all --list
#在 YAML 中输出修改后的部署,并且不会更改服务器上的对象
kubectl set env deployment/sample-build STORAGE_DIR=/data -o yaml
#将项目中所有复制控制器中的所有容器更新为 ENV=prod
kubectl set env rc --all ENV=prod
#从秘密导入环境
kubectl set env --from=secret/mysecret deployment/myapp
#从带有前缀的配置映射导入环境
kubectl set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp
#从配置映射导入特定键
kubectl set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp
#从所有部署配置中的容器“c1”中删除环境变量 ENV
kubectl set env deployments --all --containers="c1" ENV-
#从磁盘上的部署定义中删除环境变量 ENV 并 # 更新服务器上的部署配置
kubectl set env -f deploy.json ENV-
#将一些本地 shell 环境设置为服务器上的部署配置
env | grep RAILS_ | kubectl set env -e - deployment/registry
#用于设置资源的一些范围限制
kubectl set resources
#可用资源对象包括(支持大小写):replicationcontroller、deployment、daemonset、job、replicaset。
列出支持资源的字段
# 获取资源及其字段的文档
kubectl explain pods
#获取资源特定字段的文档
kubectl explain pods.spec.containers
从默认编辑器编辑资源。编辑命令允许您直接编辑可以通过命令行工具检索的任何 API 资源。
它将打开由您的 KUBE_EDITOR 或 EDITOR 环境变量定义的编辑器,或者回退到 Linux 的“vi”或 Windows 的“记事本”。您可以编辑多个对象,但一次只应用一个更改。该命令接受文件名以及命令行参数,尽管您指向的文件必须是以前保存的资源版本。
使用用于获取资源的 API 版本完成编辑。要使用特定 API 版本进行编辑,请完全限定资源、版本和组。
#编辑名为“docker-registry”的服务:
kubectl edit svc/docker-registry
#使用替代编辑器
KUBE_EDITOR="nano" kubectl edit svc/docker-registry
#使用 v1 API 格式在 JSON 中编辑作业“myjob”:
kubectl edit job.v1.batch/myjob -o json
#在 YAML 中编辑部署“mydeployment”并将修改后的配置保存在其注释中:
kubectl edit deployment/mydeployment -o yaml --save-config
# 编辑Deployment nginx的一些信息
kubectl edit deployment nginx
# 编辑service类型的nginx的一些信息
kubectl edit service/nginx
用于更新(增加、修改或删除)资源上的 label(标签)
标签键和值必须以字母或数字开头,并且可以包含字母、数字、连字符、点和下划线,每个最多 63 个字符。
或者,
密钥可以以 DNS 子域前缀和单个“/”开头,例如:example.com/my-app
如果 --overwrite 为 true,则可以覆盖现有标签,否则尝试覆盖标签将导致错误。
如果指定了 --resource-version,则更新将使用此资源版本,否则将使用现有资源版本。
使用标签 'unhealthy' 和值 'true' 更新 pod 'foo'。
kubectl label pods foo unhealthy=true
使用标签 'status' 和值 'unhealthy' 更新 pod 'foo',覆盖任何现有值。
kubectl label --overwrite pods foo status=unhealthy
更新命名空间中的所有 pod
kubectl label pods --all status=unhealthy
更新由“pod.json”中的类型和名称标识的 pod
kubectl label -f pod.json status=unhealthy
仅当资源与版本 1 相同时才更新 pod 'foo'。
kubectl label pods foo status=unhealthy --resource-version=1
通过删除名为 'bar' 的标签(如果存在)来更新 pod 'foo'。# 不需要 --overwrite 标志。
kubectl label pods foo bar-
更新一个或多个资源的Annotations信息。也就是注解信息,可以方便的查看做了哪些操作。
Annotations由key/value组成。
Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里。
如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version。
使用注释“描述”和值“我的前端”更新 pod 'foo'。# 如果多次设置同一个注解,则只应用最后一个值
kubectl annotate pods foo description='my frontend'
更新由“pod.json”中的类型和名称标识的 pod
kubectl annotate -f pod.json description='my frontend'
使用注释 'description' 和值 'my frontend running nginx' 更新 pod 'foo',覆盖任何现有值。
kubectl annotate --overwrite pods foo description='my frontend running nginx'
更新命名空间中的所有 pod
kubectl annotate pods --all description='my frontend running nginx'
仅当资源与版本 1 相同时才更新 pod 'foo'。
kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
通过删除名为 'description' 的注释(如果存在)来更新 pod 'foo'。# 不需要 --overwrite 标志。
kubectl annotate pods foo description-
输出指定 shell(bash 或 zsh)的 shell 完成代码。必须评估 shell 代码以提供 kubectl 命令的交互式完成。这可以通过从 .bash_profile 获取它来完成。
使用自制软件在 macOS 上安装 bash 完成 ## 如果运行 macOS 附带的 Bash 3.2
brew install bash-completion
或者,如果运行 Bash 4.1+
brew install bash-completion@2
如果 kubectl 是通过自制软件安装的,它应该立即开始工作。##如果你通过其他方式安装,你可能需要将完成添加到你的完成目录
kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
在 Linux 上安装 bash 完成 ## 如果 Linux 上没有安装 bash-completion,请通过您的发行版的包管理器安装 'bash-completion' 包 ##。## 将 bash 的 kubectl 补全代码加载到当前 shell 中
source <(kubectl completion bash)
将 bash 完成代码写入文件并从 .bash_profile 获取它
kubectl completion bash > ~/.kube/completion.bash.inc printf "
Kubectl 外壳完成
source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
source $HOME/.bash_profile
将 zsh[1] 的 kubectl 补全代码加载到当前 shell 中
source <(kubectl completion zsh)
将 zsh[1] 的 kubectl 完成代码设置为在启动时自动加载
kubectl completion zsh > "${fpath[1]}/_kubectl"
用于对资源进行管理
可用资源包括:deployments,daemonsets。
子命令:
history(查看历史版本)
pause(暂停资源)
resume(恢复暂停资源)
status(查看资源状态)
undo(回滚版本)
# 语法
kubectl rollout SUBCOMMAND
# 回滚到之前的deployment
kubectl rollout undo deployment/abc
# 查看daemonet的状态
kubectl rollout status daemonset/foo
**rolling-update命令:**执行指定ReplicationController的滚动更新。
该命令创建了一个新的RC, 然后一次更新一个pod方式逐步使用新的PodTemplate,最终实现Pod滚动更新,new-controller.json需要与之前RC在相同的namespace下。
# 语法
rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)
# 使用frontend-v2.json中的新RC数据更新frontend-v1的pod
kubectl rolling-update frontend-v1 -f frontend-v2.json
# 使用JSON数据更新frontend-v1的pod
cat frontend-v2.json | kubectl rolling-update frontend-v1 -f -
# 其他的一些滚动更新
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2
kubectl rolling-update frontend --image=image:v2
kubectl rolling-update frontend-v1 frontend-v2 --rollback
扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量
scale也可以指定多个前提条件,如:当前副本数量或 --resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。这个就是弹性伸缩策略
# 语法
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
# 将名为foo中的pod副本数设置为3。
kubectl scale --replicas=3 rs/foo
kubectl scale deploy/nginx --replicas=30
# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3
kubectl scale --replicas=3 -f foo.yaml
# 如果当前副本数为2,则将其扩展至3。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 设置多个RC中Pod副本数量
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
autoscale命令: 这个比scale更加强大,也是弹性伸缩策略 ,它是根据流量的多少来自动进行扩展或者缩容
指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。
# 语法
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
kubectl autoscale deployment foo --min=2 --max=10
# 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%
kubectl autoscale rc foo --max=5 --cpu-percent=80
用于证书资源管理,授权等
[root@master ~]# kubectl certificate --help
Modify certificate resources.
Available Commands:
approve Approve a certificate signing request
deny Deny a certificate signing request
Usage:
kubectl certificate SUBCOMMAND [options]
Use "kubectl --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).
# 例如,当有node节点要向master请求,那么是需要master节点授权的
kubectl certificate approve node-csr-81F5uBehyEyLWco5qavBsxc1GzFcZk3aFM3XW5rT3mw node-csr-Ed0kbFhc_q7qx14H3QpqLIUs0uKo036O2SnFpIheM18
显示集群信息
kubectl cluster-info
[root@master ~]# kubectl cluster-info
Kubernetes master is running at http://localhost:8080
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
用于查看资源的cpu,内存磁盘等资源的使用率
kubectl top pod --all-namespaces
它需要heapster运行才行
cordon命令:用于标记某个节点不可调度
**uncordon命令:**用于标签节点可以调度
drain命令: 用于在维护期间排除节点。
显示特定资源的详细信息
# 语法
kubectl describe TYPE NAME_PREFIX
(首先检查是否有精确匹配TYPE和NAME_PREFIX的资源,如果没有,将会输出所有名称以NAME_PREFIX开头的资源详细信息)
支持的资源包括但不限于(大小写不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。
#查看my-nginx pod的详细状态
kubectl describe po my-nginx
用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名
# 语法
kubectl logs [-f] [-p] POD [-c CONTAINER]
# 返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx
# 返回pod ruby中已经停止的容器web-1的日志快照
$ kubectl logs -p -c ruby web-1
# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1
# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx
# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx
# 参数选项
-c, --container="": 容器名。
-f, --follow[=false]: 指定是否持续输出日志(实时日志)。
--interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
--limit-bytes=0: 输出日志的最大字节数。默认无限制。
-p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
--since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
--since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
--tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
--timestamps[=false]: 在日志中包含时间戳。
进入容器进行交互,在容器中执行命令
# 语法
kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
#命令选项
-c, --container="": 容器名。如果未指定,使用pod中的一个容器。
-p, --pod="": Pod名。
-i, --stdin[=false]: 将控制台输入发送到容器。
-t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
# 进入nginx容器,执行一些命令操作
kubectl exec -it nginx-deployment-58d6d6ccb8-lc5fp bash
连接到一个正在运行的容器
#语法
kubectl attach POD -c CONTAINER
# 参数选项
-c, --container="": 容器名。如果省略,则默认选择第一个 pod
-i, --stdin[=false]: 将控制台输入发送到容器。
-t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
# 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
kubectl attach 123456-7890
# 获取pod 123456-7890中ruby-container的输出
kubectl attach 123456-7890 -c ruby-container
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
kubectl attach 123456-7890 -c ruby-container -i -t
拷贝文件或者目录到pod容器中
用于pod和外部的文件交换,类似于docker 的cp,就是将容器中的内容和外部的内容进行交换
api-servions命令:打印受支持的api版本信息
# kubectl api-versions
[root@master ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
用于查看命令帮助
kubectl --help
kubectl create --help
config:用于修改kubeconfig配置文件(用于访问api,例如配置认证信息)
**version命令:**打印客户端和服务端版本信息
**plugin命令:**运行一个命令行插件+
通过文件名或者标准输入对资源应用配置
通过文件名或控制台输入,对资源进行配置。 如果资源不存在,将会新建一个。可以使用 JSON 或者 YAML 格式。
# 语法
kubectl apply -f FILENAME
# 将pod.json中的配置应用到pod
kubectl apply -f ./pod.json
# 将控制台输入的JSON配置应用到Pod
cat pod.json | kubectl apply -f -
选项
-f, --filename=[]: 包含配置信息的文件名,目录名或者URL。
--include-extended-apis[=true]: If true, include definitions of new APIs via calls to the API server. [default true]
-o, --output="": 输出模式。"-o name"为快捷输出(资源/name).
--record[=false]: 在资源注释中记录当前 kubectl 命令。
-R, --recursive[=false]: Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.
--schema-cache-dir="~/.kube/schema": 非空则将API schema缓存为指定文件,默认缓存到'$HOME/.kube/schema'
--validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
使用补丁修改,更新资源的字段,也就是修改资源的部分内容
# 语法
kubectl patch (-f FILENAME | TYPE NAME) -p PATCH
# Partially update a node using strategic merge patch
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
# Update a container's image; spec.containers[*].name is required because it's a merge key
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}
通过文件或者标准输入替换原有资源
# 语法
kubectl replace -f FILENAME
# Replace a pod using the data in pod.json.
kubectl replace -f ./pod.json
# Replace a pod based on the JSON passed into stdin.
cat pod.json | kubectl replace -f -
# Update a single-container pod's image version (tag) to v4
kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
# Force replace, delete and then re-create the resource
kubectl replace --force -f ./pod.json
不同的版本之间转换配置文件
# 语法
kubectl convert -f FILENAME
# Convert 'pod.yaml' to latest version and print to stdout.
kubectl convert -f pod.yaml
# Convert the live state of the resource specified by 'pod.yaml' to the latest version
# and print to stdout in json format.
kubectl convert -f pod.yaml --local -o json
# Convert all files under current directory to latest version and create them all.
kubectl convert -f . | kubectl create -f -
[root@master1 kubernetes-1.10]# kubectl get nodes
[root@master1 ~]# kubectl get pods --namespace=kube-system
[root@master1 ~]# kubectl get pods -n kube-system |grep -v Running
[root@master1 ~]# kubectl describe pod -n kube-system
1.5 查询指定Pod具体信息(同上)
如下查询k8s dashboard页面启动pod启动过程
1.6 Node节点join master
1.7 K8s登陆界面
2 Kubeadm指令集
Kubeadm帮助用户快速搭建k8s集群cluster:
常见命令如下:
2.1 kubeadm init
建立一个master node。
2.2 kubeadm join
初始化worker节点并加入到cluster
2.3 kubeadm upgrage
升级k8s集群到一个新的版本
2.4 kubeadm config
2.5 kubeadm reset
还原所有kubeadm init 和kubeadm join操
2.6 kubeadm token
管理kubeadm join的tokens
2.7 kubeadm version