Skip to content

Commit

Permalink
chore: prepare for release 1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
oilbeater committed May 30, 2020
1 parent b239d59 commit 4342187
Show file tree
Hide file tree
Showing 16 changed files with 86 additions and 728 deletions.
19 changes: 9 additions & 10 deletions .github/workflows/build-x86-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ jobs:
- name: Build
run: make release

# - name: Init Kind
# run: |
# sudo make kind-init
#
# - name: Run E2E
# run: |
# sudo kubectl cluster-info
# sudo chmod 666 /home/runner/.kube/config
# make e2e
- name: Init Kind
run: |
sudo make kind-init
- name: Run E2E
run: |
sudo kubectl cluster-info
sudo chmod 666 /home/runner/.kube/config
make e2e
- name: Push
env:
Expand All @@ -61,6 +61,5 @@ jobs:
cat VERSION
TAG=$(cat VERSION)
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
docker tag index.alauda.cn/alaudak8s/kube-ovn:$TAG kubeovn/kube-ovn:$TAG
docker images
docker push kubeovn/kube-ovn:$TAG
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
# CHANGELOG

## v1.2.0 -- 2020/05/30

### New Feature
* Kube-OVN now supports OVS-DPDK, high performance dpdk application can run in pod
* Kube-OVN now supports vlan underlay network to achieve better network performance
* Kube—OVN now supports using BGP to announce Pod IP routes to external network
* Subnet validator will check if subnet CIDR conflicts with svc or node CIDR
* Subnet CIDR can be changed after creation
* When subnet gateway changed, routes will aromatically changed


### Monitoring
* Check if dns and kubernetes svc exist
* Make grafana dashboard more sensitive to changes

### Misc
* Patch upstream ovn to reduce lflow count
* Add support for arm64 platform
* Add support for kubernetes 1.18
* Use github action to perform CI tasks
* Optimize some log information
* Move image to dockerhub


### Bugfix:
* OVS local interface table mac_in_use row is lower case, but pod annotation store mac in Upper case
* fork go-ping to fix ping lost issues
* Networkpolicy controller will panic if label is nil
* Some concurrent panic when handle pod and subnet update
* Some IPv6 break issues
* Use kubectl version to avoid handshake errors in apiserver

## v1.1.1 -- 2020/04/27

This release fix bugs found in v1.1.0.
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
GOFILES_NOVENDOR=$(shell find . -type f -name '*.go' -not -path "./vendor/*")
GO_VERSION=1.14

REGISTRY=index.alauda.cn/alaudak8s
REGISTRY=kubeovn
DEV_TAG=dev
RELEASE_TAG=$(shell cat VERSION)

Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ The Kube-OVN community is waiting for you participation!
- **BGP Support**: Pod IP can be exposed to external by BGP router protocol.
- **Traffic Mirror**: Duplicated container network traffic for monitoring, diagnosing and replay.
- **Vlan Support**: Kube-OVN also support underlay Vlan mode network for better performance and throughput.
- **DPDK Support**: DPDK application now can run in Pod with OVS-DPDK.
- **IPv6 Support**: Kube-OVN supports ipv6-only mode pod network.
- **ARM Support**: Kube-OVN can run on x86_64 and arm64 platforms.
- **TroubleShooting Tools**: Handy tools to diagnose, trace, monitor and dump container network traffic to help troubleshooting complicate network issues.
Expand Down Expand Up @@ -68,6 +69,7 @@ If you want to install Kubernetes from scratch, you can try [kubespray](https://
- [BGP support](docs/bgp.md)
- [Multi NIC Support](docs/multi-nic.md)
- [Vlan Support](docs/vlan.md)
- [DPDK Support](docs/dpdk.md)
- [Traffic Mirror](docs/mirror.md)
- [Webhook](docs/webhook.md)
- [IPv6](docs/ipv6.md)
Expand Down Expand Up @@ -95,10 +97,10 @@ to some other options to give users a better understanding to assess which netwo
[ovn-kubernetes](https://github.com/ovn-org/ovn-kubernetes) is developed by the ovn community to integration ovn for Kubernetes. As both projects use OVN/OVS as the data plane, they have some same function sets and architecture. The main differences come from the network topology and gateway implementation.

ovn-kubernetes implements a subnet-per-node network topology.
That means each node will have a fixed cidr range and the ip allocation is fulfilled by each node when the pod has been invoked by kubelet.
That means each node will have a fixed cidr range, and the ip allocation is fulfilled by each node when the pod has been invoked by kubelet.

Kube-OVN implements a subnet-per-namespace network topology.
That means a cidr can spread the entire cluster nodes, and the ip allocation is done by kube-ovn-controller at a central place. And then kube-ovn can apply lots of network configurations at subnet level, like cidr, gw, exclude_ips, nat and so on. This topology also gives Kube-OVN more ability to control how ip should be allocated, on top of this topology, Kube-OVN can allocate static ip for workloads.
That means a cidr can spread the entire cluster nodes, and the ip allocation is fulfilled by kube-ovn-controller at a central place. And then kube-ovn can apply lots of network configurations at subnet level, like cidr, gw, exclude_ips, nat and so on. This topology also gives Kube-OVN more ability to control how ip should be allocated, on top of this topology, Kube-OVN can allocate static ip for workloads.

We believe the subnet-per-namespace topology will give more flexibility to evolve the network.

Expand All @@ -112,6 +114,6 @@ Kube-OVN uses policy-route, ipset and iptables to implement the gateway function

The main difference from the design point is the encapsulation method. Calico use no encapsulation or lightweight IPIP encapsulation and Kube-OVN uses geneve to encapsulate packets. No encapsulation can achieve better network performance for both throughput and latency. However, as this method will expose pod network directly to the underlay network with it comes with the burden on deploy and maintain. In some managed network environment where BGP and IPIP is not allowed, encapsulation is a must.

Use encapsulation can lower the requirement on network, and isolate container and underlay network from logical. We can use the overlay technology to build a much complex network concept, like router, gateway, and vpc. For performance, ovs can make use of hardware offload and DPDK to enhance throughput and latency.
Use encapsulation can lower the requirement on networking, and isolate containers and underlay network from logical. We can use the overlay technology to build a much complex network concept, like router, gateway, and vpc. For performance, ovs can make use of hardware offload and DPDK to enhance throughput and latency.

From the function set, Kube-OVN can offer some more abilities like static ip, QoS and traffic mirror. The subnet in Kube-OVN and ippool in Calico share some same function set.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.2.0-pre
v1.2.0
8 changes: 2 additions & 6 deletions dist/images/install.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail

REGISTRY="index.alauda.cn/alaudak8s"
REGISTRY="kubeovn"
NAMESPACE="kube-system" # The ns to deploy kube-ovn
POD_CIDR="10.16.0.0/16" # Do NOT overlap with NODE/SVC/JOIN CIDR
EXCLUDE_IPS="" # EXCLUDE_IPS for default subnet
Expand Down Expand Up @@ -188,10 +188,6 @@ spec:
EOF

if $DPDK; then
# TODO: Once kube-ovn-dpdk image is built and hosted on the registry
# update the pod image
# from: "garyloug/kube-ovn-dpdk:$DPDK_VERSION"
# to: "$REGISTRY/kube-ovn-dpdk:$DPDK_VERSION"
cat <<EOF > ovn.yaml
apiVersion: v1
kind: ConfigMap
Expand Down Expand Up @@ -465,7 +461,7 @@ spec:
hostPID: true
containers:
- name: openvswitch
image: "garyloug/kube-ovn-dpdk:$DPDK_VERSION"
image: "kubeovn/kube-ovn-dpdk:$DPDK_VERSION"
imagePullPolicy: $IMAGE_PULL_POLICY
command: ["/kube-ovn/start-ovs-dpdk.sh"]
securityContext:
Expand Down
31 changes: 16 additions & 15 deletions docs/dpdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,22 @@ Hugepagesize: 1048576 kB

## To Install

<!---
NOTE: Once PR is merged, it should no longer be necessary to clone the repo.
It should be possible to wget and run the install script as described in the Kube-OVN install document:
https://github.com/alauda/kube-ovn/blob/master/docs/install.md
TODO: Update once PR is merged.
-->

1. Clone the Kube-OVN repo
`git clone https://github.com/alauda/kube-ovn.git`

2. Navigate to the directory containing the install script
`cd kube-ovn/dist/images/`
1. Download the installation script:
`wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/dist/images/install.sh`

2. Use vim to edit the script variables to meet your requirement
```bash
REGISTRY="index.alauda.cn/alaudak8s"
NAMESPACE="kube-system" # The ns to deploy kube-ovn
POD_CIDR="10.16.0.0/16" # Do NOT overlap with NODE/SVC/JOIN CIDR
SVC_CIDR="10.96.0.0/12" # Do NOT overlap with NODE/POD/JOIN CIDR
JOIN_CIDR="100.64.0.0/16" # Do NOT overlap with NODE/POD/SVC CIDR
LABEL="node-role.kubernetes.io/master" # The node label to deploy OVN DB
IFACE="" # The nic to support container network, if empty will use the nic that the default route use
VERSION="v1.1.0"
```

3. Run the install script making sure to include the flag --with-dpdk= followed by the required DPDK version.
3. Run the installation script making sure to include the flag --with-dpdk= followed by the required DPDK version.
`bash install.sh --with-dpdk=19.11`
>**Note:** Current supported version is DPDK 19.11
Expand All @@ -70,7 +71,7 @@ There is now a containerized instance of OVS-DPDK running on the node. Kube-OVN


### Download, build and install Userspace CNI
>**Note:** These steps assume Go is already installed and the GOPATH env var is set.
>**Note:** These steps assume Go has already been installed, and the GOPATH env var has been set.
1. `go get github.com/intel/userspace-cni-network-plugin`
2. `cd $GOPATH/src/github.com/intel/userspace-cni-network-plugin`
4. `make clean`
Expand Down
8 changes: 4 additions & 4 deletions yamls/kube-ovn-ipv6.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ spec:
hostNetwork: true
containers:
- name: kube-ovn-controller
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
imagePullPolicy: IfNotPresent
command:
- /kube-ovn/start-controller.sh
Expand Down Expand Up @@ -110,7 +110,7 @@ spec:
hostPID: true
initContainers:
- name: install-cni
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
imagePullPolicy: IfNotPresent
command: ["/kube-ovn/install-cni.sh"]
securityContext:
Expand All @@ -123,7 +123,7 @@ spec:
name: cni-bin
containers:
- name: cni-server
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
command: ["sh", "/kube-ovn/start-cniserver.sh"]
args:
- --enable-mirror=false
Expand Down Expand Up @@ -206,7 +206,7 @@ spec:
hostPID: true
containers:
- name: pinger
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
imagePullPolicy: IfNotPresent
command: ["/kube-ovn/kube-ovn-pinger"]
securityContext:
Expand Down
8 changes: 4 additions & 4 deletions yamls/kube-ovn-pre17.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ spec:
hostNetwork: true
containers:
- name: kube-ovn-controller
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
imagePullPolicy: IfNotPresent
command:
- /kube-ovn/start-controller.sh
Expand Down Expand Up @@ -108,7 +108,7 @@ spec:
hostPID: true
initContainers:
- name: install-cni
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
imagePullPolicy: IfNotPresent
command: ["/kube-ovn/install-cni.sh"]
securityContext:
Expand All @@ -121,7 +121,7 @@ spec:
name: cni-bin
containers:
- name: cni-server
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
imagePullPolicy: IfNotPresent
command:
- sh
Expand Down Expand Up @@ -216,7 +216,7 @@ spec:
hostPID: true
containers:
- name: pinger
image: "index.alauda.cn/alaudak8s/kube-ovn:v1.1.0"
image: "kubeovn/kube-ovn:v1.2.0"
command: ["/kube-ovn/kube-ovn-pinger", "--external-address=114.114.114.114"]
imagePullPolicy: IfNotPresent
securityContext:
Expand Down

0 comments on commit 4342187

Please sign in to comment.