我是靠谱客的博主 安静小蚂蚁,这篇文章主要介绍Argo CD系列视频图文版之手把手教你搭建Argo CD 实验环境开篇视频直达安装工具部署k8s 环境部署 OpenELB部署 nginx-ingressopenEBS安装 metric server总结,现在分享给大家,希望可以做个参考。

开篇

本期视频,我们一起来手把手的搭建实验环境。为了节省资源,我们部署 All-In-One K8S环境,也就是所有 kubernetes 资源,运行在一台服务器上。

视频直达

第一部分视频

第二部分视频


安装工具

开始动手之前,我们来介绍两款工具,kubekey 和 k9s。

kubeykey 是 KubeSphere 团队基于 GoLang 语言开发的kubernetes集群部署工具,使用 KubeKey,您可以轻松、高效、灵活地单独安装和管理 Kubernetes,当然如果你部署 Kubesphere 也是非常方便的。

k9s是一款命令行下的 k8s 集群管理工具,可以非常有效地提高你对 k8s的管理效率。本次分享我们对k8s 资源的观察和操作,就是通过 k9s来实现的。

1. 安装 kubekey

kubekey release[1]

复制代码
1
2
3
4
5
6
7
cd $HOME/kubekey # 下载最新稳定版 wget https://github.com/kubesphere/kubekey/releases/download/v1.1.1/kubekey-v1.1.1-linux-amd64.tar.gz # 解压缩 tar zxvf kubekey-v1.1.1-linux-amd64.tar.gz # 删除说明文档 rm -rf README.md README_zh-CN.md kubekey-v1.1.1-linux-amd64.tar.gz

2.安装 k9s

k9s release[2]

复制代码
1
2
3
4
5
6
7
cd $HOME # 下载最新稳定版 wget https://github.com/derailed/k9s/releases/download/v0.24.15/k9s_Linux_x86_64.tar.gz # 解压缩 tar zxvf k9s_Linux_x86_64.tar.gz # 删除多余文件 rm -rf LICENSE README.md k9s_Linux_x86_64.tar.gz

部署k8s 环境

1. 生成 kubekey 配置


kubekey 通过 KKZONE 这个环境变量,来决定使用哪些容器镜像仓库,从而提高镜像资源的下载效率。

复制代码
1
2
3
4
cd $HOME/kubekey export KKZONE=cn # 创建集群配置,集群名称为 monday ./kk create config --name monday

2. 修改配置


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 修改配置如下 apiVersion: kubekey.kubesphere.io/v1alpha1 kind: Cluster metadata:   name: monday spec:   hosts:   - {name: tm-opsinit-01, address: 10.10.14.99, internalAddress: 10.10.14.99}   roleGroups:     etcd:     - tm-opsinit-01     master:     - tm-opsinit-01     worker:     - tm-opsinit-01   controlPlaneEndpoint:     domain: monday-api.automan.fun     address: ""     port: 6443   kubernetes:     version: v1.19.8     imageRepo: kubesphere     clusterName: cluster.local   network:     plugin: calico     kubePodsCIDR: 10.233.64.0/18     kubeServiceCIDR: 10.233.0.0/18   registry:     registryMirrors: []     insecureRegistries: []   addons: []

3. 修改 docker 配置


docker daemon 默认创建的docker0网桥,使用172.17.0.0网段地址,如果你的服务器使用的172.17.0.0的网段,可以通过修改docker daemon的配置来修改docker0网桥的地址段,避免地址冲突。

复制代码
1
2
3
4
5
6
7
8
9
# /etc/docker/daemon.json {   "log-opts": {     "max-size": "5m",     "max-file":"3"   },   "exec-opts": ["native.cgroupdriver=systemd"],   "bip":"192.168.0.1/24" }

修改完配置后,如果服务器上已安装docker服务,执行如下命令重载配置。如无运行docker服务,请忽略。

复制代码
1
systemctl daemon-reload && systemctl restart docker

4. 创建集群


创建集群前,有三个点需要检查:

  1. 禁用 selinux

  2. 禁用防火墙

  3. 安装相关系统级依赖

复制代码
1
2
3
4
5
6
7
8
9
# 临时禁用 selinux setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 禁用防火墙 systemctl disable firewalld && systemctl stop firewalld && systemctl status firewalld # 安装系统依赖 yum install socat conntrack ebtables ipset # 创建集群 ./kk create cluster -f config-monday.yaml

5. 安装客户端


k8s 集群部署好后,我们来安装相关 kubectl管理工具。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 添加 k8s yum 源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF # 安装 kubectl yum install -y kubectl # k8s 命令行参数很多,可以通过 bash-completion 来自动补全命令 # 命令行代码补全 yum install bash-completion -y echo "source <(kubectl completion bash)" >> ~/.bashrc source ~/.bashrc

部署 OpenELB

集群中的应用,如果要在集群外部访问,可以采用NodePort 方式暴露服务,也可以采用 LoadBalancer 的方式。为了更好的模拟生产环境,咱们使用 LoadBalancer 的方式暴露服务。OpenELB是由 Kubesphere 团队开发的支持裸金属服务器提供LoadBalancer类型服务的工具。具体功能细节就不额外讲解,大家可以自行参考官方文档。国人主导开发的工具,中文支持非常好。


Github: https://github.com/kubesphere/openelb

复制代码
1
2
# 一条命令安装 porter kubectl apply -f https://raw.githubusercontent.com/kubesphere/porter/master/deploy/porter.yaml

我们实验中使用OpenLBlayer2模式。这种模式需要配置一些集群主机网段的空地址,也就是说这些IP不能绑定物理网卡。OpenLB提供 Eip 这个CRD来配置这些空 IP。为什么需要这样的 IP 呢?我们来简单讲解下 Layer2 模式的原理。

当外部有流量请求某个空 IP时,路由器会发出ARP广播报文,也就是到集群服务器网段内询问,数据要发给谁。显然不会有任何一个主机响应,此时,OpenLBport-manager 就会相应这个 ARP 报文。通过这种ARP报文欺骗的黑客手段,实现流量的劫持。剩下的步骤,就由PortLB来转发流量到相应的Service 中。

PortLB 的 Layer2 模式,就是这样工作的。


复制代码
1
2
3
4
5
6
7
8
9
10
11
apiVersion: network.kubesphere.io/v1alpha2 kind: Eip metadata:     name: eip-pool spec:     address: 10.10.14.91-10.10.14.92     protocol: layer2     interface: ens192     disable: false   # 10.10.14.87-10.10.14.88

部署 nginx-ingress

OpenLB可以方便地暴露 4 层协议,比如 TCP协议等等,但在7 层协议中的一些操作,就无能为力啦,比如卸载 https 证书路由分发等等。


nginx-ingress install guide[3]

复制代码
1
2
3
4
5
6
7
# 1. 应用配置清单 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/cloud/deploy.yaml # 2. 修改 service 类型为 LoadBalancer # 3. service.metadata.annotations 中指定 OpenELB 配置 lb.kubesphere.io/v1alpha1: porter protocol.porter.kubesphere.io/v1alpha1: layer2 # PortLB 就是通过这两条 annotation 信息来识别要提供服务的 Service 的

openEBS

Kubernates 集群中,对于有状态应用,需要申请PV支持。openEBS支持把节点主机的文件系统映射为存储服务,这对我们的 All In One 实验来说,是个非常好的支持。

安装 helm


OpenEBS 官方支持 helm 安装,所以我们首先安装 helm 命令行工具。

复制代码
1
2
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash echo 'PATH=$PATH:/usr/local/bin' >> ~/.bashrc && source ~/.bashrc

安装 openebs


复制代码
1
2
3
helm repo add openebs https://openebs.github.io/charts helm repo update helm install openebs --namespace openebs openebs/openebs --create-namespace

验证 hostpath


复制代码
1
2
3
# /var/openebs/local kubectl apply -f https://openebs.github.io/charts/examples/local-hostpath/local-hostpath-pvc.yaml kubectl apply -f https://openebs.github.io/charts/examples/local-hostpath/local-hostpath-pod.yaml

安装 metric server

复制代码
1
2
3
4
5
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml # bx509: cannot validate certificate for because it doesn't contain any IP SANs" # metric server deployment args  # 添加 # - --kubelet-insecure-tls

总结

到这里,我们的实验环境就搭建完成啦;涉及到的知识点非常多,因为搭建集群并非我们课程的主要内容,就不继续给大家扩展知识了。如果有疑问或者遇到什么问题,可以留言或到我们的社区群众交流群中,一起探讨。

给大家留个作业:再找一台服务器,按照本节课的步骤,部署另外一套 kubernates集群,集群名叫 tuesday。后面咱们实验多集群管理时,会用到。

下期视频,我们将部署 ArgoCD 并且跑个官方 demo 让大家感受一下。

参考资料

[1]

kubekey release: https://github.com/kubesphere/kubekey/releases

[2]

k9s release: https://github.com/derailed/k9s/releases

[3]

nginx-ingress install guide: https://kubernetes.github.io/ingress-nginx/deploy/

最后

以上就是安静小蚂蚁最近收集整理的关于Argo CD系列视频图文版之手把手教你搭建Argo CD 实验环境开篇视频直达安装工具部署k8s 环境部署 OpenELB部署 nginx-ingressopenEBS安装 metric server总结的全部内容,更多相关Argo内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部