kubectl的用法
kubectl get - 显示资源列表
kubectl get 资源类型
获取类型为Deployment的资源列表
[root@k8s-master-1 ~]kubectl get deployments
获取类型为Pod的资源列表
[root@k8s-master-1 ~]kubectl get pods
获取类型为Node的资源列表
[root@k8s-master-1 ~]kubectl get nodes
名称空间
在命令后增加 -A 或 --all-namespaces 可查看所有 名称空间中 的对象,使用参数 -n 可查看指定名称空间的对象,如:
查看所有名称空间的 Deployment
[root@k8s-master-1 ~]kubectl get deployments -A
[root@k8s-master-1 ~]kubectl get deployments --all-namespaces
查看 kube-system 名称空间的 Deployment
[root@k8s-master-1 ~]kubectl get deployments -n kube-system
kubectl describe - 显示有关资源的详细信息
kubectl describe 资源类型 资源名称
查看名称为nginx-XXXXXX的Pod的信息
[root@k8s-master-1 ~]kubectl describe pod nginx-XXXXXX
查看名称为nginx的Deployment的信息
[root@k8s-master-1 ~]kubectl describe deployment nginx
kubectl logs - 查看pod中的容器的打印日志(和命令docker logs 类似)
kubectl logs Pod名称
查看名称为nginx-pod的Pod内的容器打印的日志
本案例中的 nginx-pod 没有输出日志,所以您看到的结果是空的
[root@k8s-master-1 ~]kubectl logs -f nginx-pod
kubectl exec - 在pod中的容器环境内执行命令(和命令docker exec 类似)
kubectl exec Pod名称 操作命令
在名称为nginx-pod-xxxxxx的Pod中运行bash
[root@k8s-master-1 ~]kubectl exec -it nginx-pod-xxxxxx /bin/bash
指令性的命令行=======================
创建一个 Deployment 对象,以运行一个 nginx 实例:
[root@k8s-master-1 ~]kubectl run nginx --image nginx
这样创建的pod可以用如下命令删除:
[root@k8s-master-1 ~]# kubectl delete pod nginx-1-6664c49886-hgjlt
用deployment创建的pod:
[root@k8s-master-1 ~]# kubectl create deployment nginx --image nginx
通过配置文件创建对象:
[root@k8s-master-1 ~]# kubectl create -f nginx.yaml
删除两个配置文件中的对象:
[root@k8s-master-1 ~]# kubectl delete -f nginx.yaml -f redis.yaml
直接使用配置文件中的对象定义,替换Kubernetes中对应的对象:
[root@k8s-master-1 ~]# kubectl replace -f nginx.yaml
查看哪些 Kubernetes 对象在名称空间里,哪些不在:
[root@k8s-master-1 ~]# kubectl api-resources --namespaced=true
[root@k8s-master-1 ~]# kubectl api-resources --namespaced=false
========使用名称空间共享集群
查看集群中的名称空间列表:
[root@k8s-master-1 ~]# kubectl get namespaces
输出结果如下所示:
NAME STATUS AGE
calico-system Active 42h
default Active 42h
demo-test Active 16m
kube-node-lease Active 42h
kube-public Active 42h
kube-system Active 42h
tigera-operator Active 42h
Kubernetes 安装成功后,默认有初始化了三个名称空间:
.default 默认名称空间,如果 Kubernetes 对象中不定义 metadata.namespace 字段,该对象将放在此名称空间下
.kube-system Kubernetes系统创建的对象放在此名称空间下
.kube-public 安装集群是自动创建,并且所有用户都是可以读取的(即使是那些未登录的用户)。主要是为集群预留的。
查看名称空间的概要信息:
[root@k8s-master-1 ~]# kubectl describe namespaces kube-system
输出结果如下所示:
Name: kube-system
Labels:
Annotations:
Status: Active
No resource quota.
No LimitRange resource.
--->Resource quota 汇总了名称空间中使用的资源总量,并指定了集群管理员定义该名称空间最多可以使用的资源量
--->Limit range 定义了名称空间中某种具体的资源类型的最大、最小值
创建名称空间
(1)通过 yaml 文件,创建文件 my-namespace.yaml 内容如下:
apiVersion: v1
kind: Namespace
metadata:
name: yuanye
[root@k8s-master-1 y]# kubectl create -f ./name1.yaml
[root@k8s-master-1 y]# kubectl get namespaces
NAME STATUS AGE
calico-system Active 43h
default Active 43h
demo-test Active 30m
kube-node-lease Active 43h
kube-public Active 43h
kube-system Active 43h
tigera-operator Active 43h
yuanye Active 76s
(2)直接使用命令创建名称空间:
[root@k8s-master-1 y]# kubectl create namespace y1
namespace/y1 created
删除名称空间
[root@k8s-master-1 y]# kubectl delete namespaces y1
namespace "y1" deleted
理解 default 名称空间
默认情况下,安装Kubernetes集群时,会初始化一个 default 名称空间,用来将承载那些未指定名称空间的 Pod、Service、Deployment等对象
创建新的名称空
[root@k8s-master-1 y]# vim dev.yaml
apiVersion: v1
kind: Namespace
metadata:
name: development
labels:
name: development
[root@k8s-master-1 y]# vim prod.yaml
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
name: production
[root@k8s-master-1 y]# kubectl create -f ./prod.yaml
[root@k8s-master-1 y]# kubectl get namespaces --show-labels
NAME STATUS AGE LABELS
calico-system Active 43h name=calico-system
default Active 43h
demo-test Active 48m
development Active 8m10s name=development
kube-node-lease Active 43h
kube-public Active 43h
kube-system Active 43h
production Active 7m59s name=production
tigera-operator Active 43h name=tigera-operator
kubectl run nginx --image=nginx --namespace=<您的名称空间>
设置名称空间偏好
可以通过 set-context 命令改变当前 kubectl 上下文 的名称空间,后续所有命令都默认在此名称空间下执行。
kubectl config set-context --current --namespace=<您的名称空间>
验证结果
**kubectl config view --minify | grep namespace: **
查看哪些 Kubernetes 对象在名称空间里,哪些不在:
在名称空间里
kubectl api-resources --namespaced=true
不在名称空间里
**kubectl api-resources --namespaced=false **
------------------kubectl命令出现【The connection to the server localhost:8080 was refused - did you specify the right host or port?】的解决方法:--------------