标签:over get 区分 nbu redis foo data mbed cas
简介:kubectl是一个命令行界面,用于运行针对Kubernetes群集的命令。
语法:
kubectl [command] [TYPE] [NAME] [flags]
- command:指定您希望对一个或多个资源执行的操作,例如创建,获取,描述,删除。
- TYPE:指定资源类型。 资源类型区分大小写,可以使用单数,复数或缩写形式。
- NAME:指定资源的名称。 名称区分大小写。 如果省略名称,则会显示所有资源的详细信息,例如$ kubectl get pod。
- flags:指定可选标志。 例如,可以使用-s或--server标志来指定Kubernetes API服务器的地址和端口。
1、显示Pod的更多信息
kubectl get pod <pod-name> -o wide
以yaml格式显示Pod的详细信息
kubectl get pod <pod-name> -o yaml
2、创建资源对象
根据yaml配置文件一次性创建service和rc
kubectl create -f my-service.yaml -f my-rc.yaml
根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作
kubectl create -f <directory>
3、查看资源对象
查看所有Pod列表
4、查看rc和service列表
5、描述资源对象
显示Node的详细信息
kubectl describe nodes <node-name>
显示Pod的详细信息
kubectl describe pods/<pod-name>
显示由RC管理的Pod的信息
kubectl describe pods <rc-name>
6、删除资源对象
基于Pod.yaml定义的名称删除Pod
kubectl delete -f pod.yaml
删除所有包含某个label的Pod和service
kubectl delete pods,services -l name=<label-name>
删除所有Pod
kubectl delete pods --all
7、执行容器的命令
执行Pod的data命令,默认是用Pod中的第一个容器执行
kubectl exec <pod-name> data
指定Pod中某个容器执行data命令
kubectl exec <pod-name> -c <container-name> data
通过bash获得Pod中某个容器的TTY,相当于登录容器
kubectl exec -it <pod-name> -c <container-name> /bin/bash
8、使用一些复杂过滤条件查看特定的资源对象
# 根据重启次数排序列出 pod
$ kubectl get pods --sort-by=‘.status.containerStatuses[0].restartCount‘
# 获取所有具有 app=cassandra 的 pod 中的 version 标签
$ kubectl get pods --selector=app=cassandra rc -o jsonpath=‘{.items[*].metadata.labels.version}‘
# 获取所有节点的 ExternalIP
$ kubectl get nodes -o jsonpath=‘{.items[*].status.addresses[?(@.type=="ExternalIP")].address}‘
# 查看哪些节点已就绪
$ JSONPATH=‘{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}‘ && kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"
9、Pod的扩容缩容、滚动升级以及更新资源配置
执行扩容缩容Pod的操作
kubectl scale rc redis --replicas=3
我们需要确认的是在rc配置文件中定义的replicas数量,当我们执行上述命令的结果大于replicas的数量时,则我们执行的命令相当于扩容操作,反之相反,可以理解为我们填写的数量是我们需要的Pod数量。需要注意的是,当我们需要进行永久性扩容时,不要忘记修改rc配置文件中的replicas数量。
Pod的滚动升级
执行滚动升级操作
kubectl rolling-update redis -f redis-rc.update.yaml
需要注意的是当我们执行rolling-update命令前需要准备好新的RC配置文件以及ConfigMap配置文件,RC配置文件中需要指定升级后需要使用的镜像名称,或者可以使用kubeclt rolling-update redis --image=redis-2.0直接指定镜像名称的方式直接升级。
# 强制替换,删除后重新创建资源。会导致服务中断。
$ kubectl replace --force -f ./pod.json
# 为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口
$ kubectl expose rc nginx --port=80 --target-port=8000
# 更新单容器 pod 的镜像版本(tag)到 v4
$ kubectl get pod mypod -o yaml | sed ‘s/image:myimageimage:myimage:.*$/\1:v4/‘ | kubectl replace -f -
$ kubectl label pods my-pod new-label=awesome # 添加标签
$ kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # 添加注解
$ kubectl autoscale deployment foo --min=2 --max=10 # 自动扩展 deployment “foo”
10、查看容器的日志
查看容器输出到stdout的日志:
跟踪查看容器的日志(tail -f):
kubectl logs -f <pod-name> -n <namespace> -c <container-name>
11、Kubectl context和配置
修改kubectl命令行工具默认使用的apiServer地址、集群CA和客户端证书:
[root@bogon ssl]# kubectl config set-cluster default-cluster --server=https://10.0.2.5:6443 --certificate-authority=/etc/kubernetes/ssl/ca.crt
Cluster "default-cluster" set.
[root@bogon ssl]# kubectl config set-credentials default-admin --certificate-authority=/etc/kubernetes/ssl/ca.crt --client-key=/etc/kubernetes/ssl/cs_client.key --client-certificate=/etc/kubernetes/ssl/cs_client.crt
User "default-admin" set.
[root@bogon ssl]# kubectl config set-context default-system --cluster=default-cluster --user=default-admin 在kubeconfig配置中添加一条名为default-system的上下文记录
Context "default-system" created.
[root@bogon ssl]# kubectl config use-context default-system #设置默认上下文为default-system
Switched to context "default-system".
[root@bogon ~]# kubectl config current-context #查看当前的上下文
default-system
详细如下:
创建 kubeconfig 文件
kubeconfig 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书;
source /opt/k8s/bin/environment.sh
# 设置集群参数
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/cert/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kubectl.kubeconfig
# 设置客户端认证参数
kubectl config set-credentials admin --client-certificate=admin.pem --client-key=admin-key.pem --embed-certs=true --kubeconfig=kubectl.kubeconfig
# 设置上下文参数
kubectl config set-context kubernetes --cluster=kubernetes --user=admin --kubeconfig=kubectl.kubeconfig
# 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
--certificate-authority
:验证 kube-apiserver 证书的根证书;
--client-certificate
、--client-key
:刚生成的 admin
证书和私钥,连接 kube-apiserver 时使用;
--embed-certs=true
:将 ca.pem 和 admin.pem 证书内容嵌入到生成的 kubectl.kubeconfig 文件中(不加时,写入的是证书文件路径);
分发 kubeconfig 文件
分发到所有使用 kubectl
命令的节点:
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh k8s@${node_ip} "mkdir -p ~/.kube"
scp kubectl.kubeconfig k8s@${node_ip}:~/.kube/config
ssh root@${node_ip} "mkdir -p ~/.kube"
scp kubectl.kubeconfig root@${node_ip}:~/.kube/config
done
- 保存到用户的
~/.kube/config
文件;
查看kubectl context配置信息:
# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority: /etc/kubernetes/ssl/ca.crt
server: https://10.0.2.5:6443
name: default-cluster
contexts:
- context:
cluster: default-cluster
user: default-admin
name: default-system
current-context: default-system
kind: Config
preferences: {}
users:
- name: default-admin
user:
client-certificate: /etc/kubernetes/ssl/cs_client.crt
client-key: /etc/kubernetes/ssl/cs_client.key
显示当前的上下文:
[root@bogon ~]# kubectl config current-context
default-system
12、在线编辑资源
# kubectl edit svc/mysql #可以直接对各种资源对象进行在线编辑变更
13、节点和集群信息查询或调度方法
$ kubectl cordon my-node # 标记 my-node 不可调度
$ kubectl drain my-node # 清空 my-node 以待维护
$ kubectl uncordon my-node # 标记 my-node 可调度
$ kubectl top node my-node # 显示 my-node 的指标度量
$ kubectl cluster-info # 显示 master 和服务的地址
$ kubectl cluster-info dump # 将当前集群状态输出到 stdout
$ kubectl cluster-info dump --output-directory=/path/to/cluster-state # 将当前集群状态输出到 /path/to/cluster-state
# 如果该键和影响的污点(taint)已存在,则使用指定的值替换
$ kubectl taint nodes foo dedicated=special-user:NoSchedule
14、资源类型列表
下表列出的是 kubernetes 中所有支持的类型和缩写的别名。
资源类型
|
缩写别名
|
apiservices
|
|
certificatesigningrequests
|
csr
|
clusters
|
|
clusterrolebindings
|
|
clusterroles
|
|
componentstatuses
|
cs
|
configmaps
|
cm
|
controllerrevisions
|
|
cronjobs
|
|
customresourcedefinition
|
crd
|
daemonsets
|
ds
|
deployments
|
deploy
|
endpoints
|
ep
|
events
|
ev
|
horizontalpodautoscalers
|
hpa
|
ingresses
|
ing
|
jobs
|
|
limitranges
|
limits
|
namespaces
|
ns
|
networkpolicies
|
netpol
|
nodes
|
no
|
persistentvolumeclaims
|
pvc
|
persistentvolumes
|
pv
|
poddisruptionbudget
|
pdb
|
podpreset
|
|
pods
|
po
|
podsecuritypolicies
|
psp
|
podtemplates
|
|
replicasets
|
rs
|
replicationcontrollers
|
rc
|
resourcequotas
|
quota
|
rolebindings
|
|
roles
|
|
secrets
|
|
serviceaccounts
|
sa
|
services
|
svc
|
statefulsets
|
|
storageclasses
|
|
15、kubectl的格式化输出
要以特定的格式向终端窗口输出详细信息,可以在 kubectl 命令中添加 -o 或者 -output 标志。
输出格式
|
描述
|
-o=custom-columns=<spec>
|
使用逗号分隔的自定义列列表打印表格
|
-o=custom-columns-file=<filename>
|
使用 文件中的自定义列模板打印表格
|
-o=json
|
输出 JSON 格式的 API 对象
|
-o=jsonpath=<template>
|
|
-o=jsonpath-file=<filename>
|
|
-o=name
|
仅打印资源名称
|
-o=wide
|
以纯文本格式输出任何附加信息,对于 Pod ,包含节点名称
|
-o=yaml
|
输出 YAML 格式的 API 对象
|
16、Kubectl 日志打印级别
使用 -v 或 --v 标志跟着一个整数来指定日志级别。
详细等级
|
描述
|
--v=0
|
总是对操作人员可见。
|
--v=1
|
合理的默认日志级别,如果您不需要详细输出。
|
--v=2
|
可能与系统的重大变化相关的,有关稳定状态的信息和重要的日志信息。这是对大多数系统推荐的日志级别。
|
--v=3
|
有关更改的扩展信息。
|
--v=4
|
调试级别详细输出。
|
--v=6
|
显示请求的资源。
|
--v=7
|
显示HTTP请求的header。
|
--v=8
|
显示HTTP请求的内容。
|
参考:
k8s技术--Kubernetes集群kubectl命令的常见使用方法
标签:over get 区分 nbu redis foo data mbed cas
原文地址:https://www.cnblogs.com/cheyunhua/p/10168501.html