教程来源:https://kuboard.cn/install/install-k8s.html
检查 centos / hostname
在 master 节点和 worker 节点都要执行
cat /etc/redhat-release
此处 hostname 的输出将会是该机器在 Kubernetes 集群中的节点名字
不能使用 localhost 作为节点的名字
hostname
请使用 lscpu 命令,核对 CPU 信息
Architecture: x86_64 本安装文档不支持 arm 架构
CPU(s): 2 CPU 内核数量不能低于 2
lscpu
修改 hostname
如果您需要修改 hostname,可执行如下指令:
修改 hostname
hostnamectl set-hostname your-new-host-name
查看修改结果
hostnamectl status
设置 hostname 解析
echo "127.0.0.1 $(hostname)" >> /etc/hosts
检查网络
[root@demo-master-a-1 ~]$ ip route show
default via 172.21.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1002
172.21.0.0/20 dev eth0 proto kernel scope link src 172.21.0.12
[root@demo-master-a-1 ~]$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:12:a4:1b brd ff:ff:ff:ff:ff:ff
inet 172.17.216.80/20 brd 172.17.223.255 scope global dynamic eth0
valid_lft 305741654sec preferred_lft 305741654sec
如果是腾讯云前面这些都不用操作。只需要在每个服务器都执行关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
- 所有节点上 Kubernetes 所使用的 IP 地址必须可以互通(无需 NAT 映射、无安全组或防火墙隔离)
初始化 master 节点
关于初始化时用到的环境变量
- APISERVER_NAME 不能是 master 的 hostname
- APISERVER_NAME 必须全为小写字母、数字、小数点,不能包含减号
-
POD_SUBNET 所使用的网段不能与 master节点/worker节点 所在的网段重叠。该字段的取值为一个 CIDR 值,如果您对 CIDR 这个概念还不熟悉,请仍然执行 export POD_SUBNET=10.100.0.1/16 命令,不做修改
请将脚本最后的 1.19.0 替换成您需要的版本号, 脚本中间的 v1.19.x 不要替换
只在 master 节点执行
替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=x.x.x.x
替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "{APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.0
检查 master 初始化结果
只在 master 节点执行
执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide
查看 master 节点初始化结果
kubectl get nodes -o wide
初始化 worker节点
获得 join命令参数
只在 master 节点执行
kubeadm token create --print-join-command
kubeadm token create 命令的输出
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
该 token 的有效时间为 2 个小时,2小时内,您可以使用此 token 初始化任意数量的 worker 节点。
初始化worker
针对所有的 worker 节点执行
只在 worker 节点执行
替换 x.x.x.x 为 master 节点的内网 IP
export MASTER_IP=x.x.x.x
替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=apiserver.demo
echo "{APISERVER_NAME}" >> /etc/hosts
替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
检查初始化结果
在 master 节点上执行
只在 master 节点执行
kubectl get nodes -o wide
在 master 节点上执行
只在 master 节点执行
kubectl apply -f https://kuboard.cn/install-script/v1.19.x/nginx-ingress.yaml
查看 Kuboard 运行状态:
kubectl get pods -l k8s.kuboard.cn/name=kuboard -n kube-system
输出结果如下所示:
NAME READY STATUS RESTARTS AGE
kuboard-54c9c4f6cb-6lf88 1/1 Running 0 45s
获取Token
您可以获得管理员用户、只读用户的Token。此Token拥有 ClusterAdmin 的权限,可以执行所有操作
如果您参考 www.kuboard.cn 提供的文档安装 Kuberenetes,可在第一个 Master 节点上执行此命令
echo (kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
可获取token。然后就能通过nodepord的方式访问kuboard了。
http://任意一个Worker节点的IP地址:32567/
虚拟机安装可能因为网络问题卡在初始化。这个时候不适合这个教程,实测腾讯云上执行一次就能安装成功
至此为止安装完了k8s集群和nginx-ingress和kuboard。
还需要执行的操作:docker镜像加速
Docker中国 mirror
export REGISTRY_MIRROR="https://registry.docker-cn.com"
腾讯云 docker hub mirror
export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"
华为云镜像
export REGISTRY_MIRROR="https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
DaoCloud 镜像
export REGISTRY_MIRROR="http://f1361db2.m.daocloud.io"
阿里云 docker hub mirror
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s ${REGISTRY_MIRROR}
systemctl restart kubelet # 假设您安装了 kubenetes
执行命令docker info查看结果。
网友评论