K8S实战:Centos7部署Kubernetes1.20.0集群

一、准备工作

1.1、创建3台虚拟机

1.1.1、下载虚拟机管理工具

由于我的笔记本使用vmware安装虚拟机老是有问题,本次我使用的是Oracle VM VirtualBox虚拟机。下载地址:https://www.virtualbox.org/wiki/Downloads

1.1.2、安装虚拟机管理工具

双击下载的.exe文件即可,建议不要安装在C盘,原因大家都懂的。

1.1.3、下载虚Centos镜像

通过“里巴巴开源镜像站”https://developer.aliyun.com/mirror/进行下载,我本次下载的是Centos 7.9

1.1.4、创建3台虚拟机

创建虚拟机的过程此次省略,不懂的可以去百度就可以了。

1.1.5、设置虚拟机网络环境

我设置的虚拟机网络环境为“桥接模式”

1.2、虚拟机基础配置(3台虚拟机进行相同处理)

1.2.1、配置host

host配置如下图所示,IP地址使用自己的IP地址

192.168.1.7 k8s-master
192.168.1.8 k8s-node01
192.168.1.9 k8s-node02

1.2.2、关闭防火墙

执行一下命令完成操作

systemctl stop firewalld
systemctl disable firewalld

1.2.3、将桥接的IPv4流量传递到iptables的链

执行一下命令进行配置

cat > /etc/sysctl.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

二、Docker安装(所有节点执行)

参考我的另一篇博文:CentOS 7.8 Docker安装、卸载与Docker-Compose的安装

三、Kubernetes安装

3.1、配置阿里云yum源(所有节点执行)

执行一下命令进行配置

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

3.2、安装(所有节点执行)

所有虚拟机执行以下命令进行安装kubelet、kubeadm和kubectl。

yum -y install kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet

执行下面命令关闭swap,不然执行kubeadm命令时会报错

swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

3.3、matser节点初始化

使用以下命令进行matser节点初始化

sysctl -w net.ipv4.ip_forward=1
kubeadm init --apiserver-advertise-address=192.168.1.7 --apiserver-bind-port=6443 --pod-network-cidr=192.168.1.0/16  --service-cidr=10.96.0.0/12 --kubernetes-version=1.20.0 --image-repository registry.aliyuncs.com/google_containers

3.4、创建文件夹、复制文件并给予权限(matser节点)

matser节点初始化成功之后,安装日志会输出接下来操作的提示,执行如下命令创建文件夹、复制文件并给予权限

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

3.5、安装网络插件(matser节点)

通过下面链接下载插件yaml文件

https://docs.projectcalico.org/v3.20/manifests/calico.yaml

修改配置文件,如下图所示
在这里插入图片描述
通过下面命令安装网络插件

kubectl apply -f calico.yaml

3.6、安装node节点

执行matser节点初始化安装成功后,安装日志会输出安装node节点的命令,复制命令,在其他两个node节点中执行。

kubeadm join 192.168.1.7:6443 --token ysjwr1.ii05kwoyv823gdqe --discovery-token-ca-cert-hash sha256:7c6240a7b293068427e031f5d072e4b4c3ab1048fa947a52b8f882b10cca0914

至此,如果顺利的话,kubernetes的安装就完成了,可以使用一下命令检查是否安装成功

kubectl get nodes
kubectl get pods -A

四、kubernetes-dashboard安装

4.1、安装kubernetes-dashboard

执行以下命令安装kubernetes-dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

4.2、暴露端口

执行以下命令

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

type: ClusterIP 改为 type: NodePort

4.3、查询放行的端口

使用以下命令进行查询。

kubectl get svc -A |grep kubernetes-dashboard

4.4、访问web界面

访问: https://集群任意IP:端口 例如:https://192.168.1.7:31820/

4.5、创建访问账号

执行以下命令创建访问账号。

vi dash.yaml

# 内容如下:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
 1. kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

然后执行以下命令

kubectl apply -f dash-usr.yaml

4.6、生成令牌

执行以下命令生成令牌。

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

五、附言

本次搭建kubernetes集群差不多花了一天半了时间。主要在以下几个地方耗费了比较多的时间。

  1. 虚拟机IP地址查看
    在执行ipconfig查看IP的时候提示命令不存在,然后在执行yum install upgrade报如下错误
cannot find valid baseurl for repobase/7/x86_64

解决办法:
执行以下命令,

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
service network restart
yum install upgrade
yum install net-tools

将onboot修改为“yes”,如下图所示
在这里插入图片描述
2. master节点初始化
在参考 Kubernetes集群部署中执行kubeadm init --config=init-config.yaml时,一直报如下错误
错误一:

Failed to start Docker Application Container Engine.

错误二:

k8s-master node not found.

解决方案:
卸载kubernetes旧版本,使用如下脚本

yum remove kube*
modprobe -r ipip
lsmod
rm -rf /etc/kubernetes/
rm -rf /etc/cni
rm -rf /var/lib/etcd
yum clean all

使用如下命令进行初始化并升级kubernetes的版本

kubeadm init --apiserver-advertise-address=192.168.1.7 --apiserver-bind-port=6443 --pod-network-cidr=192.168.1.0/16  --service-cidr=10.96.0.0/12 --kubernetes-version=1.20.0 --image-repository registry.aliyuncs.com/google_containers

补充:kubernetes-dashboard卸载
master节点初始化重置命令

kubeadm reset 
  1. kubernetes-dashboard安装
    在参考 Kubernetes(K8S)集群部署安装完kubernetes-dashboard一直打不开,开始以为是端口防火墙或火狐浏览器太新的问题,后面通过执行kubectl get pod -A发现kubernetes-dashboard的状态不对,服务压根就没起来。
    解决方案:
    通过查看kubernetes-dashboard与kubernetes版本对应关系升级kubernetes-dashboard到v2.4.0解决

补充:kubernetes-dashboard卸载
删除现有的dashboard服务

kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete service dashboard-metrics-scraper --namespace=kubernetes-dashboard

删除现有的dashboard pod

kubectl delete deployment kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete deployment dashboard-metrics-scraper --namespace=kubernetes-dashboard

强制删除现有的dashboard pod命令

kubectl delete pods kubernetes-dashboard-658485d5c7-qnp55 -n kubernetes-dashboard --grace-period=0 --force

六、参考资料

  1. linux下ipconfig命令报:command not found 解决方法
  2. Kubernetes(K8S)集群部署
  3. Kubernetes集群部署
  4. k8s 安装 dashboard与卸载
  5. kubernetes-dashboard与kubernetes版本对应关系
  • 38
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
部署Kubernetes集群需要多台物理机或虚拟机,每个节点至少需要2个CPU、2GB内存和20GB硬盘空间。以下是CentOS 7上部署Kubernetes集群的步骤: 1. 安装Docker 在每个节点上安装Docker,可以使用以下命令: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce sudo systemctl enable docker sudo systemctl start docker ``` 2. 禁用Swap 在每个节点上禁用Swap,可以使用以下命令: ``` sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ``` 3. 安装Kubernetes组件 在每个节点上安装Kubernetes组件,可以使用以下命令: ``` sudo yum install -y kubelet kubeadm kubectl sudo systemctl enable kubelet sudo systemctl start kubelet ``` 4. 初始化Kubernetes Master节点 选择一个节点作为Kubernetes Master节点,运行以下命令进行初始化: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 此命令将初始化Kubernetes Master节点并生成join命令。请记录下生成的join命令,以便稍后将节点加入集群。 5. 安装网络插件 在Kubernetes集群中,网络插件用于连接容器。在Master节点上安装网络插件,可以使用以下命令: ``` sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml ``` 6. 将节点加入集群 将每个节点加入Kubernetes集群,可以使用在第4步中生成的join命令。例如: ``` sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> ``` 其中,`<master-ip>`和`<master-port>`是Kubernetes Master节点的IP地址和端口号,`<token>`和`<hash>`是在第4步中生成的token和hash。 7. 验证集群 使用以下命令验证Kubernetes集群是否正常工作: ``` sudo kubectl get nodes ``` 如果一切正常,将显示所有节点的状态。现在,您已经成功地在CentOS 7上部署Kubernetes集群

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道法自然 实事求是

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

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

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

打赏作者

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

抵扣说明:

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

余额充值