目录
一、前言
二、k8s概述
三、k8s常用操作管理命令
3.1 kubectl 命令用法
3.2 常用控制台管理命令演示
3.2.1 获取全部节点信息
3.2.2 获取当前集群下全部pod
3.2.3 查看某个pod信息
3.2.4 获取当前集群下的所有namespace信息
3.2.5 查看当前集群下已创建的资源
3.2.6 删除某个已存在的pod
3.2.7 删除某个已存在的deployment
3.2.8 删除某个已存在的service
3.3 常用资源管理命令演示
3.3.1 使用命令操作资源
3.3.2 命令式对象配置 :通过命令配置和配置⽂件去操作资源
3.3.3 声明式对象配置:通过apply和配置⽂件操作资源
3.4 kubectl create 和 kubectl apply的区别
四、k8s Namespace简介
4.1 概述
4.2 Namespace 特点
4.3 k8s 四个初始NameSpace名称空间
4.3.1 default
4.3.2 kube-system
4.3.3 kube-public
4.3.4 kube-node-lease
五、NameSpace的常用操作命令
5.1 查看当前k8s集群所有命令空间
5.2 创建新的命名空间
5.3 查看命名空间的详情
5.4 删除命名空间
5.5 查看名称空间信息并指定输出格式
5.6 基于配置文件方式生成命名空间
5.7 删除基于yaml创建的namespace
六、写在文末
在k8s的日常运维中,掌握日常必备的控制台操作命令可以说是必备的,本篇将结合实操详细介绍下基于kudadmin模式下常用的操作命令使用。
kubectl [command] [TYPE] [NAME] [flags]
命令说明:
kubectl get node
kubectl get pod
这里显示出了上一篇我们部署的一个nginx应用
kubectl get pod pod_name
可以查看下上一篇部署的nginx对应的pod信息
kubectl get ns
kubectl get pod,svc,deploy
kubectl delete pod pod名称
如果是靠deploy控制器创建的pod, 直接删除则会自动创建新的;
比如这里我们删除上面的那个nginx
尽管执行了删除命令,但是当我们再次查看pod信息的时候,发现k8s又重新创建了一个
如果需要删除pod,可以直接删除depoly控制器,控制器删除了,对应其创建的pod就会被删除,对应的命令如下:
kubectl delete deployment deployment名称
即下图中对应的这个deployment
kubectl delete svc/service service名称
可以通过下面的命令查找已存在的service服务,执行删除即可
在上文,我们通过deployment创建了nginx应用对应的pod,属于命令式创建资源对象的方式,下面介绍k8s中几种常用的资源管理的命令方式;
kubectl run 资源名称 --image=镜像名称 --port=端口号
这个就很像以前我们在使用docker部署某个应用时候的一种操作,比如创建一个nginx应用
kubectl run xdclass-nignx-pod --image=nginx:1.23.0 --port=80 kubectl create deployment test-nginx --image=nginx:1.23.0
语法格式
kubectl create -f 配置⽂件名称.yaml
这种方式在生产环境下也是经常使用的一种方式,务必要熟练掌握,命令格式如下:
kubectl apply -f 配置⽂件名称.yaml
通过上面的操作和前文的知识,我们也了解到,k8s中最小的应用单元为pod,而创建一个pod可以直接创建,或者通过deployment的方式创建出来,所以,通过apply的方式创建一个pod的话,其对应的配置文件既可以是直接创建pod,或者deployment;
声明为pod类型的yaml
在任意目录下创建一个后缀为.yaml的文件,比如这里我们创建一个test-nginx.yaml的文件,配置内容如下:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx:1.23.0
name: pod
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
然后在当前的配置文件目录下执行 ,可以看到pod创建成功;
kubectl apply -f ./test-pod-nginx.yaml
声明为deployment类型的 yaml
按照上面同样的方式创建一个yaml的后缀名的配置文件,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
chapter: first-app
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name : nginx
image: nginx:1.23.0
ports:
- containerPort: 80
使用apply命令执行下之后,可以发现deployment创建成功
在日常开发运维中,kubectl create与kubectl apply都可以使用,两者的差别主要如下:
kubectl apply首次执行的时候会创建对应的资源,再次执行时会根据配置文件进行升级、扩容等操作,即使配置文件没有变化也不影响;
Namespace是k8s系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多用户的资源隔离。
默认情况下,k8s集群中的所有的Pod都是可以相互访问的 ,但在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的namespace下 ,总结来说,k8s中的Namespace具有下面特点:
默认情况下,k8s集群启动后会创建几个默认的初始化命名空间
没有指明使用其它名字空间的对象所使用的默认名字空间
Kubernetes 系统创建对象所使用的名字空间
自动创建的,命名空间下的资源可以被所有人访问(包括未认证用户)
集群节点之间的心跳维护
下面列举日常运维过程中与NameSpace操作相关的命令
kubectl get namespace
或者使用缩写
kubectl get ns
kubectl create ns 名称
kubectl describe ns 名称
kubectl delete ns 名称
语法格式
kubectl get ns ns名称 -o 格式参数, 常见的是wide、json、yaml
比如将上面的test以yaml格式输出
kubectl get ns test -o yaml
还可以通过yaml格式的配置文件,使用kubectl命令生成,如下,在当前目录下创建一个测试使用的yaml文件,配置如下:
apiVersion: v1
kind: Namespace
metadata:
name: test1
通过下面的命令基于上面的配置文件创建出一个namespace
kubectl create -f test-namespace.yaml
或者
kubectl apply -f test-namespace.yaml
执行后,可以看到上面的test1这个namespace就创建出来了
语法格式
kubectl delete -f yaml名称
掌握k8s的操作命令对于日常k8s的集群运维可以说非常必要,只有熟练掌握了各种操作命令,才能高效操作k8s集群的各种资源,希望本篇对你有用哦。