Kubeadm搭建kubernetes(k8s)集群

目录

一、集群介绍

1、集群搭建方法

二、集群部署

环境配置

所有节点,关闭防火墙规则,关闭selinux,关闭swap交换 

node02(192.168.137.30) 

node01(192.168.137.20) ​编辑

master(192.168.137.10) ​编辑

修改主机名,并添加主机映射 

调整内核参数 

​编辑所有节点安装Docker

所有节点配置K8S源

部署 kubernetes Master 节点(master 节点上执行)

执行以下命令可使用kubectl管理工具

k8s-node 节点加入 master 节点(两个 node 执行) 

添加网络插件

给node添加标签

master检查

再次查询服务是否正常

测试K8s集群,在集群中创建pod,验证是否能正常运行

测试一下,master和node都能通过自己的IP的31757端口去访问


一、集群介绍

1、集群搭建方法

目前生产部署Kubernetes 集群主要有两种方式:

①、Kubeadm

Kubeadm是一个K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署Kubernetes 集群。

②、二进制

github 下载发行版的二进制包,手动部署每个组件,组成Kubernetes 集群。

Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

二、集群部署

在所有节点上安装Docker和kubeadm
部署Kubernetes Master
部署容器网络插件
部署 Kubernetes Node,将节点加入Kubernetes集群中
部署 Dashboard Web 页面,可视化查看Kubernetes资源

环境配置

服务器类型I地址
master192.168.137.10
nodeo1192.168.137.20
node02192.168.137.30

所有节点,关闭防火墙规则,关闭selinux,关闭swap交换 

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
swapoff -a		#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab	#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
free -g         #查看交换分区
 
注:这里只用一台机子做展示

node02(192.168.137.30) 

node01(192.168.137.20) 

master(192.168.137.10) 

修改主机名,并添加主机映射 

cat >> /etc/hosts << EOF
192.168.137.10 master
192.168.137.20 node1
192.168.137.30 node2
EOF

调整内核参数 

将桥接的 IPV4 流量传递到 iptables 链

#调整内核参数
 
cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
 
#加载参数
sysctl --system  
 
注:这里只用一台机子做展示

所有节点安装Docker

yum install -y yum-utils device-mapper-persistent-data lvm2 
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
yum install -y docker-ce
 
systemctl start docker
systemctl enable docker
 
vim /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
 
##安装方法之前博客有具体描述,这里就不显示出来了

所有节点配置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
#安装软件
yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3
systemctl enable kubelet
systemctl start kubelet

部署 kubernetes Master 节点(master 节点上执行)

kubeadm init --apiserver-advertise-address=192.168.137.10 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.21.3 --service-cidr=10.125.0.0/16 --pod-network-cidr=10.150.0.0/16

执行以下命令可使用kubectl管理工具

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

k8s-node 节点加入 master 节点(两个 node 执行) 

 ps:加入集群的命令中的token==有效期为24小时==,若过期,需要重新申请token

#生成token
kubeadm token create
#查看token
kubeadm token list  | awk -F" " '{print $1}'
#获取CA公钥的hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'

添加网络插件

######################网络添加############################
#添加
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#删除
kubectl delete -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
######################weget下载##########################
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#更改配置文件
vim kube-flannel.yml
#将IP更改为master节点制作时的IP地址
 84       "Network": "10.150.0.0/16"
#添加插件
kubectl apply -f + kube-flannel.yml的路径

给node添加标签

kubectl label node node1 node-role.kubernetes.io/node=node
kubectl label node node2 node-role.kubernetes.io/node=node
#获取节点信息
kubectl get nodes

master检查

#查询master是否正常 
kubectl get cs 
#若为unhealthy 
vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
 #将- --port=0注释掉

再次查询服务是否正常

#查询所有pod是否正常运行 
kubectl get pods -A 
#查询master是否正常 
kubectl get cs 
#查询node节点是否ready 
kubectl get nodes

测试K8s集群,在集群中创建pod,验证是否能正常运行

测试一下,master和node都能通过自己的IP的31757端口去访问

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值