阿里云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搭建和管理企业级网站应用
目录
相关文章
|
6天前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
21天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
4天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
37 9
|
1天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
4天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
34 2
|
10天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
40 3
|
15天前
|
存储 弹性计算 编解码
通过阿里云的活动租赁云服务器时如何选择实例规格?选择指南参考
新手用户通过阿里云的活动租赁云服务器的时候实例规格应该怎么选?目前在阿里云的活动中,可选的云服务器类型除了轻量应用服务器之外,云服务器的主要实例规格有经济型e、通用算力型u1和计算型c7与c8y、通用型g7与g8y、内存型r7与r8y等实例,但是对于新手来说,由于是初次购买,实例规格往往不知道怎么选择了。本文为大家展示阿里云目前活动中各云服务器实例规格性能、适用场景以及选择指南参考。
|
18天前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
91 2
|
19天前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。
|
1天前
|
弹性计算
阿里云2核16G云服务器多少钱?亲测ECS内存型r8i租赁价格
阿里云2核16G云服务器,内存型r8i实例1年6折优惠后价格为1901元,月付334.19元,按小时计费0.696221元。更多配置及优惠详情,请访问阿里云ECS页面。