微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

kubernetes云平台管理实战:namespace的使用十六

一、namespace的作用

Namespace(命名空间)是Kubernetes系统中的另一个非常重要的概念,Namespace在很多情况下用于实现多租户的资源隔离。阿里云

cms项目用到数据库、商城项目也需要数据库一个namespace下面不允许出现两个service叫MysqL

二、namespace管理命令

创建namespace

root@master dashboard]# kubectl create namespace luoahong
namespace "luoahong" created

查看namespace

[root@master dashboard]# kubectl get namespace 
NAME STATUS AGE
default Active 1d
kube-system Active 1d
luoahong Active 9s

删除namespace

[root@master dashboard]# kubectl delete namespace luoahong
namespace "luoahong" deleted

查看所有namespace

[root@master ~]# kubectl get all --all-namespaces 
NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kube-system deploy/kube-dns 1 1 1 1 3h
kube-system deploy/kubernetes-dashboard-latest 1 1 1 1 2h

NAMESPACE NAME DESIRED CURRENT READY AGE
default rc/MysqL 1 1 1 20h
default rc/readiness 2 2 0 2h

NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default svc/kubernetes 10.254.0.1 <none> 443/TCP 1d
default svc/MysqL 10.254.39.137 <none> 3306/TCP 20h
default svc/Nginx-deployment 10.254.250.109 <nodes> 80:32263/TCP 21h
default svc/readiness 10.254.202.52 <none> 80/TCP 2h
kube-system svc/kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 3h
kube-system svc/kubernetes-dashboard 10.254.245.38 <none> 80/TCP 2h

NAMESPACE NAME DESIRED CURRENT READY AGE
default rs/Nginx-1734779636 0 0 0 14m
kube-system rs/kube-dns-1835838994 1 1 1 3h
kube-system rs/kubernetes-dashboard-latest-2728556226 1 1 1 2h

NAMESPACE NAME READY STATUS RESTARTS AGE
default po/busyBox2 1/1 Running 3 3h
default po/exec 1/1 Running 54 3h
default po/httpget 1/1 Running 1 2h
default po/MysqL-3qkf1 1/1 Running 0 20h
default po/readiness-9rc3s 0/1 Running 0 2h
default po/readiness-jhzk5 0/1 Running 0 2h
kube-system po/kube-dns-1835838994-jm5bk 4/4 Running 0 3h
kube-system po/kubernetes-dashboard-latest-2728556226-fc2pc 1/1 Running 0 2h

三、使用namespace

 1、结构与组成

[root@master namespace]# ll
total 8
-rw-r--r-- 1 root root 351 May 13 14:23 Nginx-rc.yaml
-rw-r--r-- 1 root root 205 May 13 14:32 Nginx-svc.yaml

Nginx-rc.yaml

[root@master namespace]# cat Nginx-rc.yaml 
apiVersion: v1
kind: ReplicationController
Metadata:
  name: myweb
  namespace: luoahong
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    Metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: 192.168.118.18:5000/Nginx:1.13
        ports:
        - containerPort: 80

重点看namespace: luoahong

apiVersion: v1
kind: ReplicationController
Metadata:
  name: myweb
  namespace: luoahong

2、部署运行

[root@master namespace]# kubectl create -f Nginx-rc.yaml
replicationcontroller "myweb" created
[root@master namespace]# kubectl get all --namespace=luoahong 
NAME       DESIRED   CURRENT   READY     AGE
rc/myweb   2         2         2         5m

NAME             READY     STATUS    RESTARTS   AGE
po/myweb-qsml7   1/1       Running   0          5m
po/myweb-sbsw2   1/1       Running   0          5m

3、让外界访问

Nginx-svc.yaml

[root@master namespace]# cat Nginx-svc.yaml 
apiVersion: v1
kind: Service
Metadata:
  name: myweb
  namespace: luoahong
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30000
      targetPort: 80
  selector:
    app: myweb

部署运行

[root@master namespace]# kubectl create -f Nginx-svc.yaml
service "myweb" created
[root@master namespace]# kubectl get all --namespace=luoahong 
NAME       DESIRED   CURRENT   READY     AGE
rc/myweb   2         2         2         8m

NAME        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
svc/myweb   10.254.252.47   <nodes>       80:30000/TCP   29s

NAME             READY     STATUS    RESTARTS   AGE
po/myweb-qsml7   1/1       Running   0          8m
po/myweb-sbsw2   1/1       Running   0          8m

4、测试访问

[root@master namespace]# curl -I 192.168.118.19:30000
HTTP/1.1 200 OK
Server: Nginx/1.13.12
Date: Wed, 13 May 2020 06:33:42 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT
Connection: keep-alive
ETag: "5acb8e45-264"
Accept-Ranges: bytes

四、通过反向代理访问k8s中的应用

1、访问k8s中应用的方式

第一种:NodePort类型

type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30008

第二种:ClusterIP类型

type: ClusterIP
ports:
- port: 80
targetPort: 80

2、更新Nginx-svc.yaml

[root@k8s-master namespace]# cat Nginx-svc.yaml 
apiVersion: v1
kind: Service
Metadata:
  name: test
  namespace: luoahong
spec:
  type: NodePort

2、访问演示

http://192.168.118.18:8080/api/v1/proxy/namespaces/luoahong/services/myweb/

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐