使用kubeadm搭建kubernetes集群初体验

准备工作

1、为了方便使用虚拟机。系统版本:CentOS-7-x86_64-DVD-2009.最少3台。配置要求:2核3G。

2、对系统环境进行配置,以下命令3台机器都需要执行。

4、保证3台机器属于同一局域网,并且可以访问公网。节点名称对应ipr如下:

master节点:192.168.18.132 node1:192.168.18.133 node2:192.168.18.134

关闭防火墙

关闭防火墙禁用开机自启。

systemctl stop firewalld
systemctl disable firewalld
关闭selinux

关闭selinux,一种永久关闭,一种临时关闭。我执行永久关闭

#永久
sed -i 's/enforcing/disabled/' /etc/selinux/config 
#临时
setenforce 0 
关闭swap
free -g #查看
swapoff -a #临时关闭
vim /etc/fstab #永久关闭需重启
更改主机名

一台master,两台node分别为node1和node2。并且给master节点增加hosts(只给master)

#更改master节点名称
hostnamectl set-hostname k8s-master
#重新加载使其生效
bash

#在master节点添加hosts(只给master)
vi /etc/hosts
#内容如下,ip与节点名对应
192.168.18.132 k8s-master
192.168.18.133 k8s-node1
192.168.18.134 k8s-node2

#更改node1节点名称
hostnamectl set-hostname k8s-node1
#重新加载使其生效
bash

#更改node2节点名称
hostnamectl set-hostname k8s-node2
#重新加载使其生效
bash
将桥接的iPv4流量传递到iptable的链
vi /etc/sysctl.d/k8s.config

#内容如下
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

# 加载配置文件
sysctl --system
时间同步
yum install ntpdate -y
ntpdate time.windows.com
安装docker并启动

安装步骤不在多说,参考docker相关文章

https://hicb.gitee.io/docker/nraed93tov

sudo service docker restart
配置阿里云源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo

#内容如下
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0

#由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用
yum install -y --nogpgcheck kubelet kubeadm kubectl
#开机启动
systemctl enable kubelet

至此,所需环境准备完成,下一步搭建master节点

master节点初始化

apiserver-advertise-address 主节点的ip地址

image-repository 镜像地址

kubernetes-version版本应与kubeadm版本一致

pod-network-cidr 部署网络时会用到

kubeadm init \
--apiserver-advertise-address=192.168.18.132 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
问题及解决方案:

问题:

The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz’ failed with error: Get “http://localhost:10248/healthz”: dial tcp [::1]:10248: connect: connection refused.

原因是之前我的Docker是用yum安装的,docker的cgroup驱动程序默认设置为systemd。默认情况下Kubernetes cgroup为system,我们需要更改Docker cgroup驱动

解决方法:

vim /etc/docker/daemon.json
#内容如下
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
#重启docker并且kubeadm重置后再次执行init
systemctl restart docker
kubeadm reset
配置文件拷贝

在初始化完成后,会提示需要拷贝配置文件到默认路径下,至此可以进行集群管理了。

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

部署网络

下载yaml文件

wget https://docs.projectcalico.org/manifests/calico.yaml

更改其中的CALICO_IPV4POOL_CIDR变量值,更改为init时的pod-network-cidr变量的值10.244.0.0/16,更改完成后

kubectl apply -f calico.yaml
问题及解决

如果下载失败,则需要手动拉取。查看所需镜像

cat calico.yaml |grep image

#手动拉取
docker pull calico/cni:v3.22.1
docker pull calico/pod2daemon-flexvol:v3.22.1
docker pull calico/node:v3.22.1
docker pull calico/kube-controllers:v3.22.1

加入节点

在node1和node2节点中执行以下命令。

sudo yum install -y 
kubeadm join 192.168.18.132:6443 --token yl4z8b.rufwz67v4f58fx3f \
	--discovery-token-ca-cert-hash sha256:5ad823d0773b1e437711e4a929aaa2e9390899b8d6a2c1b634f4c7e9f44dd123

查看节点

kubectl get pods -n kube-system

日志

//kubelet日志
journalctl -u kubelet > a

部署dashboard

下载yaml文件,增加 type:NodeProt属性

wget https://raw.fastgit.org//kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

运行

kubectl apply -f recommended.yaml

查看端口

kubectl get pods,svc -n kubernetes-dashboard

创建用户

kubectl create serviceaccount dashboard-admin -n kube-system

用户授权

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

获取token

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print$1}')

重启

kubectl replace --force -f recommended.yaml
#查看dashboard运行在那台机器上面
kubectl get pods -n kube-system -o wide

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值