2025年rancher端口(rancher ingress端口都是80)

rancher端口(rancher ingress端口都是80)CentOS7 安装 k8s v1 13 4 第一部分 环境初始化 环境准备 设置 SSH 免密码登录 配置内核参数 安装 Docker 各个节点都要 证书制作 下载并安装 CFSSL 创建 CA 证书 创建 ETCD 证书 创建 kubernetes 证书 创建 admin 证书 创建 kube proxy 证书 创建 Flannel 证书 ETCD 集群部署 准备 ETCD 软件 配置 ETCD 参数 创建 ETCD 数据目录

大家好,我是讯享网,很高兴认识大家。



CentOS7安装k8s-v1.13.4

  • 第一部分 环境初始化
  • 环境准备:
  • 设置SSH免密码登录
  • 配置内核参数
  • 安装Docker(各个节点都要)
  • 证书制作
  • 下载并安装CFSSL
  • 创建CA证书
  • 创建ETCD证书
  • 创建kubernetes证书
  • 创建admin证书
  • 创建kube-proxy证书
  • 创建Flannel证书
  • ETCD集群部署
  • 准备ETCD软件
  • 配置ETCD参数
  • 创建ETCD数据目录
  • 创建ETCD系统服务
  • 修改k8s-worker1的etcd.conf文件
  • 修改k8s-worker2的etcd.conf文件
  • 加载并启动系统服务
  • 验证集群
  • Master节点部署
  • 准备kubernetes软件包
  • 部署Kubernetes API Server
  • 部署Controller Manager服务
  • 部署Kubernetes Scheduler
  • 部署kubectl 命令行工具
  • Node节点部署
  • 部署kubelet
  • 部署Kubernetes Proxy
  • Flannel网络部署
  • 部署flannel软件包
  • 配置flannel
  • 创建Flannel系统服务
  • 安装CNI插件
  • CoreDNS和Dashboard部署
  • 部署CoreDNS
  • 部署Dashboard

以上系统最小化安装,修改好主机名,禁用selinux,关闭防火墙,并写好/etc/hosts:

这里k8s-master1兼作部署节点:

修改CA配置文件

修改CA请求文件

将证书复制到/opt/kubernetes/ssl目录下:

查看校验证书:

文件分发到两个worker节点

创建ETCD数据目录

创建ETCD数据目录

在所有节点上:

登录https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md,选择相应的版本下载:

或者手工下载指定软件包

还有client和node版的,不需要下载了,server版的已经全包含进来了。

解压kubernetes-server-linux-amd64.tar.gz并拷贝到适当的目录:

创建 kube-apiserver 使用的客户端 token 文件

在token-auth.csv中拥有以列为单位的认证信息,格式为token,username,uid

创建基础用户名/密码认证配置

格式为:密码,用户名,ui,为后面创建dashborad后用户认证。

启动API Server服务

查看API版本

启动Controller Manager

启动Kubernetes Scheduler

配置命令补全:

命令kubectl在默认情况下(即未指定–kubeconfig=参数时),会到\(HOME/.kube目录下寻找名为config的配置文件,配置文件中包含集群ip地址、端口号、用户名、密码、证书、名称空间等信息,kubectl据此建构访问集群的上下文。以下命令kubectl config均未指定–kubeconfig=参数。</p><p>设置集群参数</p><div></div><p>设置客户端认证参数</p><div></div><p>设置上下文参数</p><div></div><p>设置默认上下文</p><div></div><p>查看kubeconfig内容</p><div></div><p>验证master节点功能</p><div></div><p>准备部署node节点<br> 将相关软件包复制到node节点中</p><div></div><p>创建角色绑定</p><div></div><p>创建kubeconfig 文件,设置集群参数</p><div></div><p>设置客户端认证参数,token值为之前生成的</p><div></div><p>设置上下文参数</p><div></div><p>选择默认上下文并向node节点分发在master端生成的</p><div></div><p>Node节点是Kubernetes集群中的工作负载节点,每个node都会被master分配一些工作负载,每个node节点都运行以下关键服务进程:<br> Kubelet:负责pod对应的容器的创建、启停等任务,同时与master节点密切协作,实现集群管理的基本功能。<br> Kube-proxy:实现kubernetes service的通信与负载均衡机制的重要组件。<br> Docker Engine(docker):Docker引擎,负责本机的容器创建和管理工作。</p><p>在k8s集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和pod中的容器。kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源。<br> 设置CNI支持</p><div></div><p>创建kubelet服务配置</p><div></div><p>启动Kubelet</p><div></div><p>查看csr请求(注意是在k8s-maste上执行)</p><div></div><p>批准kubelet 的 TLS 证书请求</p><div></div><p>执行完毕后,查看节点状态如果是Ready的状态就说明一切正常:</p><div></div><p>从Kubernetes 1.12版本起,kube-proxy服务默认使用ipvs实现,取消了之前的iptables。这有助于提升K8s大规模集群环境下的性能和稳定性。<br> 配置kube-proxy使用IPVS</p><div></div><p>创建kube-proxy服务配置</p><div></div><p>虽然status结果显示绿色的active (running),但也存在问题:</p><div></div><p>检查LVS状态</p><div></div><p>至此,在k8s-worker1节点上部署Kubelet和proxy完成,在K8s-worker2上重复上述过程,部署完后,回到k8s-master1节点上查看集群状态:</p><div></div><p>因为Master中没有装kubelet,所以kubectl get nodes就看不到Master的。<br> 给节点打标签:</p><div></div><div></div><div></div><div></div><p>mk-docker-opts.sh 脚本将分配给 flanneld 的 Pod 子网网段信息写入 /run/flannel/docker 文件,后续 docker 启动时使用这个文件中的环境变量配置 docker0 网桥;<br> flanneld 使用系统缺省路由所在的接口与其它节点通信,对于有多个网络接口(如内网和公网)的节点,可以用 -iface 参数指定通信接口,如上面的 eth0 接口;<br> flanneld 运行时需要 root 权限;<br> 复制配置文件到其它节点</p><div></div><p>CNI插件官网:</p><div></div><p>在master节点创建Etcd的key</p><div></div><p>启动flannel</p><div></div><p>查看网络配置</p><div></div><p>查看路由</p><div></div><p>flannel服务启动时主要做了以下几步的工作:<br> 从etcd中获取network的配置信息<br> 划分subnet,并在etcd中进行注册<br> 将子网信息记录到/run/flannel/subnet.env中</p><div></div><p>之后将会有一个脚本将subnet.env转写成一个docker的环境变量文件/run/flannel/docker</p><div></div><p>配置Docker使用Flannel<br> 在Unit段中的After后面添加flannel.service参数,在Wants下面添加Requires=flannel.service.<br> [Service]段中Type后面添加EnvironmentFile=-/run/flannel/docker段,在ExecStart后面添加\)DOCKER_OPTS参数
配置如下:

将配置分发到另外两个节点中(源和目标机器都要安装rsync)

所有节点重启Docker服务

运行ip a命令,如果docker0和flannel.1在一个网段,则表示正常:

查看主机路由表:

都14分钟了还没下载完nginx镜像?有问题,查看事件:

可以看到是pause-amd64这个镜像拉取不下来,切换到node节点,从阿里云上拉取再改名:

节点k8s-worker2上做同样的操作。

可以看到两个容器,一个是nginx,一个是pause-amd64。

到k8s-master1上查看pod的IP:


讯享网

测试连通性:

暴露服务,创建service

这个external-ip就是某个node节点的对外IP。

至此,kubernetes集群大功告成。

删除pod:

下面的curl命令,分别返回集群中的Pod列表、Service列表、RC列表:

创建coredns服务:

状态ImagePullBackOff,查看事件:

过一会就能看到pod是running状态了。

下载dashborad文件地址,大神已经修改好了我们直接执行就可以:

访问dashboard的方式有三种:
通过kube-apiserver访问,见前面kubectl cluster-info输出;
通过 kubectl proxy 访问;
通过http://NodeIP:nodePort访问;

查看dashborad对外映射端口

将token:一行后面的内容复制到令牌里,即可登录仪表板。

部署traefik Ingress
理解Ingress
简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由Ingress controller来提供。

部署Traefik Ingress
本文将采用daemonset方式部署Traefik Ingress来进行服务发布。
部署Traefik的配置文件可以在如下github仓库中找到:

https://github.com/rootsongjc/kubernetes-handbook/tree/master/manifests/traefik-ingress

下载相关yaml文件:

其中,ingress-rbac.yaml用于service account验证,不需要修改,内容如下:

通过DaemonSet方式部署Traefik服务:

其中 traefik 监听 node 的 80 和 8580 端口,80 提供正常服务,8580 是其自带的 UI 界面,原本默认是 8080,因为环境里端口冲突了,所以这里临时改一下。

Traefik UI部署

有新service增加时,修改该文件后可以使用kubectl replace -f ingress.yaml来更新。

查看traefik关联了哪些服务:

也可通过UI:http://10.3.8.104:8580/dashboard/ 查看traefik关联了哪些服务:

如果在kubernetes集群以外访问就需要设置DNS,或者修改本机的hosts文件,在其中加入:
10.3.8.104 mynginx.linuxs.top
10.3.8.104 whatsmyip.linuxs.top

浏览器访问mynginx.linuxs.top:

浏览器访问whatsmyip.linuxs.top:

刷新一下就能看到轮询到另一个服务:

小讯
上一篇 2025-05-11 07:22
下一篇 2025-05-28 21:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/201137.html