在ubuntu18.04上搭建kubernetes(保姆级教程)
关闭防火墙ufw disable关闭selinuxsudo apt install selinux-utilssetenforce 0禁止swap分区swapoff -asudo gedit /etc/fstab注释掉swap一行登陆root用户:桥接的IPV4流量传递到iptables 的链cat > /etc/sysctl.d/k8s.conf <<EOFnet.bridge
·
准备环境
- Ubuntu版本:18.04
- Docker: 20+
- k8s: 1.21.3
关闭防火墙
ufw disable
关闭selinux
sudo apt install selinux-utils
setenforce 0
禁止swap分区
swapoff -a
sudo gedit /etc/fstab 注释掉swap一行
登陆root用户:
桥接的IPV4流量传递到iptables 的链
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
配置k8s资源
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update
安装nfs
apt-get install nfs-common
安装kubeadm(初始化cluster),kubelet(启动pod)和kubectl(k8s命令工具)
apt install -y kubelet=1.21.3-00 kubeadm=1.21.3-00 kubectl=1.21.3-00
设置开机启动并启动kubelet
systemctl enable kubelet && systemctl start kubelet
---------------------------------------------以上操作主从节点都要执行------------------------------------
--------------------------------------------------以下是主节点操作-------------------------------------------
新建k8s.sh
#!/bin/bash
images=(
kube-apiserver:v1.21.3
kube-controller-manager:v1.21.3
kube-scheduler:v1.21.3
kube-proxy:v1.21.3
pause:3.2
etcd:3.4.13-0
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.0
docker rmi coredns/coredns:1.8.0
然后执行./k8s.sh
初始化Master
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
记录join并在从节点执行这句话
kubeadm join 172.16.206.13:6443 --token 9pslv8.6tbrux0ksur0wgav --discovery-token-ca-cert-hash sha256:3709a3ce5a0ec819308d97a97c445a0414b0ed07a855cb3f948c288f38c7e35c
- 若没有记录,也可在master节点用以下操作获取:
kubeadm token create --print-join-command
使用kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
网络插件
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 如果报错,浏览器打开网站复制到新建本地文本
kube-flannel.yml
,执行sudo kubectl apply -f kube-flannel.yml
查询组件状态
kubectl get cs
解决组件状态Unhealthy
- 需要用#注释掉
/etc/kubernetes/manifests
下的kube-controller-manager.yaml和kube-scheduler.yaml的- – port=0
注释完后重启服务
systemctl restart kubelet.service
再次查看组件状态(需要稍等)
kubectl get cs
查看节点状态
kubectl get node
修改hostname,查看各机器的名称,保证不同
sudo gedit /etc/hostname
修改后重启生效
查看pod状态
kubectl get pod -n kube-system -o wide
- 若flannel没起来则查看其日志:
kubectl -n kube-system logs kube-flannel-ds-g59k5
kubectl describe node ubuntu02|grep cider
--------------------------------------------------从节点-----------------------------------------------------
从节点重启kubeadm,可解决曾启动过导致端口被占用的问题
kubeadm reset
--------------------------------------------------下面是Kuboard----------------------------------------------------
Kuboard使用 hostPath 提供持久化存储
Kuboard v3 在 K8S 中的安装(主)
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
等待 Kuboard v3 就绪
watch kubectl get pods -n kuboard
访问Kuboard
网址:your-node-ip-address:30080
用户名:admin
密码:Kuboard123
Kuboard NFS
在master节点中安装nfs服务器端
sudo apt-get install nfs-kernel-server
共享目录配置文件
sudo vim /etc/exports
- 再上面文件中添加:
/home/panyang *(rw,sync,no_root_squash)
启动NFS服务
sudo /etc/init.d/nfs-kernel-server restart
Kuboard创建存储类
登陆Kuboard,点击集群管理->存储->存储类->创建存储类
- 存储类名称:随便填
- 限定名称空间:不勾选
- 存储类类型:NFS
- NFS Server:master节点的ip
- NFS Path :/home/panyang (上面共享的目录)
- NFS可使用容量:100Gi (只是可使用,不分配空间)
- MountOptions:vers=4,minorversion=0,noresvport
- 根据提示在master中先行测试,若测试报错,可尝试不要noresvport,或将vers改为5
一路保存+确定
更多推荐
已为社区贡献1条内容
所有评论(0)