随笔 - 72,  文章 - 0,  评论 - 1,  阅读 - 22557

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个配置文件

 

posted on   wilson'blog  阅读(251)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示