ubuntu18.04搭建k8s(1.19.4)集群

之前在centos os7搭建过单机版k8s 搭建单机版k8s(搭建过程中,不清楚的地方可以借鉴这篇博客,比较详细),最近工作比较轻松,于是在虚拟机上搭建了k8s集群,开始k8s的学习,特此记录搭建过程 .

一. 配置详情

  • Virtual Box 6.1
  • Ubuntu18.04
  • docker 20.10.4
  • k8s 1.19.4
主机名ip配置
ubuntu01192.168.56.104CPU:单核 内存:2G 硬盘:60G
ubuntu02192.168.56.105CPU:单核 内存:2G 硬盘:40G
ubuntu03192.168.56.106CPU:单核 内存:2G 硬盘:40G

二. 环境准备

以下操作,三台机器都要执行

# 关闭防火墙
ufw disable

# 关闭selinux
setenforce 0

# 禁止swap分区
swapoff -a

#桥接的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

三.安装kubeadm,kubectl,kubelet

# 安装kubeadm(初始化cluster),kubelet(启动pod)和kubectl(k8s命令工具)
apt install -y kubelet=1.19.4-00 kubeadm=1.19.4-00 kubectl=1.19.4-00
# 设置开机启动并启动kubelet
stemctl enable kubelet && systemctl start kubelet

四.部署Kubernetes Master

由于我国不可抗的网络因素,需要先从阿里云上拉取k8s所需镜像,再重新修改tag为k8s所需要的的镜像.

创建k8s.sh脚本,下载所需镜像并更改tag

k8s.sh

#!/bin/bash
images=(
    kube-apiserver:v1.19.4
    kube-controller-manager:v1.19.4
    kube-scheduler:v1.19.4
    kube-proxy:v1.19.4
    pause:3.2
    etcd:3.4.13-0
    coredns:1.7.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
# 执行脚本
./k8s.sh
# 初始化Master
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.19.4 --ignore-preflight-errors=NumCPU --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.56.104 --v=6
# 并记录下执行成功后,Node加入集群的语句
kubeadm join 192.168.56.104:6443 --token nh819o.pzcpohatm7p3a5cm --discovery-token-ca-cert-hash sha256:55254659ea80b335a09dd627757d6aecd10b2c6fbdaddc63dd9bae9ec353cc49

坑1: 因为是在虚拟机里面运行的ubuntu,所以使用了两块网卡(NAT模式连接外网,Host-Only连接虚拟机和主机),如果不指定 --apiserver-advertise-address=${enp0s8网卡ip地址}的话,默认使用的是enp0s3网卡的地址,导致node节点join master节点的时候,无法连接。
在这里插入图片描述
执行命令成功后安装提示

# 使用kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

不执行这三条语句,在使用kubectl时会报错The connection to the server 127.0.0.1:8080 was refused - did you specify the right host or port?.

#查看组件状态
kubectl get cs

在这里插入图片描述

controller-manager Unhealthy Get “http://127.0.0.1:10252/healthz”: dial tcp 127.0.0.1:10252: connect: connection refused
scheduler Unhealthy Get “http://127.0.0.1:10251/healthz”: dial tcp 127.0.0.1:10251: connect: connection refused

悲伤的发现controller-manager和scheduler状态不对。原因是默认端口是0了,需要注释掉/etc/kubernetes/manifests下的kube-controller-manager.yamlkube-scheduler.yaml- – port=0
解决kubernetes:v1.18.6-1.19.0 get cs127.0.0.1 connection refused错误

#注释完重启服务
systemctl restart kubelet.service
#查看组件状态
kubectl get cs

在这里插入图片描述

#查看节点状态
kubectl get node

在这里插入图片描述
令人头疼的是节点也是NotReady

#查看log
journalctl -f -u kubelet.service

报错

Nov 21 18:37:02 iZuf6gdhs7pd18cytimmvzZ kubelet[8079]: W1121 18:37:02.230409    8079 cni.go:239] Unable to update cni config: no networks found in /etc/cni/net.d
Nov 21 18:37:03 iZuf6gdhs7pd18cytimmvzZ kubelet[8079]: E1121 18:37:03.967844    8079 kubelet.go:2103] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

在这里插入图片描述
原因是没配置CNI网络插件,这里选用flannel.

curl https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml >>kube-flannel.yml
chmod 777 kube-flannel.yml 
kubectl apply -f kube-flannel.yml 

等个1分钟左右,再次查看节点状态

kubectl get node

在这里插入图片描述
终于变为了ready,k8s master节点部署完成

注意: 每次重新init master都要执行 kubeadm reset

五. Node节点加入集群

执行初始化Master后,提示的Node节点加入集群的语句.

kubeadm join 192.168.56.104:6443 --token nh819o.pzcpohatm7p3a5cm --discovery-token-ca-cert-hash sha256:55254659ea80b335a09dd627757d6aecd10b2c6fbdaddc63dd9bae9ec353cc49

坑2: 用虚拟机搭建的主机未设置主机名,三台主机的主机名相同,导致Node节点加入不了集群.

解决办法:

# 修改三台主机名
vim /etc/hostname
ubuntu01

#修改完后重启
reboot

坑3: 重新加入集群报错etc/kubernetes/kubelet.conf already exists

[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
    [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

解决办法:

删除相关残留文件

# 删除k8s配置文件
rm -f /etc/kubernetes/kubelet.conf
# 删除K8S证书
rm -f /etc/kubernetes/pki/ca.crt   
# 查看节点状态
kubectl get nodes

坑4: 加入集群后,查看节点状态,发现又报错The connection to the server localhost:8080 was refused - did you specify the right host

解决办法:

# 将Master节点的配置文件拷贝到Node节点
scp selenium@192.168.56.104:/etc/kubernetes/admin.conf /etc/kubernetes/
# 配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# 生效环境变量
source ~/.bash_profile

坑5: 加入集群后,查看节点状态,发现又报错The connection to the server localhost:8080 was refused - did you specify the right host

坑6: 加入集群后,查看节点状态,发现Node节点都是NotReady状态.

执行命令journalctl -f -u kubelet,查看日志,发现报错:
Unable to update cni config: No networks found in /etc/cni/net.d

解决办法:

# 将缺少的文件从master节点拷贝到Node节点
scp -r selenium@192.168.56.104:/etc/cni /etc/cni 
systemctl daemon-reload && systemctl restart kubelet

在这里插入图片描述
都是Ready状态,代表搭建完成😄

DVWA(Damn Vulnerable Web Application)是一款专门为渗透测试人员设计的Web应用程序。它提供了一个安全漏洞测试环境,可以帮助测试人员进行漏洞挖掘和渗透测试。 下面是在Ubuntu 18.04上搭建DVWA的步骤: 1. 安装LAMP 在Ubuntu 18.04上安装LAMP(Linux、Apache、MySQL、PHP)环境,可以使用以下命令: ```bash sudo apt update sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql ``` 安装过程中会提示你设置MySQL的root用户密码。 2. 下载DVWA 可以从GitHub上下载最新版本的DVWA: ```bash sudo apt install git cd /var/www/html/ sudo git clone https://github.com/ethicalhack3r/DVWA.git ``` 3. 配置DVWA 将dvwa/config/config.inc.php.dist文件复制一份,并重命名为config.inc.php: ```bash cd DVWA/config sudo cp config.inc.php.dist config.inc.php ``` 编辑config.inc.php文件,将以下几行代码修改为: ```php $_DVWA[ 'db_user' ] = 'root'; $_DVWA[ 'db_password' ] = 'your_mysql_root_password'; ``` 4. 设置DVWA 将DVWA文件夹的权限设置为Web服务器可写入: ```bash sudo chown -R www-data:www-data /var/www/html/DVWA/ sudo chmod -R 755 /var/www/html/DVWA/ ``` 5. 启动DVWA 在浏览器中输入http://localhost/DVWA,进入DVWA的登录界面。默认的用户名和密码均为admin。登录成功后,可以进入DVWA的主界面,开始使用它提供的漏洞测试环境。 以上就是在Ubuntu 18.04上搭建DVWA的步骤。希望对你有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Selenium399

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值