From 0bb395838f2fcb32b9c57d362e204c2b6938e221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=93=AD?= Date: Mon, 28 Feb 2022 09:45:54 +0800 Subject: [PATCH] Add Kubernetes v1.20.2 on openEuler 21.09 --- kubernetes/1.20.2/21.09/Dockerfile | 48 +++++++++++ kubernetes/README.md | 129 +++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 kubernetes/1.20.2/21.09/Dockerfile create mode 100644 kubernetes/README.md diff --git a/kubernetes/1.20.2/21.09/Dockerfile b/kubernetes/1.20.2/21.09/Dockerfile new file mode 100644 index 0000000..f1d2be6 --- /dev/null +++ b/kubernetes/1.20.2/21.09/Dockerfile @@ -0,0 +1,48 @@ +ARG KUBE_BINARY + +ARG KUBE_GIT_MAJOR=1 + +ARG KUBE_GIT_MINOR=20 + +ARG KUBE_GIT_VERSION=1.20.2 + +FROM hub.oepkgs.net/openeuler/openeuler:21.09 AS build + +ARG KUBE_BINARY + +ARG KUBE_GIT_MAJOR + +ARG KUBE_GIT_MINOR + +ARG KUBE_GIT_VERSION + +RUN /usr/bin/yum install golang-1.15.7-2.oe1 rsync make --disablerepo EPOL -y + +WORKDIR /root/go/src/k8s.io + +RUN /usr/bin/git clone -b openEuler-21.09 --depth=1 https://gitee.com/src-openeuler/kubernetes.git + +WORKDIR /root/go/src/k8s.io/kubernetes + +RUN /usr/bin/tar -xzf v${KUBE_GIT_VERSION}.tar.gz + +WORKDIR /root/go/src/k8s.io/kubernetes/kubernetes-${KUBE_GIT_VERSION} + +RUN /usr/bin/make generated_files + +WORKDIR /root/go/src/k8s.io/kubernetes/kubernetes-${KUBE_GIT_VERSION}/cmd/${KUBE_BINARY} + +RUN /usr/bin/go build -x -ldflags='-X k8s.io/component-base/version.gitVersion='v${KUBE_GIT_VERSION}'-openEuler -X k8s.io/client-go/pkg/version.gitVersion='v${KUBE_GIT_VERSION}'-openEuler -X k8s.io/component-base/version.gitMajor='${KUBE_GIT_MAJOR}' -X k8s.io/client-go/pkg/version.gitMajor='${KUBE_GIT_MAJOR}' -X k8s.io/component-base/version.gitMinor='${KUBE_GIT_MINOR}' -X k8s.io/client-go/pkg/version.gitMinor='${KUBE_GIT_MINOR}'' + +FROM hub.oepkgs.net/openeuler/openeuler:21.09 + +LABEL org.opencontainers.image.authors="liuming " + +ARG KUBE_BINARY + +ARG KUBE_GIT_VERSION + +COPY --from=build /root/go/src/k8s.io/kubernetes/kubernetes-${KUBE_GIT_VERSION}/cmd/${KUBE_BINARY}/${KUBE_BINARY} /usr/local/bin/${KUBE_BINARY} + +RUN /usr/bin/rm -r /etc/ssl/certs && \ + /usr/bin/yum install iptables --disablerepo EPOL -y diff --git a/kubernetes/README.md b/kubernetes/README.md new file mode 100644 index 0000000..253c7dc --- /dev/null +++ b/kubernetes/README.md @@ -0,0 +1,129 @@ +# Kubernetes + +## Quick reference + +- The official Kubernetes docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +## Build reference + +```shell +docker buildx build -t openeuler2k8s/kube-apiserver:v1.20.2-openEuler2109 --build-arg KUBE_BINARY=kube-apiserver --platform=linux/arm64,linux/amd64 . --push +docker buildx build -t openeuler2k8s/kube-controller-manager:v1.20.2-openEuler2109 --build-arg KUBE_BINARY=kube-controller-manager --platform=linux/arm64,linux/amd64 . --push +docker buildx build -t openeuler2k8s/kube-scheduler:v1.20.2-openEuler2109 --build-arg KUBE_BINARY=kube-scheduler --platform=linux/arm64,linux/amd64 . --push +docker buildx build -t openeuler2k8s/kube-proxy:v1.20.2-openEuler2109 --build-arg KUBE_BINARY=kube-proxy --platform=linux/arm64,linux/amd64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +## Deploy Kubernetes + +> Kubernetes v1.20.2 on openEuler 21.09 Testing Report + +### Before you begin + +- Start 3 x86_64 servers and 3 aarch64 servers on HUAWEI CLOUD +- [Install Docker Engine](https://docs.docker.com/engine/install/) +- [Install Kubeadm v1.20.2](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/) + +### Testing Env Table + +| Arch | Hostname | Specification | EIP | Private IP | +| :----: | :----: | :----: | :----: | :----: | +| x86_64(amd64) | amd64-k8s0 | c6s.large.2 | 116.63.177.179 | 192.168.0.47 | +| x86_64(amd64) | amd64-k8s1 | c6s.large.2 | 122.9.153.240 | 192.168.0.28 | +| x86_64(amd64) | amd64-k8s2 | c6s.large.2 | 116.63.161.162 | 192.168.0.127 | +| aarch64(arm64) | arm64-k8s0 | kc1.large.2 | 122.9.151.115 | 192.168.0.2 | +| aarch64(arm64) | arm64-k8s1 | kc1.large.2 | 139.9.158.136 | 192.168.0.31 | +| aarch64(arm64) | arm64-k8s2 | kc1.large.2 | 116.63.184.18 | 192.168.0.150 | + +### x86_64: Deploy Control Plane + +- Hostname: amd64-k8s0 + +```shell +kubeadm init --image-repository openeuler2k8s --kubernetes-version v1.20.2-openEuler2109 +mkdir -p $HOME/.kube +sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config +sudo chown $(id -u):$(id -g) $HOME/.kube/config +``` + +### x86_64: Deploy Work Plane + +- Hostname: amd64-k8s1/amd64-k8s2 + +```shell +kubeadm join 192.168.0.47:6443 --token 6tcun6.89trlh4tioxkyv3o --discovery-token-ca-cert-hash sha256:cc71b5eeef33f839df3f3eb1242ae7de80247a83bae9698be3c6bf86f8c22433 +``` + +### x86_64: Attach Network Addon + +- Hostname: amd64-k8s0 + +```shell +helm repo add cilium https://helm.cilium.io/ +helm install cilium cilium/cilium --version 1.11.1 --namespace kube-system +``` + +### x86_64: Verify Nodes Status to Ready + +- Hostname: amd64-k8s0 + +```shell +$ kubectl get nodes +NAME STATUS ROLES AGE VERSION +amd64-k8s0 Ready control-plane,master 3m6s v1.20.2 +amd64-k8s1 Ready 69s v1.20.2 +amd64-k8s2 Ready 49s v1.20.2 +``` + +### aarch64: Deploy Control Plane + +- Hostname: arm64-k8s0 + +```shell +kubeadm init --image-repository openeuler2k8s --kubernetes-version v1.20.2-openEuler2109 +mkdir -p $HOME/.kube +sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config +sudo chown $(id -u):$(id -g) $HOME/.kube/config +``` + +### aarch64: Deploy Work Plane + +- Hostname: arm64-k8s1/arm64-k8s2 + +```shell +kubeadm join 192.168.0.2:6443 --token lht0xh.6xdhjvqu47ifye1p --discovery-token-ca-cert-hash sha256:7ba9fda1b472596d5ae1521a401af54f7c6daf99b706b02bbffbd8b08e9d0fb7 +``` + +### aarch64: Attach Network Addon + +- Hostname: arm64-k8s0 + +```shell +helm repo add cilium https://helm.cilium.io/ +helm install cilium cilium/cilium --version 1.11.1 --namespace kube-system +``` + +### aarch64: Verify Nodes Status to Ready + +- Hostname: arm64-k8s0 + +```shell +$ kubectl get nodes +NAME STATUS ROLES AGE VERSION +aarch64-host0 Ready control-plane,master 3m36s v1.20.2 +aarch64-host1 Ready 2m3s v1.20.2 +aarch64-host2 Ready 104s v1.20.2 +``` + +## Supported tags and respective Dockerfile links + +- [v1.20.2-openEuler2109](./1.20.2/21.09/Dockerfile): kubernetes v1.20.2, openEuler 21.09 + +## Operating System + +Linux/Unix, aarch64(arm64) or x86_64(amd64) architecture. -- Gitee