阿里云ecs搭建k8s体验

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 利用阿里云搭建k8s集群,涵盖搭建过程,排错思路,排错过程

阿里云ecs体验

本人计算机专业本科在读,由于最近想学习一下kubernetes,需要一台云主机,到阿里云搜索学生主机出现了“飞天加速计划·高校学生在家实践”活动。
首先kubernetes的安装需要开放一段端口号,阿里云的安全组可以一口气开放一段端口号。
在搭建过程中,主要出现的问题就是搭建之后的master节点无法与node节点通信。我也为此查询了很多资料。解决过程如下:
1.在kubeadm时就需要指定公网ip
下面时我创建时的yaml文件

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: ip:6443
clusterName: kubernetes
apiServer:
  certSANs:
    - ip
  extraArgs:
    authorization-mode: Node,RBAC
    advertise-address: ip
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12

注意apiServer下面的controlPlaneEndpoint,certSANs写公网ip,extraArgs的advertise-address同公网ip。

然后通过下面命令初始化

kubeadm init --config=kubeinit.yaml | tee kubeadm-init.log

然后按照提示cp配置文件。

2.开放对应的端口
在云主机的安全组规则中需要配置下面的端口号,master和node都要配置
master开放对应的协议端口,注意不全是tcp

firewall-cmd --permanent --add-port=6443/tcp

firewall-cmd --permanent --add-port=2379-2380/tcp

firewall-cmd --permanent --add-port=10250/tcp

firewall-cmd --permanent --add-port=10251/tcp

firewall-cmd --permanent --add-port=10252/tcp

firewall-cmd --permanent --add-port=10255/tcp

firewall-cmd --permanent --add-port=8472/udp

firewall-cmd --permanent --add-port=443/udp

firewall-cmd --permanent --add-port=53/udp

firewall-cmd --permanent --add-port=53/tcp

firewall-cmd --permanent --add-port=9153/tcp

node开放端口

firewall-cmd --permanent --add-port=10250/tcp

firewall-cmd --permanent --add-port=10255/tcp

firewall-cmd --permanent --add-port=8472/udp

firewall-cmd --permanent --add-port=443/udp

firewall-cmd --permanent --add-port=30000-32767/tcp

firewall-cmd --permanent --add-port=53/udp

firewall-cmd --permanent --add-port=53/tcp

firewall-cmd --permanent --add-port=9153/tcp

3.修改node配置
在网上查阅的过程中,我了解到可以用tcpdump检测网络包。
这里需要先简略描述一下包在kubernetes中发送的过程:dockerContainer->flannel.1网卡->flannel进程->eth0网卡->出去
其中flannel.1和eth0是可以用tcpdump监控的,flannel进程不太好处理,先处理前者。
执行tcpdump -i flannel.1 -s0 -nnn监控flannel.1网卡
结果:

bqr9lmlug1.png

发现只有去的包,没有回来的,我们再监控eth0,8472是flannel的端口
tcpdump -i eth0 -s0 -nnn udp and port 8472

9kc5tmt729.png

发现目的地的ip不是公网ip,是内网ip,那这个包肯定就过不去。

通过kubectl describe nodes k8s-node-2得到node信息。

Name:               k8s-node-2
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-node-2
                    kubernetes.io/os=linux
Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"7e:a5:78:f3:de:1c"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 10.0.16.5
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true

在public-ip部分,显示的是内网ip,把他改成外网ip。

[root@k8s-master ~]# kubectl annotate node k8s-node-2 flannel.alpha.coreos.com/public-ip-overwrite=43.138.19.214 --overwrite
node/k8s-node-2 annotated
[root@k8s-master ~]# kubectl -n kube-system get pods --field-selector spec.nodeName=k8s-node-2 | grep flannel
kube-flannel-ds-ddn72   1/1     Running   0          56m
[root@k8s-master ~]# kubectl -n kube-system get pod kube-flannel-ds-ddn72 -o yaml | kubectl replace --force -f -
pod "kube-flannel-ds-ddn72" deleted
pod/kube-flannel-ds-ddn72 replaced

这个时候通过master公网ip:端口就能成功访问了。

后记:k8s部署花了一周,一开始总是安装报错,后来是访问不到节点,在网上翻阅资料过程中,大概了解到问题的排查可以从一下几个方面入手:
journal -xe命令查看,这个是在安装时候最多出现的
docker logs 容器id,因为k8s里面运行的是容器,所以可以直接看容器日志
kubectl describe XX,这个可以直接查看某个资源的状态
tcpdump ,网络curl不通,那就用网络监视工具查看一下包的情况
firewalld相关命令,有的时候并不能排除防火墙的问题,需要查看状态
当然最重要的是,排查错误的过程中了解到了很多组件的意义,apiserver,etcd,kube-proxy是最可能出问题的三个兄弟,需要明白这三者的作用和联系。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
6天前
|
编解码 前端开发 安全
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
在我们选购阿里云服务器的过程中,不管是新用户还是老用户通常都是通过阿里云的活动去买了,一是价格更加实惠,二是活动中的云服务器配置比较丰富,足可以满足大部分用户的需求,但是面对琳琅满目的云服务器实例、带宽和云盘选项,如何选择更适合自己,成为许多用户比较关注的问题。本文将介绍如何在阿里云的活动中选择合适的云服务器实例、带宽和云盘,以供参考和选择。
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
|
4天前
|
弹性计算 运维 安全
阿里云轻量应用服务器和经济型e实例区别及选择参考
目前在阿里云的活动中,轻量应用服务器2核2G3M带宽价格为82元1年,2核2G3M带宽的经济型e实例云服务器价格99元1年,对于云服务器配置和性能要求不是很高的阿里云用户来说,这两款服务器配置和价格都差不多,阿里云轻量应用服务器和ECS云服务器让用户二选一,很多用户不清楚如何选择,本文来说说轻量应用服务器和经济型e实例的区别及选择参考。
阿里云轻量应用服务器和经济型e实例区别及选择参考
|
5天前
|
机器学习/深度学习 存储 人工智能
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
阿里云的GPU云服务器产品线在深度学习、科学计算、图形渲染等多个领域展现出强大的计算能力和广泛的应用价值。本文将详细介绍阿里云GPU云服务器中的gn6v、gn7i、gn6i三个实例规格族的性能特点、区别及选择参考,帮助用户根据自身需求选择合适的GPU云服务器实例。
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
|
11天前
|
人工智能 Prometheus 监控
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
本文介绍了在阿里云容器服务 ACK 上部署 NVIDIA NIM,结合云原生 AI 套件和 KServe 快速构建高性能模型推理服务的方法。通过阿里云 Prometheus 和 Grafana 实现实时监控,并基于排队请求数配置弹性扩缩容策略,提升服务稳定性和效率。文章提供了详细的部署步骤和示例,帮助读者快速搭建和优化模型推理服务。
62 7
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
|
13天前
|
人工智能 Prometheus 监控
使用NVIDIA NIM在阿里云ACK中加速LLM推理
介绍在阿里云ACK集群上结合AI套件能力快速部署NVIDIA NIM模型推理服务,同时提供全面的监控指标和实现弹性伸缩。
使用NVIDIA NIM在阿里云ACK中加速LLM推理
|
15天前
|
存储 弹性计算 运维
阿里云日常运维-购买服务器
这篇文章是关于如何在阿里云购买和配置云服务器ECS的教程。
53 6
阿里云日常运维-购买服务器
|
15天前
|
Kubernetes 网络虚拟化 Docker
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
文章提供了一个解决方案,用于在无法直接访问Google镜像仓库的情况下,通过使用阿里云镜像来下载kubeadm所需的Kubernetes镜像。
39 3
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
|
7天前
|
弹性计算
阿里云美国服务器需要备案吗?必看!
阿里云美国服务器无需ICP备案,适用于希望避开备案流程的用户。不同于中国大陆地区服务器,美国服务器及中国香港服务器均无需备案。用户可直接解析域名使用。阿里云提供美国云服务器ECS与轻量应用服务器两种选择,分别满足不同需求
46 9
|
23天前
|
弹性计算 负载均衡 数据库
阿里云轻量应用服务器全面解析:收费标准、产品优势及适用场景
在云计算领域,阿里云凭借其强大的技术实力和丰富的产品线,为用户提供了一系列高效、便捷的云服务器产品。其中,轻量应用服务器(Simple Application Server)作为面向个人开发者、中小企业等用户的入门级云产品,凭借其易用性、高性价比以及一站式服务体验,受到了广泛的欢迎。本文将全面解析阿里云轻量应用服务器的收费标准、产品优势以及适用场景,帮助用户更好地了解和选择这一产品。
阿里云轻量应用服务器全面解析:收费标准、产品优势及适用场景