准备环境

  • 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
    一路保存+确定
Logo

开源、云原生的融合云平台

更多推荐