- Getting Started with KubeEdge Installer
- Limitation
- Downloading KubeEdge Installer
- Building from source
- Installing KubeEdge Master Node (on the Cloud) component
- Installing KubeEdge Worker Node (at the Edge) component
- Reset KubeEdge Master and Worker nodes
- Simple steps to bring up KubeEdge setup and deploy a pod
- Errata
Getting Started with KubeEdge Installer
Please refer to KubeEdge Installer proposal document for details on the motivation of having KubeEdge Installer. It also explains the functionality of the proposed commands. KubeEdge Installer Doc
Limitation
- Currently support of
KubeEdge installer
is available only for Ubuntu OS. CentOS support is in-progress.
Downloading KubeEdge Installer
- Go to KubeEdge Release page and download
keadm-$VERSION-$OS-$ARCH.tar.gz.
. - Untar it at desired location, by executing
tar -xvzf keadm-$VERSION-$OS-$ARCH.tar.gz
. - kubeedge folder is created after execution the command.
Building from source
- Download the source code either by
git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge
cd $GOPATH/src/github.com/kubeedge/kubeedge/keadm
make
- Binary
keadm
is available in current path
Installing KubeEdge Master Node (on the Cloud) component
Referring to KubeEdge Installer Doc
, the command to install KubeEdge cloud component (edge controller) and pre-requisites. Port 8080, 6443 and 10000 in your cloud component needs to be accessible for your edge nodes.
- Execute
keadm init
Command flags
The optional flags with this command are mentioned below
$ keadm init --help
keadm init command bootstraps KubeEdge's cloud component.
It checks if the pre-requisites are installed already,
If not installed, this command will help in download,
install and execute on the host.
Usage:
keadm init [flags]
Examples:
keadm init
Flags:
--docker-version string[="18.06.0"] Use this key to download and use the required Docker version (default "18.06.0")
-h, --help help for init
--kubeedge-version string[="0.3.0-beta.0"] Use this key to download and use the required KubeEdge version (default "0.3.0-beta.0")
--kubernetes-version string[="1.14.1"] Use this key to download and use the required Kubernetes version (default "1.14.1")
--docker-version
, if mentioned with any version > 18.06.0, will install the same on the host. Default is 18.06.0. It is optional.--kubernetes-version
, if mentioned with any version > 1.14.1, will install the same on the host. Default is 1.14.1. It is optional. It will installkubeadm
,kubectl
andkubelet
in this host.--kubeedge-version
, if mentioned with any version > 0.2.1, will install the same on the host. Default is 0.3.0-beta.0. It is optional.
command format is
keadm init --docker-version=<expected version> --kubernetes-version=<expected version> --kubeedge-version=<expected version>
NOTE: Version mentioned as defaults for Docker and K8S are being tested with.
Installing KubeEdge Worker Node (at the Edge) component
Referring to KubeEdge Installer Doc
, the command to install KubeEdge Edge component (edge core) and pre-requisites
- Execute
keadm join <flags>
Command flags
The optional flags with this command are shown in below shell
$ keadm join --help
"keadm join" command bootstraps KubeEdge's edge component.
It checks if the pre-requisites are installed already,
If not installed, this command will help in download,
to install the prerequisites.
It will help the edge node to connect to the cloud.
Usage:
keadm join [flags]
Examples:
keadm join --cloudcoreip=<ip address> --edgenodeid=<unique string as edge identifier>
- For this command --cloudcoreip flag is a Mandatory flag
- This command will download and install the default version of pre-requisites and KubeEdge
keadm join --cloudcoreip=10.20.30.40 --edgenodeid=testing123 --kubeedge-version=0.2.1 --k8sserverip=50.60.70.80:8080
- In case, any option is used in a format like as shown for "--docker-version" or "--docker-version=", without a value
then default values will be used.
Also options like "--docker-version", and "--kubeedge-version", version should be in
format like "18.06.3" and "0.2.1".
Flags:
--docker-version string[="18.06.0"] Use this key to download and use the required Docker version (default "18.06.0")
-e, --cloudcoreip string IP address of KubeEdge cloudcore
-i, --edgenodeid string KubeEdge Node unique identification string, If flag not used then the command will generate a unique id on its own
-h, --help help for join
-k, --k8sserverip string IP:Port address of K8S API-Server
--kubeedge-version string[="0.3.0-beta.0"] Use this key to download and use the required KubeEdge version (default "0.3.0-beta.0")
- For KubeEdge flag the functionality is same as mentioned in
keadm init
- -k, –k8sserverip, It should be in the format IPAddress:Port, where the default port is 8080. Please see the example above.
IMPORTANT NOTE: The KubeEdge version used in cloud and edge side should be same.
Reset KubeEdge Master and Worker nodes
Referring to KubeEdge Installer Doc
, the command to stop KubeEdge cloud (edge controller). It doesn’t uninstall/remove any of the pre-requisites.
- Execute
keadm reset
Command flags
keadm reset --help
keadm reset command can be executed in both cloud and edge node
In master node it shuts down the cloud processes of KubeEdge
In worker node it shuts down the edge processes of KubeEdge
Usage:
keadm reset [flags]
Examples:
For master node:
keadm reset
For worker node:
keadm reset --k8sserverip 10.20.30.40:8080
Flags:
-h, --help help for reset
-k, --k8sserverip string IP:Port address of cloud components host/VM
Simple steps to bring up KubeEdge setup and deploy a pod
NOTE: All the below steps are executed as root user, to execute as sudo user ,Please add sudo infront of all the commands
1. Deploy KubeEdge CloudCore (With K8s Cluster)
Install tools with the particular version
keadm init --kubeedge-version=<kubeedge Version> --kubernetes-version=<kubernetes Version> --docker-version=<Docker version>
Install tools with the default version
keadm init --kubeedge-version= --kubernetes-version= --docker-version
or
keadm init
NOTE: On the console output, observe the below line
kubeadm join 192.168.20.134:6443 –token 2lze16.l06eeqzgdz8sfcvh –discovery-token-ca-cert-hash sha256:1e5c808e1022937474ba264bb54fea42b05eddb9fde2d35c9cad5b83cf5ef9acAfter Kubeedge init ,please note the cloudIP as highlighted above generated from console output and port is 8080.
2. Manually copy certs.tgz from cloud host to edge host(s)
On edge host
mkdir -p /etc/kubeedge
On cloud host
cd /etc/kubeedge/
scp -r certs.tgz username@ipEdgevm:/etc/kubeedge
On edge host untar the certs.tgz file
cd /etc/kubeedge
tar -xvzf certs.tgz
3. Deploy KubeEdge edge core
Install tools with the particular version
keadm join --cloudcoreip=<cloudIP> --edgenodeid=<unique string as edge identifier> --k8sserverip=<cloudIP>:8080 --kubeedge-version=<kubeedge Version> --docker-version=<Docker version>
Install tools with the default version
keadm join --cloudcoreip=<cloudIP> --edgenodeid=<unique string as edge identifier> --k8sserverip=<cloudIP>:8080 --kubeedge-version=<kubeedge Version> --docker-version=<Docker version>
Sample execution output:
# ./keadm join --cloudcoreip=192.168.20.50 --edgenodeid=testing123 --k8sserverip=192.168.20.50:8080
Same version of docker already installed in this host
Host has mosquit+ already installed and running. Hence skipping the installation steps !!!
Expected or Default KubeEdge version 0.3.0-beta.0 is already downloaded
kubeedge/
kubeedge/edge/
kubeedge/edge/conf/
kubeedge/edge/conf/modules.yaml
kubeedge/edge/conf/logging.yaml
kubeedge/edge/conf/edge.yaml
kubeedge/edge/edgecore
kubeedge/cloud/
kubeedge/cloud/cloudcore
kubeedge/cloud/conf/
kubeedge/cloud/conf/controller.yaml
kubeedge/cloud/conf/modules.yaml
kubeedge/cloud/conf/logging.yaml
kubeedge/version
KubeEdge Edge Node: testing123 successfully add to kube-apiserver, with operation status: 201 Created
Content {"kind":"Node","apiVersion":"v1","metadata":{"name":"testing123","selfLink":"/api/v1/nodes/testing123","uid":"87d8d7a3-7acd-11e9-b86b-286ed488c645","resourceVersion":"3864","creationTimestamp":"2019-05-20T07:04:37Z","labels":{"name":"edge-node"}},"spec":{"taints":[{"key":"node.kubernetes.io/not-ready","effect":"NoSchedule"}]},"status":{"daemonEndpoints":{"kubeletEndpoint":{"Port":0}},"nodeInfo":{"machineID":"","systemUUID":"","bootID":"","kernelVersion":"","osImage":"","containerRuntimeVersion":"","kubeletVersion":"","kubeProxyVersion":"","operatingSystem":"","architecture":""}}}
KubeEdge edge core is running, For logs visit /etc/kubeedge/kubeedge/edge/
#
Note:Cloud IP refers to IP generated ,from the step 1 as highlighted
4. Edge node status on cloudCore (master node) console
On cloud host run,
kubectl get nodes
NAME STATUS ROLES AGE VERSION
testing123 Ready <none> 6s 0.3.0-beta.0
Check if the edge node is in ready state
5.Deploy a sample pod from Cloud VM
https://github.com/kubeedge/kubeedge/blob/master/build/deployment.yaml
Copy the deployment.yaml from the above link in cloud host,run
kubectl create -f deployment.yaml
deployment.apps/nginx-deployment created
6.Pod status
Check the pod is up and is running state
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-d86dfb797-scfzz 1/1 Running 0 44s
Check the deployment is up and is running state
kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 1/1 1 1 63s
Errata
1.If GPG key for docker repo fail to fetch from key server. Please refer Docker GPG error fix
2.After kubeadm init, if you face any errors regarding swap memory and preflight checks please refer Kubernetes preflight error fix