Yum 部署K8S集群

目录

[1、准备环境 (温馨提示:尽量一次完成集群)](#1、准备环境 (温馨提示:尽量一次完成集群))

2.安装master节点

3、安装k8s-master上的node

4、安装配置k8s-node1节点

5、安装k8s-node2节点

6、为所有node节点配置flannel网络

7、配置docker开启加载防火墙规则允许转发数据


一. 环境搭建

1、准备环境 (温馨提示:尽量一次完成集群)

集群很容易断网

1) 计算机说明,建议系统版本7.4或者7.6

|------------|---------------|-------------|-----------------------------------------------------------------------|
| 主机名 | IP地址 | 角色 | 硬件 |
| k8s-master | 192.168.50.53 | master+node | Etcd、apiserver、controlor-manager、scheduler、kube-proxy、docker、registry |
| k8s-node1 | 192.168.50.50 | node | Kubletel、kube-proxy、docker |
| k8s-node2 | 192.168.50.51 | node | Kubletel、kube-proxy、docker |

2) 修改主机的计算机名设置host文件

root@localhost \~\]# hostname k8s-master \[root@localhost \~\]# bash \[root@k8s-master \~\]# vim /etc/hosts 192.168.50.53 k8s-master 192.168.50.50 k8s-node1 192.168.50.51 k8s-node2 \~ \[root@k8s-master \~\]# scp /etc/hosts 192.168.50.51:/etc \[root@k8s-master \~\]# scp /etc/hosts 192.168.50.50:/etc

2.安装master节点

1)安装etcd配置etcd

root@k8s-master \~\]# yum -y install etcd \[root@k8s-master \~\]# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak \[root@k8s-master \~\]# vim /etc/etcd/etcd.conf 6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" 21 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.50.53:2379" \[root@k8s-master \~\]# systemctl start etcd \[root@k8s-master \~\]# systemctl enable etcd Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.

2)安装k8s-master节点

root@k8s-master \~\]# yum -y install kubernetes-master.x86_64

3)配置apiserver

root@k8s-master \~\]# vim /etc/kubernetes/apiserver > 1 ### > > 2 # kubernetes system config > > 3 # > > 4 # The following values are used to configure the kube-apiserver > > 5 # > > 6 > > 7 # The address on the local server to listen to. > > 8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" > > 9 > > 10 # The port on the local server to listen on. > > 11 KUBE_API_PORT="--port=8080" > > 12 > > 13 # Port minions listen on > > 14 KUBELET_PORT="--kubelet-port=10250" > > 15 > > 16 # Comma separated list of nodes in the etcd cluster > > 17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.50.53:2379" > > 18 > > 19 # Address range to use for services > > 20 KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" > > 21 > > 22 # default admission control policies > > 23KUBE_ADMISSION_CONTROL="admissioncontrol=NamespaceLifecycle,NamespaceExists,LimitRanger,Security ContextDeny,ResourceQuota" > > 24 > > 25 # Add your own! > > 26 KUBE_API_ARGS="" **4) 配置controller和scheduler** \[root@k8s-master \~\]# vim /etc/kubernetes/config > 22 KUBE_MASTER="--master=http://192.168.50.53:8080" **启动k8s服务** > \[root@k8s-master \~\]# systemctl start kube-apiserver.service > > \[root@k8s-master \~\]# systemctl start kube-controller-manager.service > > \[root@k8s-master \~\]# systemctl start kube-scheduler.service > > \[root@k8s-master \~\]# systemctl enable kube-apiserver.service > > Created symlink from /etc/systemd/system/multi-user.target.wants/kube-apiserver.service to /usr/lib/systemd/system/kube-apiserver.service. \[root@k8s-master \~\]# systemctl enable kube-controller-manager.service > Created symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to /usr/lib/systemd/system/kube-controller-manager.service. > > \[root@k8s-master \~\]# systemctl enable kube-scheduler.server > > Failed to execute operation: No such file or directory > > \[root@k8s-master \~\]# systemctl enable kube-scheduler.service > > Created symlink from /etc/systemd/system/multi-user.target.wants/kube-scheduler.service to /usr/lib/systemd/system/kube-scheduler.service. **检查节点是否监控** > \[root@k8s-master \~\]# kubectl get componentstatus > > NAME STATUS MESSAGE ERROR > > etcd-0 Healthy {"health":"true"} > > controller-manager Healthy ok > > scheduler Healthy ok ### ******3、安装k**** ****8**** ****s**** ****-**** ****master上的node****** **1)安装node** \[root@k8s-master \~\]# yum -y install kubernetes node.x86_64 **2)配置kubelet** > \[root@k8s-master \~\]# vim /etc/kubernetes/kubelet > > 5 KUBELET_ADDRESS="--address=192.168.50.53" > > 11 KUBELET_HOSTNAME="--hostname-override=k8s-master" > > 14 KUBELET_API_SERVER="--api-servers=http://192.168.50.53:8080" **3)启动kubelet启动自动启动docker服务** > \[root@k8s-master \~\]# systemctl start kubelet > > \[root@k8s-master \~\]# systemctl enable kubelet > > Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service. **4)启动kubelet-proxy** > \[root@k8s-master \~\]# systemctl start kube-proxy > > \[root@k8s-master \~\]# systemctl enable kube-proxy > > Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service. **5)检查node节点** > \[root@k8s-master \~\]# kubectl get nodes > > NAME STATUS AGE > > k8s-master Ready 1m ### ******4、安装配置k**** ****8**** ****s**** ****-**** ****node**** ****1**** ****节点****** **1)安装node** > \[root@k8s-node1 \~\]# yum -y install kubernetes node.x86_64 **2)node1连接k8s-master** > \[root@k8s-node1 \~\]# vim /etc/kubernetes/config > > 22 KUBE_MASTER="--master=http://192.168.50.53:8080" **3)配置kubelet** > \[root@k8s-node1 \~\]# vim /etc/kubernetes/kubelet > > 5 KUBELET_ADDRESS="--address=192.168.50.50" > > 11 KUBELET_HOSTNAME="--hostname-override=k8s-node1" > > 14 KUBELET_API_SERVER="--api-servers=http://192.168.50.53:8080" **4)启动服务** > \[root@k8s-node1 \~\]# systemctl start kubelet > > \[root@k8s-node1 \~\]# systemctl start kube-proxy > > \[root@k8s-node1 \~\]# systemctl enable kubelet > > Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service. > > \[root@k8s-node1 \~\]# systemctl enable kube-proxy > > Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service. **5)在master节点检测node节点状态** > \[root@k8s-master \~\]# kubectl get nodes > > NAME STATUS AGE > > k8s-master Ready 13m > > k8s-node1 Ready 1m ### ******5**** ****、安装k**** ****8**** ****s**** ****-**** ****node**** ****2**** ****节点****** **1)安装node** > \[root@k8s-node2 \~\]# yum -y install kubernetes node.x86_64 **2)node1连接k8s-master** > \[root@k8s-node2 \~\]# vim /etc/kubernetes/config > > 22 KUBE_MASTER="--master=http://192.168.50.53:8080" **3)配置kubelet** > \[root@k8s-node2 \~\]# vim /etc/kubernetes/kubelet > > 5 KUBELET_ADDRESS="--address=192.168.50.51" > > 11 KUBELET_HOSTNAME="--hostname-override=k8s-node2" > > 14 KUBELET_API_SERVER="--api-servers=http://192.168.50.53:8080" **4)启动服务** > \[root@k8s-node2 \~\]# systemctl start kubelet > > \[root@k8s-node2 \~\]# systemctl start kube-proxy > > \[root@k8s-node2 \~\]# systemctl enable kubelet > > Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service. > > \[root@k8s-node2 \~\]# systemctl enable kube-proxy > > Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service. **5)在master节点检测node节点状态** > \[root@k8s-master \~\]# kubectl get nodes > > NAME STATUS AGE > > k8s-master Ready 19m > > k8s-node1 Ready 7m > > k8s-node2 Ready 1m ### ******6、为所有node节点配置flannel网络****** **1)在k8s-master节点安装flannel** > \[root@k8s-master \~\]# yum -y install flannel -y > > \[root@k8s-master \~\]# vim /etc/sysconfig/flanneld > > 4 FLANNEL_ETCD_ENDPOINTS="http://192.168.50.53:2379" \[root@k8s-master \~\]# etcdctl set /atomic.io/network/config '{"Network":"172.16.0.0/16"}' > {"Network":"172.16.0.0/16"} //查看多一个网络 > > \[root@k8s-master \~\]# systemctl start flanneld //重新启动docker服务和flannel网络一至 \[root@k8s-master \~\]# systemctl enable flanneld Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. \[root@k8s-master \~\]# ifconfig //查看多一个网络 > flannel0: flags=4305\ mtu 1472 > > inet 172.16.48.0 netmask 255.255.0.0 destination 172.16.48.0 > > inet6 fe80::4fff:f857:41f4:3894 prefixlen 64 scopeid 0x20\ > > unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC) > > RX packets 0 bytes 0 (0.0 B) > > RX errors 0 dropped 0 overruns 0 frame 0 > > TX packets 3 bytes 144 (144.0 B) > > TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 \[root@k8s-master \~\]# systemctl restart docker sys\[root@k8s-master \~\]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. > \[root@k8s-master \~\]# ifconfig > > docker0: flags=4099\ mtu 1500 > > inet 172.16.48.1 netmask 255.255.255.0 broadcast 0.0.0.0 > > ether 02:42:87:58:2f:59 txqueuelen 0 (Ethernet) > > RX packets 0 bytes 0 (0.0 B) > > RX errors 0 dropped 0 overruns 0 frame 0 > > TX packets 0 bytes 0 (0.0 B) > > TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 **2)配置node1节点flannel网络** \[root@k8s-node1 \~\]# yum -y install flannel -y \[root@k8s-node1 \~\]# vim /etc/sysconfig/flanneld > 4 FLANNEL_ETCD_ENDPOINTS="http://192.168.50.53:2379" \[root@k8s-node1 \~\]# systemctl start flanneld \[root@k8s-node1 \~\]# systemctl enable flanneld Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. \[root@k8s-node1 \~\]# systemctl restart docker \[root@k8s-node1 \~\]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. **3)安装node2节点flannel网络** \[root@k8s-node2 \~\]# yum -y install flannel -y \[root@k8s-node2 \~\]# vim /etc/sysconfig/flanneld > 4 FLANNEL_ETCD_ENDPOINTS="http://192.168.50.53:2379" > \[root@k8s-node2 \~\]# systemctl start flanneld > > \[root@k8s-node2 \~\]# systemctl enable flanneld > > Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. > > Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. > > \[root@k8s-node2 \~\]# systemctl restart docker > > sy\[root@k8s-node2 \~\]# systemctl enable docker > > Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. **master查看** > \[root@k8s-master \~\]# kubectl get nodes > > NAME STATUS AGE > > k8s-master Ready 35m > > k8s-node1 Ready 23m > > k8s-node2 Ready 17m **4)测试docker容器跨宿主机通信** > \[root@k8s-master \~\]# iptables -P FORWARD ACCEPT > > \[root@k8s-master \~\]# > > \[root@k8s-node1 \~\]# iptables -P FORWARD ACCEPT > > \[root@k8s-node1 \~\]# > > \[root@k8s-node2 \~\]# iptables -P FORWARD ACCEPT > > \[root@k8s-node2 \~\]# ****iptables -P FORWARD ACCEPT**** : 这个命令将iptables的FORWARD链的默认策略设置为ACCEPT(接受)。iptables是Linux上的防火墙工具,它可以用来设置网络规则和过滤器。 ****-P FORWARD**** : 指定要更改的链是FORWARD链,这个链控制通过Linux主机的转发流量 ****ACCEPT**** : 设置为接受(允许)转发流量,默认情况下,FORWARD链的默认策略是DROP(拒绝)。 ****#**** : 这是Linux命令行中用于表示注释的符号。在这个上下文中,****#**** 后面的内容被视为注释,不会被执行。 这意味着iptables的FORWARD链的默认策略已被成功更改为接受(ACCEPT),允许通过Linux主机的转发流量。 ### ******7、配置docker开启加载防火墙规则允许转发数据****** 1)配置k8s-master节点 \[root@k8s-master \~\]# vim /usr/lib/systemd/system/docker.service > 1 \[Unit

2 Description=Docker Application Container Engine

3 Documentation=http://docs.docker.com

4 After=network.target

5 Wants=docker-storage-setup.service

6 Requires=docker-cleanup.timer

7

8 [Service]

9 Type=notify

10 NotifyAccess=main

11 EnvironmentFile=-/run/containers/registries.conf

12 EnvironmentFile=-/etc/sysconfig/docker

13 EnvironmentFile=-/etc/sysconfig/docker-storage

14 EnvironmentFile=-/etc/sysconfig/docker-network

15 Environment=GOTRACEBACK=crash

16 Environment=DOCKER_HTTP_HOST_COMPAT=1

17 Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin

18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT 添加这一行

19 ExecStart=/usr/bin/dockerd-current \

root@k8s-master \~\]# systemctl daemon-reload \[root@k8s-master \~\]# systemctl restart docker **2)配置k8s-node1节点** > \[root@k8s-node1 \~\]# vim /usr/lib/systemd/system/docker.service > > 18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT > > \[root@k8s-node1 \~\]# systemctl daemon-reload > > \[root@k8s-node1 \~\]# systemctl restart docker **3)配置k8s-node2节点** > \[root@k8s-node2 \~\]# vim /usr/lib/systemd/system/docker.service > > 18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT > > \[root@k8s-node2 \~\]# systemctl daemon-reload > > \[root@k8s-node2 \~\]# systemctl restart docker

相关推荐
成工小白5 分钟前
【Linux】进程地址空间
linux·算法
不念霉运7 分钟前
2025年中国DevOps工具选型指南:主流平台能力横向对比
运维·ci/cd·团队开发·devops
珹洺19 分钟前
Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能
java·运维·数据库·mysql·servlet
dadeity31 分钟前
Linux 离线安装 Docker 和 Docker Compose 最新版 的完整指南
linux·docker·docker-compose
珹洺33 分钟前
计算机操作系统(七)详细讲解进程的组成与特性,状态与转换
运维·服务器·计算机网络
EulerBlind1 小时前
【运维】MacOS蓝牙故障排查与修复指南
运维·macos
大大小小聪明1 小时前
Nginx核心功能及同类产品对比
运维·nginx
口嗨农民工1 小时前
svn status . 命令返回分析
linux·svn
“αβ”1 小时前
Linux平台下SSH 协议克隆Github远程仓库并配置密钥
linux·ssh·github
wangchen_01 小时前
linux-进程信号的产生
linux·运维·服务器