Centos7搭建K8s

Centos7搭建K8s

 

声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系作者。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。 

1、环境配置

安装就不写了,网上找吧,最好在安装的时候吧IP配置好,这样可以节省很多时间。

主机名ip系统版本
k8s-master 192.168.100.10 Centos7.9.2009
k8s-node1 192.168.100.11 Centos7.9.2009
k8s-node2 192.168.100.12 Centos7.9.2009

我的网络模式为Net图片

2、系统配置

# 关闭防火墙systemctl stop firewalldsystemctl disable firewalld# 永久关闭selinuxsed -i 's/enforcing/disabled/' /etc/selinux/config# 永久关闭swapswapoff -ased -ri 's/.*swap.*/#&/' /etc/fstab# 修改/etc/hosts192.168.100.10 k8s-master192.168.100.11 k8s-node1192.168.100.12 k8s-node2#配置阿里云软件源 因为默认是国外的 访问很慢# 移除centos原本的软件源rm -rfv /etc/yum.repos.d/*# 拉取阿里云的软件源curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

这里如果出现未知的错误,首先检查自己的网络是不是能ping通外网

如果不能

vi /etc/sysconfig/network-scripts/ifcfg-ens33  #编辑网络配置文件

我的网络配置图片

我的DNS配置

vi /etc/resolv.conf

图片

检查一下是不是少了什么和多了什么,IP 网关 DNS
service network restart 重启网络服务

3、K8S安装

安装docker、kubeadm、kubelet,kubectl

cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF

修改主机名称

配置master的时候就执行这条    hostnamectl set-hostname k8s-master    hostname $hostname配置node1的时候就执行这条    hostnamectl set-hostname k8s-node1    hostname $hostname配置node2的时候就执行这条    hostnamectl set-hostname k8s-node2    hostname $hostname

配置阿里云Docker-ce源

# 安装yum管理工具yum install -y yum-utils# 配置阿里云的docker源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

常用包安装

yum install vim bash-completion net-tools gcc -y

安装Docker

yum install docker-cesystemctl start docker # 启动Dockersystemctl enable docker # 设置自动启动
时间同步
#启动chronyd服务systemctl start chronyd#设置开机自启systemctl enable chronyd#验证时间是否一致date

安装kubelet kubeadm和kubectl

#安装kubelet、kubeadm和kubectlyum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0#设置kubelet开机自启systemctl enable kubelet && systemctl start kubelet

4、K8S部署

部署k8s-master

在安装后看一下版本号 替换下面的version的位置

--apiserver-advertise-address= 这个为自己的IP

这里如果是master就是master的IP node1就是node1的IP 自行替换

图片

安装后就可以看到版本号 自行替换

--kubernetes-version 版本号

kubeadm init --apiserver-advertise-address=192.168.100.10 --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

正常配置后会看到下图

图片

记住这条命令node加入集群的时候会用到

master

kubeadm join 192.168.100.10:6443 --token ldojrs.if0qllicnxvhgbfz \        --discovery-token-ca-cert-hash sha256:8444adb487db5d7f9949c9709c1d2c093355ad6e7c7a03e482a5ff431d8f660a

解决报错(如果没有报错请跳过)  errorIt seems like the kubelet isn't running or healthy.

打开文件/usr/lib/systemd/system/docker.service,

ESC+:   然后/ExecStart 直接定位到位置

如下图,将 --exec-opt native.cgroupdriver=systemd 添加到execStart 里面

图片

重新加载配置重启docker
systemctl daemon-reload && systemctl restart docker

这里如果是master就是master的IP node1就是node1的IP 自行替换

再次部署k8s

kubeadm init --apiserver-advertise-address=192.168.100.10 --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

拷贝认证文件

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

5、Calico安装

这里我只在master主机上安装了

安装网络插件(Calico)

这里要对应版本 自行替换版本号

Kubernetes版本 vs Calico 版本1.18、1.19、1.20    3.18    1.19、1.20、1.21    3.19 1.19、1.20、1.21    3.20 1.19、1.20、1.21    3.20 1.21、1.22、1.23    3.22  1.21、1.22、1.23    3.23 1.22、1.23、1.24    3.24 
mkdir testcd testcurl https://docs.projectcalico.org/archive/v3.23/manifests/calico.yaml -O
这里如果部署的时候报错了 请自己替换一下对应的版本3.22-3.24都试试 或许就不报错了

定义Pod网络

vim calico.yaml这里可以使用 esc + : 然后输入 /CALICO_IPV4POOL_CIDR 直接定位到修改的位置

图片

这里的IP要跟--pod-network-cidr的一样 10.20.20.0/24

加速Docker镜像

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

部署

kubectl apply -f calico.yaml  需要等一会儿全部runing后kubectl get pods -n kube-system

图片

等待一会儿就部署完成了

图片

6、Node加入集群

将Node加入集群

kubeadm join 192.168.100.10:6443 --token ldojrs.if0qllicnxvhgbfz \        --discovery-token-ca-cert-hash sha256:8444adb487db5d7f9949c9709c1d2c093355ad6e7c7a03e482a5ff431d8f660a

如果有报错[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists

原因是已经加入过了需要先清除一下 再node节点  清除后再次加入

kubeadm reset

如果忘了可以在master主机上 输入下面的命令

kubeadm token create --print-join-command

加入后可以在master上看到

kubectl get nodes

图片

这个Token是有时间的一般来说是24小时,当然这个各个版本可能都不太一样,具体版本具体分析,也可以生成永久Token。

kubeadm token create --print-join-command #重新生成tokenkubeadm token create --ttl 0 --print-join-command #生成永久token

当然这个永久Token是有风险的,这里我使用临时Token,过期了就重新生成。

7、Dashboard部署

Dashboard Web UI界面可以管理K8s,这里使用镜像加速地址

wget https://raw.staticdn.net/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml --no-check-certificate

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部

编辑配置文件

vim recommended.yaml

nodePort端口范围为30000-32767,并添加type:NodePort

---
kind: ServiceapiVersion: v1metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboardspec:ports:- port: 443targetPort: 8443nodePort: 32000selector:k8s-app: kubernetes-dashboardtype: NodePort---

加载配置文件

kubectl apply -f recommended.yamlkubectl get pods -n kubernetes-dashboard #需要等待加载

图片

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# 获取用户Tokenkubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

访问master 或者 node1 和 node2 任意IP + 配置的端口即可访问

如果在访问的时候出现下图中的错误,这个时候你会发现很无奈 因为无论你怎么配置他都进不去,不要慌。

先把输入法切换到英文然后点击网站页面的空白处,不用选中任何东西输入:thisisunsafe

然后回车,你会发现可以访问了,很神奇。

输入前

图片

输入后,惊喜的发现可以访问,接着输入你的token。

图片

因为我没有部署任何资源,所以这里是空的。

图片

 

 

一个"赞" 和 "在看",将是对作者最大的鼓励。

 

点击下方关注我!!!

河马安全区
保护网络安全的黄金法则:不要让你的猫坐在键盘上乱按键。
13篇原创内容
阅读 331
河马安全区
13篇原创内容
 
posted @ 2023-07-14 08:46  往事已成昨天  阅读(440)  评论(0编辑  收藏  举报