最小单元pod而不是容器(容器由docker引擎管理),pod由pod控制器来管理
大小写敏感
缩进表示层级关系
建议使用空格(tab高版本支持)
#表示注释
冒号后面要空格
多个配置放到一个文件需要用三个 - 来分隔
2.资源管理方式命令式对象管理
直接使用命令 *** 作资源
kubectl run nginx-pod --image=nginx:1.14 --port=80
命令式对象配置(f即为file)
使用配置文件方式 *** 作资源
kubectl create/patch/delete -f nginx-pod.yaml
声明式对象配置
适合创建和更新资源(不能删除,可以 *** 作目录下所有yaml文件)
kubectl apply -f nginx-pod.yaml3.命令使用
查看所有pod
kubectl get pods/ kubectl get pod
查看某一个pod
kubectl get pods nacos-0/ kubectl get pod nacos-0
查看某一个pod详细信息
kubectl get pod nacos-0 -o wide
查看pod的配置信息
kubectl get pod nacos-0 -o json/yaml/
kubectl describe pod nacos-0
kubectl create namespace dev
查看名称空间
kubectl get ns
在名称空间下面运行(run命令使用的是控制器删除的)
kubectl run pod --image=nginx:1.17.1 -n dev
获取名称空间下的pod,默认为default
kubectl get pods -n dev
删除名称空间
kubectl delete ns dev6.几种资源
- NameSpacePodLableDeploymentService
用于多环境,多租户(授权机制,配额机制)资源隔离
6.1.1查看所有名称空间
[root@k8s-master01 ~]# kubectl get ns NAME STATUS AGE default Active 6d8h #默认的命名空间 kube-node-lease Active 6d8h #心跳的维护 kube-public Active 6d8h #不需要认证都可以访问 kube-system Active 6d8h #k8s本身创建的资源都在这里
6.1.2查看指定名称空间下的所有POD
kubectl get pods -n kube-system
6.1.3查看某个名称空间的详情信息
kubectl describe ns default
Name: default Labels:Annotations: Status: Active No resource quota. No LimitRange resource. #资源配额,内存。。。
6.1.4创建名称空间
kubectl create ns dev
[root@k8s-master01 ~]# kubectl create ns dev namespace/dev created
6.1.5查看名称空间(存在性)
kubectl get ns dev
[root@k8s-master01 ~]# kubectl get ns dev NAME STATUS AGE dev Active 91s
6.1.6删除名称空间
kubectl delete ns dev
6.1.7yaml方式创建名称空间
apiVersion: v1 kind:Namespace metadata: name:dev
[root@k8s-master01 my_k8s]# kubectl create/delete -f temp-namespace-demo.yaml namespace/dev created6.2POD
一个根PODPAUSE,多个用户POD
系统组件POD
[root@k8s-master01 ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-9d85f5447-wgxmw 1/1 Running 46 6d23h coredns-9d85f5447-xgzt6 1/1 Running 46 6d23h etcd-k8s-master01 1/1 Running 9 6d23h kube-apiserver-k8s-master01 1/1 Running 12 6d23h kube-controller-manager-k8s-master01 1/1 Running 72 6d23h kube-flannel-ds-nls9x 1/1 Running 5 6d22h kube-flannel-ds-sphpd 1/1 Running 5 6d22h kube-flannel-ds-wkpv6 1/1 Running 9 6d22h kube-proxy-58ltk 1/1 Running 8 6d23h kube-proxy-8c69m 1/1 Running 5 6d23h kube-proxy-pw2ms 1/1 Running 5 6d23h kube-scheduler-k8s-master01 1/1 Running 65 6d23h
需要注意的是pod的管理是通过POD控制器实现的。
6.2.1POD的创建
# nginx 为控制器 # --image 指定镜像 # --port 暴露端口 # --namespace 名称空间 kubectl run nginx --image=nginx:1.14-alpine --port=80 --namespace=dev
6.2.2查看容器描述
kubectl get pod/nginx-6867cdf567-7lzmg -o wide -n dev
kubectl describe pod/nginx-6867cdf567-7lzmg -n dev
6.2.3要删除POD(命令方式)首先要删除POD的控制器
kubectl get deployment -n dev/default
[root@k8s-master01 ~]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 6d22h
kubectl delete deployment 控制器名称 -n 名称空间
[root@k8s-master01 ~]# kubectl delete deployment nginx deployment.apps "nginx" deleted
6.2.4配置方式创建
apiVersion: v1 kind: Pod metadata: #pod名称 name: nginx namespace: dev #pod描述 spec: containers: - image: nginx:latest #容器镜像 name: may-pod #容器名称 ports: #端口相关 - name: nginx-port containerPort: 80 protocol: TCP
[root@k8s-master01 temptest]# vi nginx-test.yaml [root@k8s-master01 temptest]# kubectl apply -f nginx-test.yaml pod/my-nginx created6.3LABEL
用处:用于给POD打标签,通过标签选择器便于统一 *** 作。名称空间POD相互隔离不能通信。
特点:NODE/POD/SERVICE都可以添加任意多个LABEL
常用标签有:version/environment/tier等
*** 作标签使用标签选择器:
分为等式选择(name=xxx,name!=xxx)和集合选择(name in(xx,qq,aa),name not in (aa,bb,cc))
选择器可以混合使用
6.3.1命令方式打标签
kubectl label pod/my-nginx -n dev version=v1.0
[root@k8s-master01 temptest]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS my-nginx 1/1 Running 0 17m version=v1.0
6.3.2查看POD上是否有标签
kubectl get pods -n dev --show-labels
[root@k8s-master01 temptest]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS my-nginx 1/1 Running 0 14m
6.3.3更新标签
kubectl label pod/my-nginx -n dev version=v1.0 --overwrite
6.3.4挑出指定标签的POD
kubectl get pods -l "标签选择器" -n dev --show-labels
6.3.5去除标签
标签-
kubectl label pod/my-nginx -n dev 标签-
6.3.6配置方式
apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev labels: version: "3.0" env: "test" spec: containers: - image: nginx:latest name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP6.4DEPLOMENT
用于管理POD
6.4.1创建控制器
kubectl run deploment名称 其他参数
6.4.2删除名称空间
kubectl delete deploment名称 其他参数
6.4.3配置方式创建
注:控制器通过标签选择器来控制pod模板创建的pod资源
apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: dev spec: replicas: 3 #标签选择器 selector: matchLabels: run: nginx template: metadata: #标签 labels: run: nginx spec: containers: - image: nginx:latest name: nginx ports: - containerPort: 80 protocol: TCP6.5SERVICE
POD的IP会随着POD重建而改变,Service为一组同类POD对外提供服务的接口。只要Service不删IP就不会变。
一般建议Service通过标签选择器来选择POD
6.5.1创建
ClusterIP只能在集群内部访问
kubectl expose deploy nginx-deploy --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
[root@k8s-master01 temptest]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx1 ClusterIP 10.96.108.6580/TCP 25s
NodePort可以外界访问
kubectl expose deploy nginx-deploy --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
[root@k8s-master01 temptest]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx1 ClusterIP 10.96.108.6580/TCP 3m38s svc-nginx2 NodePort 10.110.8.179 80:32464/TCP 7s
都可以进行访问了
6.5.2删除Service
kubectl delete svc 名称 -n dev
6.5.3配置方式
apiVersion: v1 kind: Service metadata: name: svc-nginx namespace: dev spec: clusterIP: 10.109.179.231 #固定svc的内网ip 写了type后可以不写 ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: ClusterIP
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)