8-1 Namespace --- 集群的共享与隔离
隔离
1资源对象的隔离 server deployment pod
2资源配额的隔离 cpu memory
查看命名空间
kubectl get namespaces
查看指定命名空间的pod
kubectl get pods -n default
kubectl get pods -n ingress-nginx
创建一个名为dev的namespace
kubectl create -f namespace-dev.yaml
创建web-dev.yaml
#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-demo
namespace: dev
spec:
selector:
matchLabels:
app: web-demo
replicas: 1
template:
metadata:
labels:
app: web-demo
spec:
containers:
- name: web-demo
image: harbor.pdabc.com/kubernetes/web:v3
ports:
- containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
name: web-demo
namespace: dev
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: web-demo
type: ClusterIP
---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-demo
namespace: dev
spec:
rules:
- host: web-dev.pdabc.com
http:
paths:
- path: /
backend:
serviceName: web-demo
servicePort: 80
创建web-demo
kubectl apply -f web-dev.yaml
查看dev 命名空间下的pod 只能看到dev下的pod
提现了隔离性
kubectl get pods -n dev
kubectl get all -n dev
测试命名空间的隔离性 登录前几节创建的web-demo的pod 访问tomcat-demo
kubectl exec -it web-demo-f4564954d-sb4gt bash
通过ping和weget 测试 发现可以正常ping通并下载到index
ping tomcat-demo
wget tomcat-demo -O idx
同样的命令在dev命名空间的web-demo-dev上测试 发现并不通 需要指定-n dev 进入pod
kubectl exec -it web-demo-f4564954d-sb4gt bash -n dev
查看dns 只在dev 下
kubectl get svc
在dev pod下可以访问svc
证明不同命名空间下的service ip 是可以被互相访问的 没有什么限制.service 和命名空间无关
kubectl get pods -o wide
pod ip和service ip 一样也可以被访问到,和命名空间无关.namespace 只是对名字的隔离,并不是物理的隔离.
如果需要区分权限 需要通过用户区分.创建上下文参数的时候 不能用admin
先备份配置文件 这里没有设置其余账号的pem或者密码 所以拿admin测试
cp .kube/config .kube/config.backup
# 设置上下文参数
$ kubectl config set-context ctx-dev \
--cluster=kubernetes \
--user=admin \
--namespace=dev \
--kubeconfig=/root/.kube/config
配置默认的上下文
kubectl config use-context ctx-dev --kubeconfig=/root/.kube/config
查看切换上下文之后 用户的权限 如果报错需要输入用户名username 则输入下面的命令
kubectl get pods
kubectl config set-credentials ctx-dev --username=ctx-dev [email protected]
切换回原来的用户权限
kubectl config use-context [email protected]
划分方式
按环境划分 dev test
按团队划分
自定义多级划分