欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kubernetes-pod的运用

程序员文章站 2024-03-11 10:14:55
...

pod运行在namespace(名称空间)的
kubernetes在集群启动后,会默认创建几个namespace(名称空间)

[ [email protected] ~]# kubectl get namespaceNAME
NAME                STATUS     AGE
default             Active     45h   #所有未指定Namespace的对象都会被分配在default命名空间
kube-node-lease     Active     45h   #集群节点之间的心跳维护,v1.13开始引入
kube-public         Active     45h   #此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-system         Active     45h   #所有由Kubernetes系统创建的资源都处于这个命名空间

创建namespace(ns是namespace的简写)

kubectl create ns dev

创建并运行
kebernetes没有提供单独运行pod的命令,都是通过pod控制器来实现的

#命令格式:kubectl run (pod控制器名称)〔参数]#--image指定Pod的镜像
#--port指定端口
#--namespace指定namespace
[ [email protected] ~]# kubectl run nginx --image=nginx:1.17.1 --port=80 -n dev
deployment.apps/nginx created

删除指定pod

#删除指定pod
先查看
kubectl get ns -n dev
NAME                     READY   STATUS    RESTARTS   AGE
nginx-65c4bffcb6-s2nj7   1/1     Running   0          105m
删除指定pod
kubectl delete pod nginx-65c4bffcb6-s2nj7 -n dev

#此时,显示删除pod成功,但是再查询,发现又心产生了一个
#这是因为pod是由pod控制器创建的,控制器会监控pod状况,一旦发现pod死亡,会立即重建
#此时要像删除pod,必须删除pod控制器

#先来查询一下当前namespace下的pod控制器
kubectl get deploy -n dev
#接下来,删除此pod控制器
kubectl deletedeploy name -n dev
#稍等片刻,再查询pod,发现pod被删除
kubectl get pods -n dev

创建一个pod-nginx.yaml

apiVersion: v1
kind: Pod
metadata :
  name: nginx
  namespace: dev
spec:
  containers:
  - image: nginx :1.17.1
    name: pod
   ports:
   - name: nginx-port
     containerPort: 80
     protocol: TCP
#然后就可以执行对应的创建和删除命令了:
创建:kubectl create -f pod-nginx.yaml
删除:kubectl delete -f pod-nginx.yaml