kubernets-hybridnet网络配置案例、underlay pod、overlay pod、配置hybridnet 默认网络行为

570 阅读2分钟

宿主机机器清单

192.168.31.201 node01 node01.wangfei.haidian
192.168.31.202 node02 node02.wangfei.haidian
192.168.31.203 node03 node03.wangfei.haidian
192.168.31.250 master01 master01.wangfei.haidian

网络是 192.168.31.0/24

创建underlay网络并与node节点关联

为node主机添加underlay network标签

kubectl label node node01.wangfei.haidian network=underlay-nethost
kubectl label node node02.wangfei.haidian network=underlay-nethost
kubectl label node node03.wangfei.haidian network=underlay-nethost

创建network

宿主机的网络就是192.168.31.0/24

---
apiVersion: networking.alibaba.com/v1
kind: Network
metadata:
  name: underlay-network1
spec:
  netID: 0
  type: Underlay
  nodeSelector:
    network: "underlay-nethost"

---
apiVersion: networking.alibaba.com/v1
kind: Subnet
metadata:
  name: underlay-network1 
spec:
  network: underlay-network1
  netID: 0
  range:
    version: "4"
    cidr: "192.168.31.0/24"
    gateway: "192.168.31.1"     # 外部网关地址
    start: "192.168.31.100"
    end: "192.168.31.200"

image.png

测试创建overlay pod

kubectl create ns myserver

创建overlay pod

kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    app: myserver-tomcat-app1-deployment-overlay-label
  name: myserver-tomcat-app1-deployment-overlay
  namespace: myserver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myserver-tomcat-app1-overlay-selector
  template:
    metadata:
      labels:
        app: myserver-tomcat-app1-overlay-selector
    spec:
      nodeName: node02.wangfei.haidian
      containers:
      - name: myserver-tomcat-app1-container
        #image: tomcat:7.0.93-alpine 
        image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-app1:v1 
        imagePullPolicy: IfNotPresent
        ##imagePullPolicy: Always
        ports:
        - containerPort: 8080
          protocol: TCP
          name: http
        env:
        - name: "password"
          value: "123456"
        - name: "age"
          value: "18"
#        resources:
#          limits:
#            cpu: 0.5
#            memory: "512Mi"
#          requests:
#            cpu: 0.5
#            memory: "512Mi"

---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: myserver-tomcat-app1-service-overlay-label
  name: myserver-tomcat-app1-service-overlay
  namespace: myserver
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
    nodePort: 30003
  selector:
    app: myserver-tomcat-app1-overlay-selector

image.png

需要通过servive nodeport访问

image.png

创建underlay pod

kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
  labels:
    app: myserver-tomcat-app1-deployment-underlay-label
  name: myserver-tomcat-app1-deployment-underlay
  namespace: myserver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myserver-tomcat-app1-underlay-selector
  template:
    metadata:
      labels:
        app: myserver-tomcat-app1-underlay-selector
      annotations: #使用Underlay或者Overlay网络
        networking.alibaba.com/network-type: Underlay
    spec:
      #nodeName: k8s-node2.example.com
      containers:
      - name: myserver-tomcat-app1-container
        #image: tomcat:7.0.93-alpine 
        image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-app1:v2 
        imagePullPolicy: IfNotPresent
        ##imagePullPolicy: Always
        ports:
        - containerPort: 8080
          protocol: TCP
          name: http
        env:
        - name: "password"
          value: "123456"
        - name: "age"
          value: "18"
#        resources:
#          limits:
#            cpu: 0.5
#            memory: "512Mi"
#          requests:
#            cpu: 0.5
#            memory: "512Mi"

---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: myserver-tomcat-app1-service-underlay-label
  name: myserver-tomcat-app1-service-underlay
  namespace: myserver
spec:
#  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
    #nodePort: 40003
  selector:
    app: myserver-tomcat-app1-underlay-selector

创建出来的pod使用了192.168.31.100的地址 这个是宿主机所在的网络

image.png

image.png

通过service访问 underlay的pod

underlay的pod 重建后 ip地址可能会变动

配置hybridnet 默认网络行为

默认为overlay 网络,如果使用underlay的pod比较多,也可以修改为在创建pod的时候,没有指定使用网络类型的pod默认使用underlay网络

默认网络行为从underlay修改为Overlay:

helm upgrade hybridnet hybridnet/hybridnet -n kube-system --set defualtNetworkType=Overlay

或者修改配置文件

kubectl edit deploy hybridnet-webhook -n kube-system
env:
- name: DEFAULT_NETWORK_TYPE
  value: Overlay
kubectl edit deploy hybridnet-manager -n kube-system
env:
- name: DEFAULT_NETWORK_TYPE
  value: Overlay