k8s操作简单入门
一、k8s操作的三种方式简介
- 使用kubectl + 命令操作,例如:
kubectl run nginx --image=nginx:latest --port=80
这种方式简单灵活,但无法审计和跟踪对象,通常用于测试环境
- 使用kubectl + 命令 + yaml操作,例如:
kubectl create -f nginx.yaml
这种方式可以跟踪和审计,但项目大时操作繁琐,一般用于开发环境
- 使用kubectl + apply + yaml操作,例如:
kubectl apply -f nginx.yaml
这种方式支持按目录批量操作,但很难调试,适合大项目批量部署
二、namespace的简单操作
- namespace就是用来划分不同的区域,不同区域中的pod相互隔离(pod可以先理解为docker的容器)
1.查看namespace
kubectl get ns
2.创建一个namespace,例如test。命令中的namespace可简写为ns
kubectl create namespace test
3.删除一个namespace,此时namespace中的pod也会被删除
kubectl delete ns test
4.使用yaml方式进行上面的三个操作
首先书写ns-test.yaml,内容如下:
apiVersion: v1
kind: Namespace
metadata:
name: test
1.创建namespace
kubecel create -f ns-test.yaml
或者
kubectl apply -f ns-test.yaml
2.删除namespace
kubectl delete -f ns-test.yaml
三、pod的简单操作
- Docker中使用镜像创建容器运行。在k8s中,使用镜像创建pod运行,所有容器都称之为pod
1.创建一个pod,例如nginx
kubectl run pod --image=nginx:latest -n test
- 注意,-n参数是指定namespace,即将容器创建在哪个namespace中。若不指定,则创建在名为default的namespace中。
2.查看pod
kubectl get pod -n test
3.删除pod
- 注意,pod-644584df94-nl6mq是上面查到的pod名称
kubectl delete pod pod-644584df94-nl6mq -n test
删除 test 中,名为 pod-644584df94-nl6mq 的 pod
- 小插曲:此时再查询pod,会发现还能查询到nginx的pod,但是仔细看,会发现这个pod的名字已经和之前不同了,这就是k8s强大的地方之一。它发现pod被删掉了,就会马上启动一个同样的pod来代替之前的pod,以保证服务继续运行
4.使用yaml方式进行上面的三个操作
1.编写pod-nginx.yaml
apiVersion: v1
kind: Namespace
metadata:
name: test
---
apiVsersion: v1
kind: Pod
metadata:
name: nginx
namespace: test
spec:
containers:
- name: nginx-pod
image: nginx:latest
- yaml分为两部分,上面就是namespace的部分,下面就是nginx的pod基本信息了。namespace部分这里不要也可以。
- 注意:因为这个yaml中包含namespace的配置,所以创建时,若没有这个namespace,就会创建namespace。同理,使用yaml执行删除操作时,会同时删除这个namespace
2.创建
kubectl create -f pod-nginx.yaml
或者
kubectl apply -f pod-nginx.yaml
3.查看
kubectl get -f pod-nginx.yaml
4.删除
kubectl delete -f pod-nginx.yaml
四、kubectl apply命令简单解释
- 资源不存在时,执行kubectl apply + yaml,就会创建资源,相当于执行kubectl create + yaml
- 资源存在时,执行kubectl apply,则会更新资源,相当于执行kubectl patch。
所以,创建或者更新时,使用apply命令即可。
删除时使用delete,查询则使用get