kubectl命令 1、直接通过命令去操作k8s资源我崇拜生命中的真诚,喜欢被岁月见证过的友情,感恩生命中的不离不弃的人。
kubectl是k8s集群的命令行工具。基本语法如下
kubectl [command] [type] [name] [flag]-
command: 资源执行的操作,create get delete
-
type:指定资源类型 pod service deployment
-
name: 指定资源名称
-
flags: 额外可选参数
#查看所有pod kubectl get pod #查看所有node kubectl get node #查看wangzi 这个pod kubectl get pod wangzi #查看王子pod以json/yaml形式展示数据 kubectl get pod wangzi -o json kubectl get pod wangzi -o yaml #查看王子pod的详细信息 kubectl get pod wangzi -o wide #描述资源信息(如果当前pod未启动成功,pullimageerror等就可以使用,查看报错信息) kubectl describe wangzi
#创建一个wangzi的namespace kubectl create ns wangzi
#查看当前的namespace
kubectl get ns
k8s在集群启动之后,集群中的组件也是通过pod方式运行的,kube-system是集群本身组件所占用的一些pod
#运行一个pod,命名空间指定刚创建的wangzi
kubectl run pod --image=nignx -n wangzi
#查看在wangzi命名空间下的pod
kubectl get pod -n wangzi
#描述pod
kubectl describe pods pod -n wangzi
#删除pod
kubectl delete pods pod -n wangzi
kubectl create -f nginx.yaml
apiVersion:V1 kind:Namespace matadata: name:wangzi --- apiVersion:V1 kind: Pod metadata: name:wangzi_nginx namespace:wangzi spec: containers: -name:wangzi_container_nginx image:nginx:1.17.1
#创建了两个资源
kubectl create -f wangzi.yaml
#删除资源
kubectl delete -f wangzi.yaml3、通过apply命令和配置文件操作资源(新增和更新资源)
kubectl apply -f wangzi.yaml4、其他
删除pod,当前wangzi的pod被删除了,会重新创建一个新的pod
kubectl delete pod wangzi
查看控制器,需要删除对应的控制器,然后就不会自动重新创建了
kubectl get deployment -n wangzi5、资源的类型 ①label
- 在资源上添加标识,对资源进行区分和选择。
- 配置
apiVersion:V1 kind: Pod metadata: name:wangzi_nginx namespace:wangzi labels: version: "1.0" env: "test" spec: containers: -name:wangzi_container_nginx image:nginx:1.17.1
- 给wangzi pod 打标签
kubectl label pod wangzi -n wangzi version=1.0
- 覆盖之前的label
kubectl label pod wangzi -n wangzi version=1.0 --overwrite
- 展示wangzi pod的标签
kubectl get pod -n --show-label
- 通过参数 -l 搜索对应的标签
kubectl get pod -l "pod-template-hash=74774dbd69" -n default --show-labels
- 删除标签 tier-
kubectl label pod wangzi -n wangzi tier-②deployment
k8s通过控制器来控制pod.
- 文件配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: wangzi
spec:
replicas: 3
selector:
matchLabels:
run: wangzi
template:
metadata:
labels:
run: wangzi
- --replicas=3 指定副本数量,维护当前容器的个数
kubectl run nginx --image=nginx:latest --port=80 --replicas=3③Namespace
- 主要用来实现资源隔离
- pod是K8S集群进行管理的最小单元。一个pod中可以运行一个或则多个容器。
pod重建之后ip会随之变化,ip是集群内部可见的虚拟ip,外部无法访问。service可以实现服务发现和负载均衡。service通过标签选择机制与控制器创建的pod关联起来。
- 创建集群内部可以访问的service
#通过wangzi这个控制器找到对应的pod,暴露该pod 80端口,成功后会产生一个service的ClusterIP,这个地址在生命周期内不会变动 - kubectl expose deployment wangzi --name=wangi1 --type=ClusterIP --port=80 --target-port=80 -n wangzi
- 创建集群外部可以访问的service
- kubectl expose deployment wangzi --name=wangi1 --type=Nodeport--port=80 --target-port=80 -n wangzi
创建成功之后 PORT一栏显示如下:80:19998/TCP
可以通过当前主机的ip:19998 通过ClusterIP 转发到80端口
- 配置方式
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: wangzi
release: heihei
Pod 资源清单:
- 查看容器一级属性
- 查看容器二级属性
KIND: Pod
VERSION: v1
DEscriptION:
Pod is a collection of containers that can run on a host. This resource is
created by clients and scheduled onto hosts.
apiVersion: v1 #版本号
kind: Pod #资源类型
metadata: 


