文章目录

  • 前言
  • 基本环境搭建
    • Kubernetes安装
      • 常规配置(三台虚拟机均需进行配置)
        • 关闭防火墙
        • 关闭Selinux
        • 禁用swap
        • 配置域名解析
        • 配置桥接流量转发
        • 配置时间同步
        • Docker安装
        • 配置docker镜像仓库加速
        • 修改防火墙规则
        • 配置k8s源仓库
      • Kubernetes Master配置
        • 部署kubelet、kubeadm、kubectl
        • 部署Kubernetes Master
        • 建立k8s管理用户
        • 配置k8s用户连接
        • 验证配置
      • k8s node配置
        • 部署kubelet、kubeadmin
        • 加入k8s集群
      • 配置k8s集群网络
      • 部署kubernetes控制台
      • 配置登录Token
  • Istio平台部署
    • 安装istioctl命令工具
    • 编写IstioOperator自定义配置文件
    • 应用配置清单
    • 验证已部署的Istio服务运行状态
  • Knative Serving安装
    • 安装Knative Serving CRD
    • 安装Knative Serving核心组件
    • 安装Knative网络层Istio控制器,实现Istio与Knative集成
    • 安装HPA自动缩放扩展
    • 检查Knative Serving相关服务运行状态
  • Knative Eventing安装
    • 安装Knative Eventing CRD
    • 安装Knative Eventing核心组件
    • 安装默认Channel层
    • 安装Broker层
    • 检查Knative Eventing相关服务运行状态
  • 安装可观察组件
    • 为可观察行组件创建命名空间
    • 安装Prometheus和Grafana
    • 安装EFK日志收集处理中心
    • 安装Jaeger实现分布式追踪
  • Tekton安装
    • Tekton Pipeline安装
      • 安装Tekton的核心组件Pipeline
      • 验证Pipeline组件运行状态
      • 为PipelineResources配置存储
    • Tekton Dashborad安装
      • 为Tekton 安装 Dashborad UI
      • 验证Dashboard组件运行状态
      • 访问TektonDashboard
    • Tekton Trigger安装
      • 为Tekton安装Trigger
      • 验证Trigger组件运行状态

前言

Knative是构建在容器、kubernetes以及Istio的基础之上的Serverless解决方案。Knative有两个组件,它们既可以各自独立安装部署,也可以一起安装相互配合。

基本环境搭建

Knative 0.16版本需要kubernetes 1.15以上版本的支持。

软件 版本
Kubernetes 1.23.15
Istio 1.6.8
Knative Serving 1.8.3
Knative Eventing 0.16.0
Tekton Pipeline 0.16.3
Tekton Trigger 0.8.1
Tekton Dashboard 0.10.0

Kubernetes安装

主机名 IP 操作系统 硬件配置
master 192.168.1.91 centos7 4CPU RAM:6GB
node1 192.168.1.92 centos7 4CPU RAM:6GB
node2 192.168.1.93 centos7 4CPU RAM:6GB

常规配置(三台虚拟机均需进行配置)

关闭防火墙

# systemctl disable firewalld
# systemctl stop firewalld

关闭Selinux

# vim /etc/sysconfig/selinux

将SELINUX=enforcing改为SELINUX=disabled

禁用swap

# swapoff -a
# vim /etc/fstab

如图所示将其中关于交换分区的项目注释掉,防止操作系统重新启动后自动挂载交换分区。

配置域名解析

# cat >> /etc/hosts <<EOF
192.168.1.91     master
192.168.1.92     node1
192.168.1.93     node2
EOF

配置桥接流量转发

# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl --system

配置时间同步

# yum install ntpdate -y
# ntpdate time.windows.com

Docker安装

# curl https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
# yum install -y docker-ce
# systemctl enable docker && systemctl start docker

配置docker镜像仓库加速

# sudo mkdir -p /etc/docker
# sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://qdzgikwk.mirror.aliyuncs.com"]
}
EOF
# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
## systemctl daemon-reload
# systemctl restart docker

这一部分需要在阿里云官网注册账号,进入控制台,搜索容器镜像服务,接着点击镜像工具栏中的镜像加速器,获取个人的加速器配置文件,进行配置。

修改防火墙规则

Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables的filter表中FOWARD链,这样会引起Kubernetes集群中跨节点的Pod无法通信。

# iptables -P FORWARD ACCEPT
# iptables-save

配置k8s源仓库

# cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes /yum/doc/rpm-package-key.gpg
EOF

Kubernetes Master配置

部署kubelet、kubeadm、kubectl

# yum install -y kubelet-1.23.15 kubeadm-1.23.15 kubectl-1.23.15
# systemctl enable kubelet

部署Kubernetes Master

# kubeadm init \
--apiserver-advertise-address=192.168.1.91 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.15 \
--service-cidr=11.62.0.0/16 \
--pod-network-cidr=11.55.0.0/16

-–apiserver-advertise-address:集群通告地址
-–image-repository:由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
-–kubernetes-version: K8s版本,与上面安装的一致
-–service-cidr :集群内部虚拟网络,Pod统一访问入口
-–pod-network-cidr Pod:网络,需要与接下来部署的CNI网络组件yaml中保持一致

安装完成后,运行docker images 命令,可见到如下输出

如果安装成功,可见到如下输出
关注最后的kudeadm join命令,等会将用到

建立k8s管理用户

# useradd kadmin

配置k8s用户连接

# mkdir -p /home/kadmin/.kube
# cp /etc/kubernetes/admin.conf /home/kadmin/.kube/config
# chown kadmin:kadmin -R /home/kadmin/.kube

验证配置

# su - kadmin
$ kubectl get ns


如果要登出,输入exit即可

k8s node配置

部署kubelet、kubeadmin

# yum install -y kubelet-1.23.15 kubeadm-1.23.15
# systemctl enable kubelet

加入k8s集群

# kubeadm join 192.168.1.91:6443 --token ibgw9p.a3n4on6c05t2prbs \
--discovery-token-ca-cert-hash sha256:903d9e59b49e7db455a8b353ed5ae3d8368502792e8edc7d ad62f00d509a2911

加入完成之后,可见到如下输出

配置k8s集群网络

# curl  https://docs.projectcalico.org/v3.20/manifests/calico.yaml -o /tmp/calico.yaml

取消注释 CALICO_IPV4POOL_CIDR,并将其值设置为kubernetes的pod-network-cidr的值

# kubectl apply -f /tmp/calico.yaml

如果出现如下问题
原因:kubernetes master没有与本机绑定,集群初始化的时候没有绑定,此时设置在本机的环境变量即可解决问题。

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
# source /etc/profile

kubectl apply命令执行成功,可见到如下输出

部署kubernetes控制台

# curl -ls https://gitee.com/xiaojinran/k8s/raw/master/k8s-dashboard/dashboard.yaml -o /tmp/k8s-dashboard.yaml
# kubectl apply -f /tmp/k8s-dashboard.yaml

配置登录Token

# kubectl create serviceaccount dashboard-admin -n kube-system
# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

Istio平台部署

当前Knative支持的网络层组件有Ambassdor、Contour、Gloo、Istio、Kong、Kourier

安装istioctl命令工具

# curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 sh -
# cd istio-1.6.8${ISTIO_VERSION}
# export PATH=$PWD/bin:$PATH

编写IstioOperator自定义配置文件

# cat << EOF > ./istio-minimal-operator.yaml

应用配置清单

# istioctl manifest apply -f istio-minimal-operator.yaml

验证已部署的Istio服务运行状态

# watch kubectl -n istio-system get pods

Knative Serving安装

安装Knative Serving CRD

# kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/serving-crds.yaml

安装Knative Serving核心组件

#  kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/serving-core.yaml

安装Knative网络层Istio控制器,实现Istio与Knative集成

# kubectl apply -f \
https://github.com/knative/net-istio/releases/download/v0.16.0/release.yaml

安装HPA自动缩放扩展

# kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/serving-hpa.yaml

检查Knative Serving相关服务运行状态

# watch kubectl get pods -n knative-serving

Knative Eventing安装

安装Knative Eventing CRD

# kubectl apply -f \
https://github.com/knative/eventing/releases/download/v0.16.0/eventing-crds.yaml

安装Knative Eventing核心组件

# kubectl apply -f \
https://github.com/knative/eventing/releases/download/v0.16.0/eventing-core.yaml

安装默认Channel层

# kubectl apply -f \
https://github.com/knative/eventing/releases/download/v0.16.0/in-memory-channel.yaml

安装Broker层

# kubectl apply -f \
https://github.com/knative/eventing/releases/download/v0.16.0/mt-channel-broker.yaml

检查Knative Eventing相关服务运行状态

# watch kubectl get pods -n knative-eventing

安装可观察组件

为可观察行组件创建命名空间

# kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/monitoring-core.yaml

安装Prometheus和Grafana

# kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/monitoring-metrics-prometheus.yaml

安装EFK日志收集处理中心

# kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/monitoring-logs-elasticsearch.yaml

安装Jaeger实现分布式追踪

# kubectl apply -f \
https://github.com/knative/serving/releases/download/v0.16.0/monitoring-tracing-jaeger-in-mem.yaml

Tekton安装

Tekton Pipeline安装

安装Tekton的核心组件Pipeline

# kubectl apply -f \
https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.16.3/release.yaml

验证Pipeline组件运行状态

# kubectl get pods -n tekton-pipelines

为PipelineResources配置存储

# cat <<EOF | kubectl apply -f -

Tekton Dashborad安装

为Tekton 安装 Dashborad UI

# kubectl apply -f \
https://storage.googleapis.com/tekton-releases/dashboard/previous/v0.10.0/tekton-dashboard-release.yaml

验证Dashboard组件运行状态

# kubectl get pods -n tekton-pipelines

访问TektonDashboard

# kubectl --namespace tekton-pipelines \
port-forward svc/tekton-dashboard 9097:9097 --address=<Kubernetes 节点 IP>

Tekton Trigger安装

为Tekton安装Trigger

# kubectl apply -f \
https://github.com/tektoncd/triggers/release/download/v0.8.1/release.yaml

验证Trigger组件运行状态

# kubectl get pods -n tekton-pipelines

最近要开始做项目了,以后可能更多的是别的平台了,比如Fn Project或者OpenWhisk,Knative如果有什么学习感悟,还是会更新的。

Knative v0.16.0安装全过程相关推荐

  1. kubenetes 1.16.0安装kubernetes-dashboard v2.0.0-beta4

    kubenetes github :https://github.com/kubernetes/dashboard/releases kubenetes官网:https://kubernetes.io ...

  2. Navicat Premium 12.1.16.0 安装与激活

    1.Navicat Premium12.1.16.0 与 注册机下载 下载地址:https://pan.baidu.com/s/1HfS9SGNkUK4d5f0nmnYt1A 提取码:tcr0 2.安 ...

  3. ubuntu 16.0安装mysql8_ubuntu16.0.4 安装 mysql8.0.18的

    1.下载mysql.tar.xz 文件 image.png image.png 2.解压到/usr/local/目录,并将文件夹重命名为mysql #解压 sudo tar xvf mysql-8.0 ...

  4. ubuntu 16.0安装ros-kinetic

    1.设置sources.list sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) ma ...

  5. Knative v1.0.x安装全过程

    Knative入门初探风采--新手安装教程 提示:本章为第一篇文章,后续更新时间不定,主要取决于博主进度 文章目录 Knative入门初探风采--新手安装教程 前言 1 Knative v1.0.x安 ...

  6. SUSE 11 安装sybase ASE 16.0 SP 02安装全过程

    SUSE系统下安装Sybase数据库 参考文档: https://wiki.deepin.io/mediawiki/index.php?title=Sybase_%E5%AE%89%E8%A3%85% ...

  7. CentOS 6.0图解网络安装全过程

    转自CentOS 6.0图解网络安装全过程  国内镜像站点(东北大学.网易) 网易镜像站点:http://mirrors.163.com/centos/6.0/isos/ 中科大镜像站点:http:/ ...

  8. VM虚拟机7.0,下载——安装全过程。

    因为本文是从Qzone转载的,如果图片无法打开,请先点击导航栏上的相册,进入Qzone后,再打开本文即可 虚拟机7.0版本,下载,安装全过程! 需要用到的:1:VMware-workstation-f ...

  9. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解

    1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...

最新文章

  1. 个人博客打不开时检查下github.com的ip地址是否更改/修改博客内容字体、颜色及大小
  2. 创建Okhttp自定义Log
  3. java基础之冒泡排序
  4. Android开发中StackOverflowError错误实例分析
  5. html5 测评游戏,暗黑之王评测:HTML5游戏铸就最华丽ARPG冒险
  6. tfs文件系统之NS配置管理
  7. 【Pytorch神经网络实战案例】20 基于Cora数据集实现图卷积神经网络论文分类
  8. 使用PostgREST构建PostgreSQL数据库的REST风格API
  9. 01 离散时间信号的时域表示
  10. 用netbeans开发Swing程序,添加自定义控件
  11. android 播放3gp音频,Android的Media(录音,播放音乐,播放视频等)
  12. XeLatex在window上编译较慢的解决方法
  13. Mac 上“预览”中的键盘快捷键
  14. android app与gprs通信,gprs连接管理app
  15. Win10重装系统/迁移系统,教你如何简单快速删除原系统文件
  16. 强势崛起!这所年轻大学南科大,是中国高教的奇迹!
  17. adreno630gpu参数_高通骁龙AdrenoGPU天梯以及直观分析,推荐。
  18. java 中国地图_高级UI-svg实现可交互的中国地图
  19. 【WIN10蓝屏】win10系统蓝屏原因调查
  20. 优信拍集团php面试题_【优信拍PHP高级工程师面试】优信二手车PHP面试经验。-看准网...

热门文章

  1. java实现第七届蓝桥杯碱基
  2. 中国企业客户IT画像
  3. [OpenGL]变量限定符-参数限定符-精度限定符
  4. 简易全双工物联网远程控制门禁设计方案
  5. php调研方法,调研方法:定量研究
  6. java 兑换码生成_java兑换码生成
  7. 6. JDK内置命令行工具
  8. 可以在家庭DVD影碟机上播放的HDVD光盘简易制作步骤
  9. excel公式不自动计算_excel如何设置公式的自动计算
  10. Node.js发送HTTP请求