K8s集群搭建

 

目录

一、准备工作

1、3台centerOS系统

2、修改主机名称(3台)

3、关闭防火墙(3台)

4、关闭SWAP(3台)

 5、修改hosts文件(3台都做)

6、修改网卡配置(3台都做)

7、系统模块配置(3台都做)

8、安装k8s和docker(3台都做)

9、修改K8S和docker配置文件(3台都做)

 二、集群搭建

1、启动master(master)

2、启动noder1和noder2(在node1和node2) 

3、查看是否加入集群

4、排错

 三、部署网络

1、下载calico(maseter)

2、修改pod网络(master)

3、修改calico.yaml镜像源(master) 

4、进行部署(master)

四、部署Dashboard

1、下载并配置Dashboard(master)

2、创建service account(master)

3、登录Dashboard(master)


一、准备工作

1、3台centerOS系统

192.168.40.204

Master

192.168.40.205

Noder1

192.168.40.206

Noder2

 

2、修改主机名称(3台)

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

3、关闭防火墙(3台)

#关闭防火墙
systemctl stop firewalld
systemctl stop firewalldsystemctl disable firewalld
#关闭SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config

4、关闭SWAP(3台)

方式1(注释掉fstab下面一行):
vim /etc/fstab
#/dev/mapper/rhel-swap   none    swap    defaults        0 0
方式2:
sed -ri 's/.*swap.*/#&/' /etc/fstab

 5、修改hosts文件(3台都做)

vim /etc/hosts
192.168.40.204 k8s-master
192.168.40.205 k8s-node1
192.168.40.206 k8s-node2

6、修改网卡配置(3台都做)

vim /etc/sysctl.d/kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p

解释:

vim /etc/sysctl.d/kubernetes.conf

        这个配置用于启用IPv6数据包的防火墙规则检查。在Kubernetes集群中,网络通信可能会涉及IPv6,因此需要启用此选项来确保正确的网络功能

net.bridge.bridge-nf-call-ip6tables = 1

        net.b这个配置用于启用iptables规则检查。Kubernetes使用iptables来管理容器的网络流量,这个选项确保iptables规则能够正确地应用于容器通信ridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

        这个配置用于启用Linux主机上的IP数据包转发功能。在Kubernetes中,通常需要将网络流量从一个节点路由到另一个节点,以实现容器之间的通信。启用IP数据包转发是实现这一功能的关键。

sysctl -p

        sysctl -p 命令用于重新加载系统的 sysctl 配置文件,以应用其中的更改,而无需重新启动系统。在你之前提到的 /etc/sysctl.d/kubernetes.conf 文件中进行的更改将在运行 sysctl -p 命令后生效,以确保系统的网络配置按照你的要求进行了调整。

7、系统模块配置(3台都做)

modprobe br_netfilter
lsmod | grep br_netfilter  

解释:

        运行 modprobe br_netfilter 命令是为了在 Linux 内核中启用桥接网络的网络包过滤功能,以满足容器化和容器编排环境中的网络需求和安全性要求。

8、安装k8s和docker(3台都做)

#安装K8S
yum install -y kubelet-1.27.0 kubeadm-1.27.0 kubectl-1.27.0
#安装docker
yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18
#设置K8S开机自启
systemctl enable kubelet

 

 注意!!!!!:K8S集群和docker的版本必须兼容。

9、修改K8S和docker配置文件(3台都做)

#设置K8S镜像
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#设置docker配置文件,如果没有daemon.json文件需要手动进行创建。
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://8zs3633v.mirror.aliyuncs.com"]
}

#重启docker
systemctl restart docker
systemctl enable docker.service

 二、集群搭建

1、启动master(master)

kubeadm init --apiserver-advertise-address=192.168.40.204 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version v1.23.0 --service-cidr=10.10.10.0/24 --pod-network-cidr=10.20.20.0/24 --ignore-preflight-errors=all

#解释:

kubeadm init:这部分是命令本身,用于启动 Kubernetes 初始化过程。

--apiserver-advertise-address=192.168.40.204:这个选项指定了 Kubernetes API 服务器向集群中的其他节点和外部客户端宣布的 IP 地址。在这里,API 服务器将使用 192.168.40.204 这个 IP 地址来与其他节点和客户端通信。

--image-repository=registry.aliyuncs.com/google_containers:这个选项用于指定容器镜像的仓库地址。在这里,使用了 registry.aliyuncs.com/google_containers 作为容器镜像仓库,以加速容器镜像的下载。

--kubernetes-version v1.23.0:这个选项用于指定要安装的 Kubernetes 版本。在这里,使用的版本是 v1.23.0。

--service-cidr=10.10.10.0/24:这个选项用于指定 Kubernetes 集群中的服务 IP 地址范围。服务 IP 地址是用于访问 Kubernetes 服务的虚拟 IP 地址。在这里,服务 IP 地址范围被设置为 10.10.10.0/24。

--pod-network-cidr=10.20.20.0/24:这个选项用于指定 Kubernetes 集群中的 Pod 网络 IP 地址范围。Pod 网络 IP 地址用于容器之间的通信。在这里,Pod 网络 IP 地址范围被设置为 10.20.20.0/24。

--ignore-preflight-errors=all:这个选项用于忽略 Kubernetes 初始化过程中的预检错误。在这里,使用 all 来表示忽略所有预检错误,这样可以绕过一些可能会引起初始化失败的问题。请注意,这个选项在生产环境中应该谨慎使用,只在特定情况下才使用它,例如在非生产环境中进行实验或调试。

执行上述代码的结果如下,需要复制标注中的内容在node1,node2执行。

2、启动noder1和noder2(在node1和node2) 

在node1和node2上执行启动master中的token命令进行加入。

kubeadm join 192.168.40.204:6443 --token 84yx13.vtuiffikqo9ln33m \
	--discovery-token-ca-cert-hash sha256:4b5d495d83d9dffe5c91c5e11be365402606ffadf8430864f9ff4a2b6b5afeb3

3、查看是否加入集群 

kubectl get nodes

3、查看是否加入集群

kubectl get nodes

 

4、排错

(1)在启动master或noder报错:

“[kubelet-check] 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配置文件有没有出错daemon.json。

(2)在启动noder时如果报错:
 

“xecution phase preTlight

fetch the kubeadm-config (onfioMap: failed to get component configs: could not download the kubelet configuration from (onfigap"kubelet-config":configmaps"kubelet-C 1s Torbldden: user stack trace of system:bootstrap:wa37wh" this error execute with.get resource V=5 or highe configmapsin API group in the namespace kube-systel”

解决:

   判断master和noder的K8S集群的版本是否一致是否进行重启。通过如下命令进行检查。

#卸载当前docker
yum remove -y docker-ce-x.x.x docker-ce-cli-x.x.x
#卸载当前k8s
yum remove -y  kubelet-x.x.0 kubeadm-x.x.x kubectl-x.x.x

(3)在noder启动失败后会显示一些配置信息已经存在已经存在的报错信息。

解决:

kubeadm reset   -y
rm -rf /etc/kubernetes/kubelet.conf
rm -rf /etc/kubernetes/pki/ca.crt
systemctl restart kubelet

 三、部署网络

1、下载calico(maseter)

   Calico(Calico网络,或Calico项目)是一个用于容器网络和网络策略的开源网络解决方案,特别是在Kubernetes和容器编排环境中广泛使用。Calico旨在提供高性能、可扩展性和安全性的容器网络功能。

方式一:
wget https://docs.projectcalico.org/v3.19/manifests/calico.yaml --no-check-certificate
方式二:
wget https://docs.projectcalico.org/manifests/calico.yaml --n

2、修改pod网络(master)

修改pod网络“CALICO_IPV4POOL_CIDR”与--pod-network-cidr一致。

3、修改calico.yaml镜像源(master) 

cat calico.yaml |grep 'image:'
sed -i 's#docker.io/##g' calico.yaml

4、进行部署(master)

#部署
kubectl apply -f calico.yaml

#查看状态,执行完上一条命令需要等一会才全部running
kubectl get pods -n kube-system 

 5、排错

1、在部署kubectl apply -f calico.yaml时如果报错:

error: error parsing calico.yaml: error converting YAML to JSON: yaml: line 182: did not find expected '-' indicator

解决:请查看回车是否严格正确。

四、部署Dashboard

1、下载并配置Dashboard(master)

        Dashboard是官方提供的一个Web UI,可用于基本管理K8s资源,执行如下命令下载yaml文件。默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部。

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

        修改recommended.yaml中nodePort为31000,添加并且添加type:NodePort。

注意空格!!!!不然会报错。之后执行如下命令:

kubectl apply -f recommended.yaml
kubectl get pods -n kubernetes-dashboard

解释:

kubectl apply -f recommended.yaml

        用于应用 Kubernetes 资源清单文件 recommended.yaml 中定义的资源配置到 Kubernetes 集群。这个命令将创建、更新或删除集群中的资源,具体取决于清单文件中定义的内容和集群的当前状态

kubectl get pods -n kubernetes-dashboard

        获取位于 kubernetes-dashboard 命名空间中的所有 Pod 的信息。

2、创建service account(master)

在master节点创建service account并绑定默认cluster-admin管理员集群角色。

# 创建用户
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}')

执行命令后复制其中的tocken

3、登录Dashboard(master)

复制结果中token值登陆Dashboard。登陆https://master ip 或 node ip:31000 都可以。

结果:

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值