node1 k8s]# ll
drwxr-xr-x. 2 root root 252 Jan 21 2018 bin
-rw-r--r--. 1 root root 103781888 Jan 20 2018 kubernetes-dashboard-amd64-v1.5.1.tar
-rw-r--r--. 1 root root 2281 Jan 21 2018 kubernetes-dashboard.yaml
-rw-r--r--. 1 root root 5232826 Jan 21 2018 kubernetes.tar.gz
-rw-r--r--. 1 root root 765440 Jan 20 2018 pause-amd64-3.0.tar
先导入dashboard还有pause-amd64-3.0 2个镜像
node1 k8s]# docker load < kubernetes-dashboard-amd64-v1.5.1.tar
node1 k8s]# docker load < pause-amd64-3.0.tar
安装并启用etcd
node1 k8s]# yum -y install etcd
node1 k8s]# systemctl start etcd
k8s的数据都存放在 etcd中
etcd的数据目录为/var/lib/etcd/中,如果要重装etcd,要清空这个目录
node1 k8s]# vim /etc/etcd/etcd.conf
修改 6 行为 ETCD_LISTEN_CLIENT_URLS="http://192.168.56.11:2379"
修改 21 行为 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.11:2379"
保存退出,重启etcd
node1 k8s]# systemctl restart etcd
node1 k8s]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 958/master
tcp 0 0 192.168.56.11:2379 (客户端连接用) 0.0.0.0:* LISTEN
2256/etcd
tcp 0 0 127.0.0.1:2380 (集群连接用) 0.0.0.0:* LISTEN
2256/etcd
node1 centos# ls -l /root/k8s/kubernetes/cluster/centos
total 40
-rwxr-x---. 1 root root 4305 Nov 23 2017 build.sh
-rwxr-x---. 1 root root 1763 Nov 23 2017 config-build.sh
-rwxr-x---. 1 root root 4773 Nov 23 2017 config-default.sh
-rw-r-----. 1 root root 747 Nov 23 2017 config-test.sh
-rwxr-x---. 1 root root 2739 Nov 23 2017 deployAddons.sh
drwxr-x---. 3 root root 21 Jan 21 2018 master master的配置脚本
drwxr-x---. 4 root root 32 Nov 23 2017 node node的配置脚本
-rwxr-x---. 1 root root 10763 Nov 23 2017 util.sh
需要通过传参数的方式进行配置,先开始配置master
node1 # pwd
/root/k8s/kubernetes/cluster/centos/master/scripts
[root@linux-node1 scripts]# ll
total 28
-rwxr-x---. 1 root root 4453 Jan 20 2018 apiserver.sh
-rwxr-x---. 1 root root 2239 Jan 20 2018 controller-manager.sh
-rwxr-x---. 1 root root 2223 Jan 21 2018 etcd.sh
-rw-r-----. 1 root root 1758 Nov 23 2017 flannel.sh
-rw-r-----. 1 root root 853 Nov 23 2017 post-etcd.sh
-rwxr-x---. 1 root root 1708 Nov 23 2017 scheduler.sh
下面的操作在node1 和 node2上都要进行
# mkdir -p /opt/kubernetes/{cfg,bin}
复制bin文件到指定目录
# pwd
/root/k8s/bin
# mv * /opt/kubernetes/bin
切换到node1上
node1 scripts]# cd /root/k8s/kubernetes/cluster/centos/master/scripts
node1 scripts]# ./apiserver.sh 192.168.56.11 http://192.168.56.11:2379 10.1.0.0/16
其中第一个参数是master的ip地址 第二个参数是etcd所在地址 第三个参数为service使用ip段
此时查看 kube-apiserver的状态会显示 runing
node1 scripts]# systemctl status kube-apiserver
执行刚刚的脚本 会在 /opt/kubernetes/cfg中创建配置文件,将刚刚写参数填到刚刚创建的配置文件中,同时创
建服务文件
/usr/lib/systemd/system/kube-apiserver.service
node1 cfg# netstat -tnlp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 2511/kube-apiserver
此时192.168.56.11:8080 就是kube-apiserver的地址
如果kube api挂掉了,则不会监听8080端口
切换回脚本目录
cd /root/k8s/kubernetes/cluster/centos/master/scripts
下面安装controller-manager
node1 scripts]# ./controller-manager.sh 192.168.56.11 #仅有一个参数指定master地址
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to
/usr/lib/systemd/system/kube-controller-manager.service.
node1 scripts]# systemctl status kube-controller-manager
此时查看服务状态发现为running
[root@linux-node1 scripts]# ps aux | grep kube-con
root 2720 2.7 1.7 93832 35744 ? Ssl 20:14 0:05 /opt/kubernetes/bin/kube-
controller-manager --logtostderr=true --v=4 --master=192.168.56.11:8080 --leader-elect
root 2732 0.0 0.0 112712 960 pts/1 S+ 20:17 0:00 grep --color=auto kube-con
[root@linux-node1 scripts]# netstat -tnlp | grep 2720
tcp6 0 0 :::10252 :::* LISTEN 2720/kube-controlle
由此可以看到此服务的端口为10252
下面开启scheduler
node1 scripts]# ./scheduler.sh 192.168.56.11 #只有一个参数就是master的地址
查看运行状态为running
node1 scripts]# systemctl status kube-scheduler
最后可以看到3个配置文件
node1 cfg]# ls /opt/kubernetes/cfg
kube-apiserver kube-controller-manager kube-scheduler
由这三个配置文件可以得知默认的日志将输出到 /var/log/messages 中,也可以更改配置文件修改日志的存放位
置
[root@linux-node1 ~]# vim .bash_profile #配置环境变量
修改 10 行为 PATH=$PATH:$HOME/bin:/opt/kubernetes/bin/
[root@linux-node1 ~]# source .bash_profile
上面这步操作在node2上也操作一遍
[root@linux-node2 ~]# vim .bash_profile
[root@linux-node2 ~]# source .bash_profile
下面使用kubectl和api进行交互来测试服务的状态
node1 ~# kubectl -s http://192.168.56.11:8080 get componentstatus
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
-s为指定apiserver,每次输入这么长很麻烦,所以使用别名
继续编辑[root@linux-node1 ~]# vim .bash_profile
在最后一行添加 alias kubectl='kubectl -s http://192.168.56.11:8080'
[root@linux-node1 ~]# source .bash_profile
以后就可以简化命令了
[root@linux-node1 ~]# kubectl get componentstatus
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
同样在node2上也执行一下刚刚的操作
继续编辑[root@linux-node2 ~]# vim .bash_profile
在最后一行添加 alias kubectl='kubectl -s http://192.168.56.11:8080'
[root@linux-node2 ~]# source .bash_profile
到此为止,mastaer就部署完成了,下面开始部署node节点
[root@linux-node1 scripts]# cd /root/k8s/kubernetes/cluster/centos/node/scripts
[root@linux-node1 scripts]# ll
total 16
-rwxr-x---. 1 root root 1402 Nov 23 2017 docker.sh
-rwxr-x---. 1 root root 1881 Nov 23 2017 flannel.sh
-rwxr-x---. 1 root root 2737 Nov 23 2017 kubelet.sh
-rwxr-x---. 1 root root 1719 Nov 23 2017 proxy.sh
node1 scripts]# ./kubelet.sh 192.168.56.11 192.168.56.11 #第一个参数是master的ip,第二个是node自己
的ip
node1 scripts]# systemctl status kubelet #查看服务状态为running
下面到node2上重复一下刚才的操作
node2 scripts]# cd /root/k8s/kubernetes/cluster/centos/node/scripts
node2 scripts]# ./kubelet.sh 192.168.56.11 192.168.56.12
node2 scripts]# systemctl status kubelet
回到node1
node1 scripts]# ./proxy.sh 192.168.56.11 192.168.56.11
node1 scripts]# systemctl status kube-proxy #查看服务状态
切换到node2
node2 scripts]# ./proxy.sh 192.168.56.11 192.168.56.12
node2 scripts]# systemctl status kube-proxy #查看服务状态
node1 scripts]# kubectl get node #查看现有node
NAME STATUS AGE VERSION
192.168.56.11 Ready 12m v1.6.13
192.168.56.12 Ready 8m v1.6.13
如果可以看到2个node则说明整个集群的搭建就完成了
[root@linux-node2 ~]# ls /opt/kubernetes/cfg #node2上仅有2个配置文件
kubelet kube-proxy
[root@linux-node1 ~]# ls /opt/kubernetes/cfg
kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler #node1上有5个配置文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)