Kubeadm 部署 k8s 集群

这篇具有很好参考价值的文章主要介绍了Kubeadm 部署 k8s 集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.初始化设置

2.所有节点安装docker

3.k8s节点安装kubeadm,kubelet和kubectl

4.部署K8S集群 

5.部署Dashboard

6.部署harbor私有仓库


名称 设置 组件
master 192.168.116.70(2C/4G,cpu核心数要求大于2) docker、kubeadm、kubelet、kubectl、flannel
node01 192.168.116.60(2C/2G) docker、kubeadm、kubelet、kubectl、flannel
node02 192.168.116.50(2C/2G) docker、kubeadm、kubelet、kubectl、flannel
harbor 192.168.116.50(hub.abc.com) docker、docker-compose、harbor-offline-v1.2.2

1.初始化设置

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a						#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab		#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
#加载 ip_vs 模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

#修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02

#所有节点修改hosts文件
vim /etc/hosts
192.168.116.70 master
192.168.116.60 node01
192.168.116.50 node02

#调整内核参数
#开启网桥模式,可将网桥的流量传递给iptables链
#关闭ipv6协议
cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

#生效参数
sysctl --system  

2.所有节点安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce docker-ce-cli containerd.io

mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service 

3.k8s节点安装kubeadm,kubelet和kubectl

#定义kubernetes源
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

yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

#开机自启kubelet
systemctl enable --now kubelet.service

#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

4.部署K8S集群 

kubeadm config images list --kubernetes-version 1.20.15        #查看初始化需要的镜像

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

拉取以上所需的镜像(我这里直接加载镜像压缩包)

#在 master 节点上传 v1.20.15.zip 压缩包至 /opt 目录
unzip v1.20.15.zip -d /opt/k8s
cd /opt/k8s/
for i in $(ls *.tar); do docker load -i $i; done

#复制镜像和脚本到 node 节点,并在 node 节点上执行脚本加载镜像文件
scp -r /opt/k8s root@node01:/opt
scp -r /opt/k8s root@node02:/opt

初始化 kubeadm

kubeadm config print init-defaults > /opt/k8s/kubeadm-config.yaml       #获取初始化模板文件

修改文件并执行初始化

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
#--upload-certs  参数可以在后续执行加入节点时自动分发证书文件
#tee kubeadm-init.log  用以输出日志

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

如果初始化失败,检查问题,并执行以下操作后,重新初始化

kubeadm reset -f
ipvsadm --clear(需要先下载ipvsadm)
rm -rf ~/.kube

执行完后查看组件状态,会发现有两个组件状态不健康(是由于官方配置文件有问题)

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

解决该问题,需要修改 scheduler 和 controller-manager 的yaml文件

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

所有节点部署网络插件flannel,上传 flannel 插件和镜像包,master准备flannel部署文件

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

在master执行flannel部署文件

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

检查状态(成功)

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

将node节点加入集群(在node节点执行初始化日志提示的命令,可通过我们导出的日志文件kubeadm-init.log查看)

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

检查状态(成功)

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

5.部署Dashboard

选取一个node节点上传dashboard软件

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

master上传配置文件

#在 master01 节点上操作
#上传 recommended.yaml 文件到 /opt/k8s 目录中
cd /opt/k8s
vim recommended.yaml
#默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001     #添加
  type: NodePort          #添加
  selector:
    k8s-app: kubernetes-dashboard
	
kubectl apply -f recommended.yaml

执行配置文件并查看

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

创建service account并绑定默认cluster-admin管理员集群角色,获取token

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

浏览器访问,输入token登入

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

6.部署harbor私有仓库

首先在所有节点docker配置文件中添加私有仓库地址,添加主机映射

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

添加完后重启docker服务

然后安装harbor

#上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

tar zxvf harbor-offline-installer-v1.2.2.tgz
cd harbor/
vim harbor.cfg
#修改主机名,使用https
5  hostname = hub.abc.com
9  ui_url_protocol = https
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
59 harbor_admin_password = Harbor12345

做私有证书

mkdir -p /data/cert
cd /data/cert
#生成私钥
openssl genrsa -des3 -out server.key 2048
输入两遍密码:

#生成证书签名请求文件
openssl req -new -key server.key -out server.csr
输入私钥密码:
输入国家名:CN
输入省名:
输入市名:
输入组织名:
输入机构名:
输入域名:hub.abc.com
输入管理员邮箱:admin@abc.com
其它全部直接回车

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

#备份私钥
cp server.key server.key.bak

#清除私钥密码
openssl rsa -in server.key.bak -out server.key
输入私钥密码:

#签名证书
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

部署harbor,完成后检查状态

cd /opt/harbor/
./prepare
./install.sh

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

浏览器访问https://hub.abc.com

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm

Kubeadm 部署 k8s 集群,服务器,linux,运维,docker,k8s,kubeadm文章来源地址https://www.toymoban.com/news/detail-702100.html

到了这里,关于Kubeadm 部署 k8s 集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于kubeadm部署K8S集群

    目录 基于kubeadm部署K8S集群 一、环境准备 1、主机初始化配置 2、配置主机名并绑定hosts,不同主机名称不同 3、主机配置初始化 二、部署docker环境 1、三台主机上分别部署 Docker 环境 2、镜像加速器(所有主机配置) 三、部署kubernetes集群 (一)组件介绍 (二)配置阿里云yu

    2024年02月13日
    浏览(44)
  • 基于kubeadm快速部署k8s集群

    1.所有节点部署docker 环境 2.修改docke的管理进程(修改cgroup的管理进程为systemd)   3.基础准备 4.所有节点安装kubeadm,kubelet,kubectl 5.初始化网络组件 5.初始化master节点 6.拷贝授权文件,用于管理K8S集群 7. 自动补全功能-新手必备 ## 恭喜你!master节点准备完成## 8.node节点加入集

    2024年01月16日
    浏览(51)
  • 基于Kubeadm部署k8s集群:下篇

    继续上篇内容 目录 7、安装flannel 8、节点管理命令 三、安装Dashboard UI 1、部署Dashboard 2、开放端口设置 3、权限配置 7、安装flannel Master 节点NotReady 的原因就是因为没有使用任何的网络插件,此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Cana

    2024年02月13日
    浏览(48)
  • 使用kubeadm快速部署一个K8s集群

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更

    2024年02月09日
    浏览(62)
  • 使用kubeadm方式快速部署一个K8S集群

    目录 一、环境准备 二、环境初始化  三、在所有主机上安装相关软件 1、安装docker 2、配置k8s的yum源 3、安装kubelet、kubeadm、kubectl 四、部署Kubernetes Master 五、加入Kubernets Node 六、部署CNI网络插件 七、测试k8s集群 我的是CentOS7系统,然后准备三台虚拟主机 一台master,和两台no

    2024年02月11日
    浏览(64)
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群

    这里我们配置一个 单master集群 。( 一个Master节点,多个Node节点 ) 1.硬件环境准备 一台或多台机器,操作系统 CentOS7.x-86_x64 。这里我们使用安装了CentOS7的三台虚拟机 硬件配置 : 2GB或更多RAM , 2个CPU或更多CPU , 硬盘30GB或更多 2.主机名称和IP地址规划 3. 初始化准备工作 (1).关

    2024年02月10日
    浏览(58)
  • kubeadm部署k8s 1.26.0版本高可用集群

    1.前言 本次搭建使用centos7.9系统,并且使用haproxy+keepalived作为高可用架构软件,haproxy实现k8s集群管理节点apiserver服务的负载均衡以实现集群的高可用功能,keepalived保障了hapxoy的高可用,容器引擎使用docker,需要额外引入cri-docker服务,且使用集群内置的etcd服务,并配置etcd的

    2024年02月11日
    浏览(47)
  • Kubeadm - K8S1.20 - 高可用集群部署(博客)

    1.系统设置 注意事项: master节点cpu核心数要求大于2 ●最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳 ●学会一个版本的 高可用部署,其他版本操作都差不多 ●宿主机尽量升级到CentOS 7.9 ●内核kernel升级到 4.19+ 这种稳定的内核 ●部署k8

    2024年02月05日
    浏览(43)
  • 通过kubeadm部署k8s 1.27高可有集群

    本次部署使用外部etcd集群+LB+K8S集群方案。如下图: 软件列表及软件版本:CentOS7U9, Linux kernel 5.4,docker-ce 23.0.6,cri-dockerd v0.3.1,k8s集群为1.27.1 所有主机均需要操作。 所有主机均需要操作。 所有主机均需要操作。 修改完成后需要重启操作系统,如不重启,可临时关闭,命令为s

    2024年02月13日
    浏览(41)
  • CentOS7使用kubeadm部署k8s-1.28集群

    参考资料:生产环境 记录使用CentOS7.9进行k8s-1.28版本部署,运行时环境使用containerd,网络插件使用calic,集群搭建完成后。搭建NFS共享存储环境,测试运行pod并挂载使用持久卷。 主机名 **IP地址 ** 角色 基础组件 el7-linux-node-01 192.168.240.11 k8s-master kubeadm,kubelet,kubectl,containerd,nf

    2024年04月26日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包