kubeedge 安装部署(适用于Ubuntu)「建议收藏」

kubeedge 安装部署(适用于Ubuntu)「建议收藏」kubeedge安装部署(适用于Ubuntu)基础环境:安装了Ubuntu18.04操作系统的两台虚拟机(查看操作系统版本命令:cat/etc/os-release)部署kubeedge1.1.0版本根据keadm源码安装部署步骤整理(无法直接使用keadm工具完成部署)一、配置源,写入以下内容到/etc/apt/sources.listroot@ubuntu:…

大家好,又见面了,我是你们的朋友全栈君。

kubeedge 安装部署(适用于Ubuntu)

  • 基础环境:安装了Ubuntu 18.04操作系统的两台虚拟机 (查看操作系统版本命令:cat /etc/os-release)

  • 部署kubeedge1.1.0版本

  • 根据keadm源码安装部署步骤整理(无法直接使用keadm工具完成部署)

一、配置源,写入以下内容到 /etc/apt/sources.list

root@ubuntu:~# cat /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

root@ubuntu:~# apt-get update

二、安装 docker

root@ubuntu:~# apt-get update
root@ubuntu:~# 
root@ubuntu:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add
OK
root@intellif-edge:~# cat /etc/apt/sources.list.d/docker.list 
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
root@ubuntu:~# 
root@intellif-edge:~# apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
root@ubuntu:~# apt-cache madison 'docker-ce' | grep 19.03.4 | head -1 | awk '{$1=$1};1' | cut -d' ' -f 3
5:19.03.4~3-0~ubuntu-bionic
root@ubuntu:~# 
root@ubuntu:~# apt-get install -y --allow-change-held-packages --allow-downgrades docker-ce=5:19.03.4~3-0~ubuntu-bionic
root@ubuntu:~# 
root@ubuntu:~# systemctl enable docker

三、安装 kubeadm kubelet kubectl

root@ubuntu:~# cat /etc/apt/sources.list.d/kubernetes.list 
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
root@ubuntu:~# 
root@ubuntu:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
root@ubuntu:~# apt-get update

root@ubuntu:~# apt-cache madison 'kubeadm' | grep 1.16.2 | head -1 | awk '{$1=$1};1' | cut -d' ' -f 3
1.16.2-00
root@ubuntu:~# apt-get install -y --allow-change-held-packages --allow-downgrades kubeadm=1.16.2-00 kubelet=1.16.2-00 kubectl=1.16.2-00

四、kubeedge证书生成

  1. 准备生成证书脚本,将如下生成证书的脚本写入到/etc/kubeedge/certgen.sh
#!/bin/sh

readonly caPath=${CA_PATH:-/etc/kubeedge/ca}
readonly caSubject=${CA_SUBJECT:-/C=CN/ST=Zhejiang/L=Hangzhou/O=KubeEdge/CN=kubeedge.io}
readonly certPath=${CERT_PATH:-/etc/kubeedge/certs}
readonly subject=${SUBJECT:-/C=CN/ST=Zhejiang/L=Hangzhou/O=KubeEdge/CN=kubeedge.io}

genCA() { 
   
    openssl genrsa -des3 -out ${caPath}/rootCA.key -passout pass:kubeedge.io 4096
    openssl req -x509 -new -nodes -key ${caPath}/rootCA.key -sha256 -days 3650 \
    -subj ${subject} -passin pass:kubeedge.io -out ${caPath}/rootCA.crt
}

ensureCA() { 
   
    if [ ! -e ${caPath}/rootCA.key ] || [ ! -e ${caPath}/rootCA.crt ]; then
        genCA
    fi
}

ensureFolder() { 
   
    if [ ! -d ${caPath} ]; then
        mkdir -p ${caPath}
    fi
    if [ ! -d ${certPath} ]; then
        mkdir -p ${certPath}
    fi
}

genCertAndKey() { 
   
    ensureFolder
    ensureCA
    local name=$1
    openssl genrsa -out ${certPath}/${name}.key 2048
    openssl req -new -key ${certPath}/${name}.key -subj ${subject} -out ${certPath}/${name}.csr
    openssl x509 -req -in ${certPath}/${name}.csr -CA ${caPath}/rootCA.crt -CAkey ${caPath}/rootCA.key \
    -CAcreateserial -passin pass:kubeedge.io -out ${certPath}/${name}.crt -days 365 -sha256
}

buildSecret() { 
   
    local name="edge"
    genCertAndKey ${name} > /dev/null 2>&1
    cat <<EOF apiVersion: v1 kind: Secret metadata: name: cloudcore namespace: kubeedge labels: k8s-app: kubeedge kubeedge: cloudcore stringData: rootCA.crt: | $(pr -T -o 4 ${ 
     caPath}/rootCA.crt) edge.crt: | $(pr -T -o 4 ${ 
     certPath}/${ 
     name}.crt) edge.key: | $(pr -T -o 4 ${ 
     certPath}/${ 
     name}.key) EOF
}

$1 $2
  1. 生成证书、压缩证书
root@ubuntu:/etc/kubeedge# chmod +x certgen.sh 
root@ubuntu:/etc/kubeedge# bash certgen.sh genCertAndKey edge
root@ubuntu:/etc/kubeedge# tar -cvzf certs.tgz certs/

五、启动 Kubernetes

1、使用kubeadm部署k8s

root@ubuntu:/etc/kubeedge# swapoff -a && kubeadm init --image-repository "registry.cn-hangzhou.aliyuncs.com/google_containers" --pod-network-cidr=100.64.0.0/10
root@ubuntu:/etc/kubeedge# 
root@ubuntu:/etc/kubeedge# kubectl get pod --all-namespaces -o wide
The connection to the server localhost:8080 was refused - did you specify the right host or port?
root@ubuntu:/etc/kubeedge# 
root@ubuntu:/etc/kubeedge# mkdir -p $HOME/.kube && cp -r /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
root@ubuntu:/etc/kubeedge# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE     IP              NODE     NOMINATED NODE   READINESS GATES
kube-system   coredns-67c766df46-7wrjq         0/1     Pending   0          11m     <none>          <none>   <none>           <none>
kube-system   coredns-67c766df46-kjffq         0/1     Pending   0          11m     <none>          <none>   <none>           <none>
kube-system   etcd-ubuntu                      1/1     Running   0          10m     192.168.11.56   ubuntu   <none>           <none>
kube-system   kube-apiserver-ubuntu            1/1     Running   0          10m     192.168.11.56   ubuntu   <none>           <none>
kube-system   kube-controller-manager-ubuntu   1/1     Running   0          9m55s   192.168.11.56   ubuntu   <none>           <none>
kube-system   kube-proxy-dcvz6                 1/1     Running   0          11m     192.168.11.56   ubuntu   <none>           <none>
kube-system   kube-scheduler-ubuntu            1/1     Running   0          10m     192.168.11.56   ubuntu   <none>           <none>
root@ubuntu:/etc/kubeedge# 

2、修改kubelet启动参数,不适用cni插件

root@ubuntu:/var/lib/kubelet# cat /var/lib/kubelet/kubeadm-flags.env 
KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 --resolv-conf=/run/systemd/resolve/resolv.conf"
#KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 --resolv-conf=/run/systemd/resolve/resolv.conf"
root@ubuntu:/var/lib/kubelet# systemctl restart kubelet

六、启动 kubeedge 云端部分 cloudcore

  1. 下载 kubeedge 1.1.0 版本安装包
root@ubuntu:~# mkdir -p /etc/kubeedge/
root@ubuntu:~# cd /etc/kubeedge
root@ubuntu:/etc/kubeedge# wget -k --no-check-certificate https://github.com/kubeedge/kubeedge/releases/download/v1.1.0/kubeedge-v1.1.0-linux-amd64.tar.gz
root@ubuntu:/etc/kubeedge# tar -C /etc/kubeedge/ -xzvf kubeedge-v1.1.0-linux-amd64.tar.gz
root@ubuntu:/etc/kubeedge# mv kubeedge-v1.1.0-linux-amd64 kubeedge
root@ubuntu:/etc/kubeedge# cp kubeedge/cloud/cloudcore /usr/local/bin/.
  1. 修改配置 cloudcore的 文件/etc/kubeedge/kubeedge/cloud/cloudcore/conf/controller.yaml
controller:
  kube:
    master: https://192.168.11.56:6443 # 修改为对应IP
    namespace: ""
    content_type: "application/vnd.kubernetes.protobuf"
    qps: 5
    burst: 10
    node_update_frequency: 10
    kubeconfig: "/root/.kube/config"   
cloudhub:
  protocol_websocket: true # enable websocket protocol
  port: 10000 # open port for websocket server
  protocol_quic: true # enable quic protocol
  quic_port: 10001 # open prot for quic server
  max_incomingstreams: 10000 # the max incoming stream for quic server
  enable_uds: true # enable unix domain socket protocol
  uds_address: unix:///var/lib/kubeedge/kubeedge.sock # unix domain socket address
  address: 0.0.0.0
  ca: /etc/kubeedge/ca/rootCA.crt
  cert: /etc/kubeedge/certs/edge.crt
  key: /etc/kubeedge/certs/edge.key
  keepalive-interval: 30
  write-timeout: 30
  node-limit: 10
devicecontroller:
  kube:
    master: https://192.168.11.56:6443 # 修改为对应IP
    namespace: ""
    content_type: "application/vnd.kubernetes.protobuf"
    qps: 5
    burst: 10
    kubeconfig: "/root/.kube/config"
  1. 启动cloudcore进程
root@ubuntu:/etc/kubeedge/kubeedge/cloud/cloudcore# cp /etc/kubeedge/kubeedge/cloud/cloudcore/cloudcore /usr/local/bin/.
root@ubuntu:/etc/kubeedge/kubeedge/cloud/cloudcore# export GOARCHAIUS_CONFIG_PATH=/etc/kubeedge/kubeedge/cloud/cloudcore
root@ubuntu:/etc/kubeedge/kubeedge/cloud/cloudcore# chmod +x /usr/local/bin/cloudcore && cloudcore > /etc/kubeedge/kubeedge/cloud/cloudcore/cloudcore.log 2>&1 &

七、启动 kubeedge 边缘部分 edgecore

  1. 修改配置 edgecore的配置文件/etc/kubeedge/kubeedge/edge/conf/edge.yaml
    可以统一替换: fb4ebb70-2783-42b8-b3ef-63e2fd6d242e (节点名称)
mqtt:
    server: tcp://127.0.0.1:1883 # external mqtt broker url.
    internal-server: tcp://127.0.0.1:1884 # internal mqtt broker url.
    mode: 0 # 0: internal mqtt broker enable only. 1: internal and external mqtt broker enable. 2: external mqtt broker enable only.
    qos: 0 # 0: QOSAtMostOnce, 1: QOSAtLeastOnce, 2: QOSExactlyOnce.
    retain: false # if the flag set true, server will store the message and can be delivered to future subscribers.
    session-queue-size: 100 # A size of how many sessions will be handled. default to 100.

edgehub:
    websocket:
        url: wss://0.0.0.0:10000/e632aba927ea4ac2b575ec1603d56f10/fb4ebb70-2783-42b8-b3ef-63e2fd6d242e/events
        certfile: /etc/kubeedge/certs/edge.crt
        keyfile: /etc/kubeedge/certs/edge.key
        handshake-timeout: 30 #second
        write-deadline: 15 # second
        read-deadline: 15 # second
    quic:
        url: 127.0.0.1:10001
        cafile: /etc/kubeedge/ca/rootCA.crt
        certfile: /etc/kubeedge/certs/edge.crt
        keyfile: /etc/kubeedge/certs/edge.key
        handshake-timeout: 30 #second
        write-deadline: 15 # second
        read-deadline: 15 # second
    controller:
        protocol: websocket # websocket, quic
        heartbeat: 15  # second
        project-id: e632aba927ea4ac2b575ec1603d56f10
        node-id: fb4ebb70-2783-42b8-b3ef-63e2fd6d242e

edged:
    register-node-namespace: default
    hostname-override: fb4ebb70-2783-42b8-b3ef-63e2fd6d242e
    interface-name: eth0
    edged-memory-capacity-bytes: 7852396000
    node-status-update-frequency: 10 # second
    device-plugin-enabled: false
    gpu-plugin-enabled: false
    image-gc-high-threshold: 80 # percent
    image-gc-low-threshold: 40 # percent
    maximum-dead-containers-per-container: 1
    docker-address: unix:///var/run/docker.sock
    runtime-type: docker
    remote-runtime-endpoint: unix:///var/run/dockershim.sock
    remote-image-endpoint: unix:///var/run/dockershim.sock
    runtime-request-timeout: 2
    podsandbox-image: kubeedge/pause:3.1 # kubeedge/pause:3.1 for x86 arch , kubeedge/pause-arm:3.1 for arm arch, kubeedge/pause-arm64 for arm64 arch
    image-pull-progress-deadline: 60 # second
    cgroup-driver: cgroupfs
    node-ip: ""
    cluster-dns: ""
    cluster-domain: ""

mesh:
    loadbalance:
        strategy-name: RoundRobin

2、创建node,启动edgecore进程

root@ubuntu:# kubectl apply -f node.json

node.json内容(注意 metadata.name 需要和 edge.yaml 中一致)

{ 
   
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": { 
   
    "name": "fb4ebb70-2783-42b8-b3ef-63e2fd6d242e",
    "labels": { 
   
      "name": "edge-node",
      "node-role.kubernetes.io/edge": ""
    }
  }
}

root@ubuntu:/etc/kubeedge/kubeedge/edge/conf# export GOARCHAIUS_CONFIG_PATH=/etc/kubeedge/kubeedge/edge && edgecore > /etc/kubeedge/kubeedge/edge/edgecore.log 2>&1 &
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162714.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Altium Designer 入门教程

    Altium Designer 入门教程注:使用了引用语法但不是引用:以下内容有部分来源于网络、博客等等,结尾会给出参考链接。(๑•ั็ω•็ั๑)希望大家可以自觉的在转载、转发时著名出处。(๑•.•๑)预防侵权,支持原创,支持开源,从你我做起。= ̄ω ̄=放在开始如果您喜欢我的文章,拜托点赞+收藏+关注,博主会根据大家喜好来推出相关系列文章~更多精彩内容也可以访问我的博客Aelous-BLog/***Copyright(C),2019-2020,xudongpo.cn*Author:许东坡*Email.

    2022年7月13日
    22
  • 单级倒立摆数学模型_倒立摆系统建模

    单级倒立摆数学模型_倒立摆系统建模首先建立单摆的动力学模型,使用simulink搭建控制框图。然后将极点配置状态反馈和串级PD反馈应用于系统的摆杆竖直倒立稳定和平移支座位移稳定进行控制并对比了两种方法的优劣。

    2022年8月18日
    3
  • 大批量数据excel下载—本文作者只试了51万数据的下载,用时7秒

    一.背景:现在的项目里,有诸多下载功能,随着数据越来越多,下载的时间也越来越长,很影响用户体验,为了解决这一问题,我不得不挺身而出,斩破难关。项目中原本用的是poi-HSSFWorkbook,但是如果是50万数据量下载,回经历一个漫长的等待过程,然后内存溢出。jxl也不用想了,估计也差不多。二.两种方法:后来从网上搜索发现针对大数据量的导出有两条路可以走:第一:用poi-SXSSFWo

    2022年4月4日
    40
  • gpio引脚介绍 树莓派3b_树莓派3B+ GPIO 入门

    gpio引脚介绍 树莓派3b_树莓派3B+ GPIO 入门GPIO编号方式GPIO(GeneralPurposeInput/Output)的意思就是通用型输入输出,有三种方法可以对RaspberryPi上的IO引脚进行编号:BOARD编号,这是指RaspberryPi针脚接头上的引脚号。BCM编号,这是指BroadcomSOC的通道号码,需使用通道号所对应的树莓派板上的引脚。wringPi编号,wringPi库使用…

    2022年6月25日
    32
  • awk工具详解

    awk工具详解目录awk概述awk工作原理awk命令格式awk概述AWK是一种处理文本文件的语言,是一个强大的文本分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总

    2022年7月4日
    17
  • 2017年最新(4月20日)手机号码归属地数据库分享

    2017年最新(4月20日)手机号码归属地数据库分享2017年最新(4月20日)手机号码归属地数据库下载手机号段数据库号码归属地数据库移动号段联通号段电信号段147号段170号段(虚拟运营商)权威全面准确规范字段包括省份城市运营商邮编区号等信息,对于数据分析、号码归属地查询等非常有帮助更新历史:2017年4月最新版手机号段归属地,也叫手机归属地数据库共360569条记录…

    2022年7月22日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号