k8s学习九:非内网搭建k8s

简介: k8s学习九:非内网搭建k8s

文章背景

很多人知道,我在自己家里搭建了一台服务器,可以直接访问外网,另外我老家还有2台服务器,也有外网,所以想着集合下阿里云,老家的服务器资源,搭建k8s环境

image.png

家里服务器带宽高,但是ip会经常变动,所以需要考虑到ip变动的问题

我打算深圳的服务器作为master节点,进行搭建k8s网络集群

外网搭建配置

由于centos停止维护了,所以我的服务器都是ubuntu 22系统,搭建的k8s版本为1.23.10

配置虚拟网卡

因为我们的服务器都是外网访问的,网卡没有绑定外网ip,所以需要创建虚拟网卡去绑定外网ip

#首先需要获取到自己的网卡名
root@tioncico-pc:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid\_lft forever preferred\_lft forever
    inet6 ::1/128 scope host 
       valid\_lft forever preferred\_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:23:81:22:db:95 brd ff:ff:ff:ff:ff:ff
    inet 119.123.101.117/8 brd 119.255.255.255 scope global enp2s0:1
       valid\_lft forever preferred\_lft forever
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 34:de:1a:98:33:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.68.152/24 metric 600 brd 192.168.68.255 scope global dynamic wlp3s0
       valid\_lft 10361092sec preferred\_lft 10361092sec
    inet6 fd05:a5df:b270:0:36de:1aff:fe98:3389/64 scope global mngtmpaddr noprefixroute 
       valid\_lft forever preferred\_lft forever
    inet6 fe80::36de:1aff:fe98:3389/64 scope link 
       valid\_lft forever preferred\_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:70:50:46:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid\_lft forever preferred\_lft forever
5: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default 
    link/ether 5a:8c:ee:0b:13:45 brd ff:ff:ff:ff:ff:ff
    inet 10.244.0.0/32 scope global flannel.1
       valid\_lft forever preferred\_lft forever
    inet6 fe80::588c:eeff:fe0b:1345/64 scope link 
       valid\_lft forever preferred\_lft forever
6: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
    link/ether 1e:14:f7:cf:b6:e6 brd ff:ff:ff:ff:ff:ff
    inet 10.244.0.1/24 brd 10.244.0.255 scope global cni0
       valid\_lft forever preferred\_lft forever
    inet6 fe80::1c14:f7ff:fecf:b6e6/64 scope link 
       valid\_lft forever preferred\_lft forever
7: veth4273b252@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default 
    link/ether 2a:34:bc:1c:7e:a9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::866:8dff:fe95:e61f/64 scope link 
       valid\_lft forever preferred\_lft forever
8: veth34975173@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default 
    link/ether 4e:4c:cb:ee:b6:55 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::fcad:ccff:fe0a:6613/64 scope link 
       valid\_lft forever preferred\_lft forever
root@tioncico-pc:~# 
### 根据网卡名,去创建一张虚拟网卡: 我这边用的是enp2s0
root@tioncico-pc:~#  ifconfig enp2s0:1 119.123.101.118(外网ip)
root@tioncico-pc:~#

初始化k8s master 集群

该步骤和文章: https://www.php20.cn/article/387  一致,ip改为外网ip

kubeadm init \
 --apiserver-advertise-address 119.123.101.117 \
 --apiserver-bind-port 6443 \
 --pod-network-cidr 10.244.0.0/16 \
 --image-repository registry.aliyuncs.com/google_containers -v10

等待集群初始化完毕

阿里云节点加入集群

该步骤和文章:           一致

kubeadm join 119.123.101.117:6443 \
--token co521f.29i90vgeen5feer6         \
--discovery-token-ca-cert-hash sha256:881055871d680663e95215e7c34dc16958ea475a0f1789c1eca5a460e4268366  \
-v10

加入成功后,在master节点可以获取到节点状态:

root@tioncico-pc:~# kubectl get nodes
NAME                      STATUS   ROLES                  AGE   VERSION
izwz92md6qnm0l3rvvrn8nz   Ready    <none>                 36m   v1.23.10
tioncico-pc               Ready    control-plane,master   44m   v1.23.10
root@tioncico-pc:~#

如果有错误,依次解决错误就可以了

可能存在的错误以及解决方案

节点显示not ready


通过  kubectl describe nodes 命令查看节点详情

kubectl describe nodes  节点名

如果详情没发现节点报错,那说明节点连接正常

在not ready子节点上执行查看报错

systemctl status kubelet

子节点 open /run/flannel/subnet.env: no such file or directory

查看master 节点的配置文件

root@tioncico-pc:~# cat /run/flannel/subnet.env
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
root@tioncico-pc:~#

将master的复制到子节点,并重启kubelet

创建nginx服务测试:

kubectl create deployment nginx  --image=nginx:1.14-alpine

如果报错,可通过命令排查错误:

root@tioncico-pc:~# kubectl describe pod nginx

没报错的情况:

root@tioncico-pc:~# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-d7jwc   1/1     Running   0          20m
root@tioncico-pc:~#

下一章节将说明如果master节点更改之后如何重置集群

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
4月前
|
Kubernetes 容器
k8s学习-CKS真题-日志审计 log audit
k8s学习-CKS真题-日志审计 log audit
78 0
|
4月前
|
Kubernetes 安全 Ubuntu
k8s学习-CKS真题-Dockerfile和deployment优化
k8s学习-CKS真题-Dockerfile和deployment优化
73 0
|
4月前
|
Kubernetes 容器
k8s学习-CKS真题-ImagePolicyWebhook容器镜像扫描
k8s学习-CKS真题-ImagePolicyWebhook容器镜像扫描
113 0
|
3月前
|
Kubernetes iOS开发 Docker
为什么你应该学习 Docker 🐋 和 Kubernetes ☸️?
如果您是一名开发人员,我相信您一定听说过这句话:“它可以在我的机器上运行”。当我们的代码在您的计算机上运行但在朋友的计算机上表现不佳时,这是令人心碎的。
28 0
|
4月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|持久化存储pv,pvc和StorageClass的学习
云原生|kubernetes|持久化存储pv,pvc和StorageClass的学习
123 0
|
4月前
|
存储 Kubernetes 关系型数据库
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
47 0
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes|关于configMap的一些学习
云原生|kubernetes|关于configMap的一些学习
49 1
|
4月前
|
Kubernetes Cloud Native 安全
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配方案(两种方式-sa和用户)
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配方案(两种方式-sa和用户)
84 0
|
4月前
|
Kubernetes Cloud Native API
猿创征文|云原生|kubernetes学习之RBAC(六)
猿创征文|云原生|kubernetes学习之RBAC(六)
33 0
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
【云原生】kubernetes学习之资源(对象)控制器概述---概念和实战(五)
【云原生】kubernetes学习之资源(对象)控制器概述---概念和实战(五)
22 0

推荐镜像

更多