NameSpace

名称空间:用来对集群资源进行隔离划分。默认只隔离资源,不隔离网络

#查看名称空间
kubectl get ns

#查看默认空间下的应用
kubectl get pods

#查看所有的应用
kubectl get pods -A

#查看指定空间下的应用
kubectl get pods -n kubernetes-dashboard

#创建名称空间
kubectl create ns hello

#名称空间里面的资源会一起删除
kubectl delete ns hello

使用文件创建名称空间 vi hello.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: hello
kubectl apply -f hello.yaml

#删除
kubectl delete -f hello.yaml

Pod

Pod:运行中的一组容器,Pod是kubernetes中应用的最小单位

# 运行一个pod
kubectl run mynginx --image=nginx

# 查看default名称空间的Pod
kubectl get pod 

# 描述
kubectl describe pod mynginx 

#查看应用在那台服务器上运行(在子节点上执行)
docker ps | grep mynginx

# 每个Pod - k8s都会分配一个ip(kubectl命令只在主节点上执行)
kubectl get pod -owide 
curl http://pod对应的IP

#进入到容器内部
kubectl exec -it mynginx -- /bin/bash

#在部分容器只能使用/bin/sh
kubectl exec -it mynginx -- /bin/sh

ls /usr/share/nginx/html/
#可以修改容器中的内容
exit

#查看Pod中的日志(只有Pod有日志,logs后面直接是Pod名称)
kubectl logs mynginx

# 删除
kubectl delete pod mynginx

使用文件创建pod vi pod.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: mynginx
  # pod名称	
  name: mynginx
  # namespace: default
spec:
  containers:
  - image: nginx
    # 容器名称	
    name: mynginx
kubectl apply -f pod.yaml

kubectl get pod -owide
kubectl get pod -oyaml

#使用ip可以访问不同的容器
curl ip:容器端口

#在Pod内部,可以使用127.0.0.1:容器端口,相互之间进行访问
#如果一个Pod内有多个容器,且多个容器有相同的端口,则启动时会因端口占用冲突而失败

kubectl delete -f pod.yaml 

一个Pod里面运行多容器

vi multicontainer-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp
  name: myapp
spec:
  containers:
  - image: nginx
    name: nginx
  - image: tomcat:8.5.68
    name: tomcat
kubectl apply -f multicontainer-pod.yaml

#每隔1秒查询一次pod
watch -n 1 kubectl get pods -A

#等pod启动好之后,使用dashboard可以查看到pod,在右侧点击日志,可以选择nginx/tomcat查看日志,或者是点执行,进入到对应容器里面

#找到容器对应的子节点ip
kubectl get pods -owide

#在子节点上查看容器id(可以查到k8s_tomcat_myapp_default/k8s_nginx_myapp_default对应的容器)
docker ps | grep myapp

#使用-c 容器名称 进入指定的容器(如果没有传参数-c,默认进入第一个容器)
kubectl exec -it myapp -c tomcat -- /bin/bash
pwd && ls
exit

kubectl exec -it myapp -c nginx -- /bin/bash
ls /usr/share/nginx/html/
exit

#查看pod中的日志(logs后面跟pod名称。如果pod中有多个容器,则需要指定容器的名称)
kubectl logs myapp -c nginx
kubectl logs myapp -c tomcat

#删除多个pod
kubectl delete pod Pod名字 pod1 pod2

kubectl delete -f multicontainer-pod.yaml
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐