安装Kubernetes集群
裸机搭建一般有两种用方式“kubernetes方式”和“二进制方式”,Kubernetes是一个K8s部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernete集群,二进制方式需将所有组件安装,非常的复杂,所以一般采用kubeadm方式。
·
1.安装方式介绍
裸机搭建
裸机搭建一般有两种用方式“kubernetes方式”和“二进制方式”,Kubernetes是一个K8s部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernete集群,二进制方式需将所有组件安装,非常的复杂,所以一般采用kubeadm方式。
第一步:环境准备
<1>【所有节点】设置主机名
# 分别设置主机名hostnamectl set-hostname k8s-1 --( 主机名 )# 分别修改 host 文件vi /etc/hosts更改完节点后重启虚拟机
<2>【所有节点】关闭干扰服务
需要关闭所有节点的防火墙,
selinux
,
dnsmasq
,
swap
,
NetworkManager
# 关闭防火墙,并取消开机启动systemctl disable --now firewalld# 关闭 dnsmasq ,并取消开机启动systemctl disable --now dnsmasq# 关闭 NetworkManager ,并取消开机启动 --- 注意,如果是 centos8 就不用关闭了,此处用 centos7 ,需要关闭systemctl disable --now NetworkManager# 关闭 selinuxsetenforce 0sed -i 's/enforcing/disabled/' /etc/selinux/conŨ g# 临时停止关闭 swapswapoff -a && sysctl -w vm.swappiness=0#永久关闭,为了以后重启都不会开启了vi /etc/fstab注释掉 /dev/mapper/centos-swap swap swap defaults 0 0或者UUID=bdb8b148-c906-4108-bd85-0391f977feef swap swap defaults 0 0
<3>【所有节点】同步时钟
如果每个节点时间不同步相互之间无法连接
# 安装软件 ntpdateyum -y install ntpdate# 同步时区ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeecho 'Asiz/Shanghai' >/etc/timezone# 设置时间服务器【此处用 aliyun 】ntpdate time2.aliyun.com# 设置自动同步时间crontab -e # 开启任务设置,将下面的内容设置进去-------- 下面是设置的内容【和 vi 操作一样】 -------0 */5 * * * ntpdate time2.aliyun.com # 每 5 分钟同步一次时间,然后 wq 保存,可以通过 crontab-l 查看已配置的定时任务
<4>【所有节点】将桥接的 IPv4 流量传递到 iptables 链
桥接的
IPv4
流量传递到
iptables
链在
Kubernetes
中的作用主要包括以下方面:
1.
网络策略实现:
Kubernetes
中的网络策略允许你定义
Pod
之间和
Pod
与外部通信的规则。通过将桥接的
IPv4
流量传递到
iptables
链,可以在
iptables
规则中定义网络策略,例如允许或拒绝特定
Pod
之间的通信、
限制源
/
目标
IP
、端口或协议等。
2.
服务代理和负载均衡:
iptables
在
Kubernetes
中用于服务代理和负载均衡。
Kubernetes Service
抽象背后
是
iptables
规则,它们使得从集群内部访问服务更为便捷,同时提供负载均衡功能。
3.
流量管理和路由:
通过
iptables
可以对进出
Pod
的流量进行管理和路由。这包括在节点之间路由流量、
NAT
转发、
SNAT
、
DNAT
等操作,确保流量按照预期的方式在集群内外传输。
4.
网络隔离和安全性:
iptables
允许在
Kubernetes
中实现网络隔离和安全策略。通过定义适当的规则,可以 限制 Pod
之间的通信,增强安全性并确保网络的完整性。
在
Kubernetes
中,
CNI
插件负责配置网络和实现网络策略。这些插件可以使用
iptables
或其他技术来管理容器间
通信。通过将桥接的
IPv4
流量传递到
iptables
链,
Kubernetes
可以利用
iptables
提供的丰富功能来管理容器间
的流量、实施网络策略并确保网络的可用性和安全性。
cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF# 执行生效sysctl --system
<5>所有节点安装Docker/kubeadm/kubelet
注意docker版本和安装k8s有对应关系,此处用docker-ce-18.06.1
在 GitHub 可以查看所有 Kubernetets 版本信息:https://github.com/kubernetes/kubernetes/releases
Docker安装
yum install -y wgetwget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum -y install docker-ce-18.06.1.ce-3.el7systemctl enable dockersystemctl start dockerdocker --version
给docker添加阿里云源,这样下载会快
# 写入镜像加速sudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://5n5qtc03.mirror.aliyuncs.com"]}EOF# 重启 docker 守护进程systemctl daemon-reload# 重启 docker 服务systemctl restart docker
添加yum源,用于安装kubernetes
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.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 # 下载 kubeadm , kubelet 和 kubectl ,版本 1.18.0systemctl enable kubelet # 开机自动启动 kubelet
第二步:Master节点安装
<1>、kubeadm初始化master节点
kubeadm init \--apiserver-advertise-address=192.168.174.140 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.18.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16
注意:
kubeadm
初始化完毕后,最后生成一句
“kubeadm join”
一定要保存好这个内容,因为这是用 于向k8s
中加入节点的命令。
<2>、使用kubectl工具
kubectl工具可以查看集群信息
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/conŨ gsudo chown $(id -u):$(id -g) $HOME/.kube/conŨ g------------ 上面在 master 节点中只要运行一次即可 -----------kubectl get nodes --- 查看 node 情况
<3>、安装Pod网络插件
vi kube-ũ annel.yml注意: kube-flannel 和安装 k8s 版本有关联的,如果更改 k8s 版本了需要去网上自己找可以用 kube-flannel 配置
具体内容看附件
安装完成后
kubectl apply -f kube- flannel.yml --- 给 kubectl apply 设置一个 yml 源kubectl get pods -n kube-system --- 查看 pod 的运行情况
# 再次查看 node 节点信息kubectl get nodes
第三步:Node节点安装
使用第二步、<2>中的那句kubeadm join” 就可以将node节点加载到集群中
第四步:测试集群【master进行】
在
Kubernetes
集群中创建一个
pod
【
tomcat
】,验证是否正常运行:
kubectl create deployment tomcat --image=tomcat:8.5.23 --- 拉取 tomcatkubectl get pod --- 查看 pod 拉取情况kubectl expose deployment tomcat --port=8080 --type=NodePort --- 开启一个服务,暴露 8080 端口kubectl get pod,svc --- 查看服务情况
查看运行情况
更多推荐
已为社区贡献1条内容
所有评论(0)