kubeadm安装kubernetes教程1.15.1
节点说明
系统类型 | IP地址 | 节点角色 | Hostname |
---|---|---|---|
centos-7.4 | 192.168.43.111 | master | vmware-111 |
centos-7.4 | 192.168.43.112 | worker | vmware-112 |
centos-7.4 | 192.168.43.113 | master | vmware-113 |
- 因为服务器有限,所以这里设置master也承担工作负载
环境准备
系统设置
主机名配置
主机名必须每个节点都不一样,并且保证所有点之间可以通过hostname互相访问
1
2
3
4
5
6
7# 查看主机名
$ hostname
# 修改主机名
$ hostnamectl set-hostname <your_hostname>
# 配置host,使所有节点之间可以通过hostname互相访问
$ vi /etc/hosts
# <node-ip> <node-hostname>配置
hosts
文件(全部主机)1
2
3
4$ vi /etc/hosts
192.168.43.111 vmware-111
192.168.43.112 vmware-112
192.168.43.113 vmware-113配置各个主机的
hostname
(全部主机)1
2
3
4
5
6
7
8# 192.168.43.111
$ hostnamectl set-hostname vmware-111
# 192.168.43.112
$ hostnamectl set-hostname vmware-112
# 192.168.43.113
$ hostnamectl set-hostname vmware-113
安装依赖包(全部节点)
1 | # 更新yum |
功能设置(全部节点)
1 | # 关闭防火墙,如果不想关闭防火墙可以看下方的集群所需端口列表 |
- 集群所需端口:查询地址
系统参数设置(全部节点)
1 | # 制作配置文件 |
安装docker(全部节点)
自行找教程
docker配置
1
2
3
4# 在/etc/docker/daemon.json加入
"exec-opts": ["native.cgroupdriver=systemd"]
# 启动docker服务
service docker restart
创建目录(全部节点)
1 | mkdir -p /opt/keepalived |
安装必要工具(全部节点)
工具说明
- kubeadm: 部署集群用的命令
- kubelet: 在集群中每台机器上都要运行的组件,负责管理pod、容器的生命周期
- kubectl: 集群管理工具(可选,只要在控制集群的节点上安装即可)
安装方法
1 | # 配置yum源 |
准备配置文件(任意选一个节点:192.168.43.111)
1 | $ cd /opt/kubernetes && git clone https://github.com/chcGolang/k8s-kubeadm |
文件说明
- addons
kubernetes的插件,比如calico和dashboard。
- configs
包含了部署集群过程中用到的各种配置文件。
- scripts
包含部署集群过程中用到的脚本,如keepalive检查脚本。
- global-configs.properties
全局配置,包含各种易变的配置内容。
- init.sh
初始化脚本,配置好global-config之后,会自动生成所有配置文件。
生成配置
1 | # cd到之前下载的git代码目录 |
执行init.sh常见问题:
- Syntax error: “(“ unexpected
- bash版本过低,运行:bash -version查看版本,如果小于4需要升级
- 不要使用 sh init.sh的方式运行(sh和bash可能不一样哦)
- global-config.properties文件填写错误,需要重新生成
再执行一次./init.sh即可,不需要手动删除target
集群安装
安装keepalived(选择两个以上的Master节点)
创建配置文件
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
32
33
34
35
36
37
38
39
40
41
42
43
44# 192.168.43.113(主)
cat>/opt/keepalived/keepalived.conf<<EOF
vrrp_instance VI_1 {
state BACKUP ## 主节点为MASTER,备份节点为BACKUP
interface ens33 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(服务器主机网卡)
virtual_router_id 111 ## 虚拟路由ID号(主备节点一定要相同)
mcast_src_ip 192.168.43.113 ## 本机ip地址
priority 100 ##优先级配置(0-254的值)
nopreempt
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication { ## 认证匹配
auth_type PASS
auth_pass rabbitmq
}
virtual_ipaddress {
192.168.43.101 ## 虚拟ip,可以指定多个
}
}
EOF
# 192.168.43.111(备)
cat>/opt/keepalived/keepalived.conf<<EOF
vrrp_instance VI_1 {
state BACKUP ## 主节点为MASTER,备份节点为BACKUP
interface ens33 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(服务器主机网卡)
virtual_router_id 111 ## 虚拟路由ID号(主备节点一定要相同)
mcast_src_ip 192.168.43.111 ## 本机ip地址
priority 98 ##优先级配置(0-254的值)
nopreempt
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication { ## 认证匹配
auth_type PASS
auth_pass rabbitmq
}
virtual_ipaddress {
192.168.43.101 ## 虚拟ip,可以指定多个
}
}
EOF启动
keepalived
1
2
3
4
5
6docker run -d --net=host \
--privileged \
--name keepalived \
--restart=unless-stopped \
-v /opt/keepalived/keepalived.conf:/container/service/keepalived/assets/keepalived.conf \
osixia/keepalived --copy-service查看ip
1
ip addr
部署第一Master节点(192.168.43.113)
1 | # 准备配置文件 |
部署网络插件 - calico (192.168.43.113)
1 | # 创建目录(192.168.43.113) |
加入其它master节点
1 | # 使用之前保存的join命令加入集群(192.168.43.112) |
加入worker节点
1 | # 使用之前保存的join命令加入集群 |
其他命令
让master节点也承载工作负荷(生产环境不推荐使用)
1
2
3kubectl taint nodes --all node-role.kubernetes.io/master-
# 这个错误可以忽略
error: taint “node-role.kubernetes.io/master:” not found禁止master部署pod
1
kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule
问题解决
查看问题方法
1
2systemctl status kubelet
journalctl -fskipping: failed to "StartContainer" for "coredns" with CrashLoopBackOff: "B
1
2
3
4# 执行命令
kubectl -n kube-system get deployment coredns -o yaml | \
sed 's/allowPrivilegeEscalation: false/allowPrivilegeEscalation: true/g' | \
kubectl apply -f -
集群可用性测试
1. 创建nginx ds
1 | # 写入配置 |
2. 检查各种ip连通性
1 | # 检查各 Node 上的 Pod IP 连通性 |
3. 检查dns可用性
1 | # 创建一个nginx pod |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chc-个人数据程序主页!