CentOS7环境下快速部署Kubernetes(k8s)集群

核能气质少年 提交于 2021-01-16 02:02:35
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制
k8s的概念可以参考如下链接
小孩子也能看懂的kubernetes教程
图文 | 任何人都能看懂的 Kubernetes 教程!
图文:你女朋友也能看懂的 Kubernetes !
下面介绍CentOS7环境下快速部署一套Kubernetes(k8s)集群
三台CentOS7.6.1810版本的Linux虚拟机 内存大小均为4GB
1、k8s-master 10.20.10.235
2、k8s-node1 10.20.10.237
3、k8s-node2 10.20.10.238
具体操作步骤如下
1、环境准备
1)三台主机分别修改主机名
k8s-master 10.20.10.235: hostnamectl set-hostname k8s-master
k8s-node1 10.20.10.237: hostnamectl set-hostname k8s-node1
k8s-node2 10.20.10.238: hostnamectl set-hostname k8s-node2
三台都修改vi /etc/hosts文件,加入主机名解析
10.20.10.235 k8s-master
10.20.10.237 k8s-node1
10.20.10.238 k8s-node2
以node1为例,并测试解析是否OK
2)三台主机均关闭防火墙,selinux,并关闭swap分区
swapoff -a
并永久关闭,/etc/fstab中注释掉swap分区一行
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
echo "net.bridge.bridge-nf-call-iptables = 1 ">>/etc/sysctl.d/k8s.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1 ">>/etc/sysctl.d/k8s.conf
sysctl --system
开启net.bridge.bridge-nf-call-iptables=1,也就意味着二层的网桥在转发包时也会被iptables的FORWARD规则所过滤
具体原理可以参考如下文章
https://blog.csdn.net/qq_44910432/article/details/89292974
2、所有节点安装docker并启用docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install docker-ce
systemctl enable docker
systemctl start docker
docker version
3、所有节点均安装并启用kubelet kubeadm kubectl
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
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 kubeadm kubectl
systemctl enable kubelet 
systemctl start kubelet
4、主节点进行初始化kubeadm init
 1) kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.0 --apiserver-advertise-address 10.20.10.235 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16
2)根据上一步的提示执行如下
 mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
这是 kubectl get nodes 可以看到master还是处于NotReady状态
5、安装网络flannel组件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml 
kubectl get pods -n kube-system
kubectl get nodes
这时可以看到状态为Ready状态了
6、k8s-node1和k8s-node2加入集群
kubeadm join 10.20.10.235:6443 --token h5oegb.ops4pu6ynhmixhwh \
    --discovery-token-ca-cert-hash sha256:c058feb51154138d0783cb8403970e5463aa2301f791217b8c3a1e658cfbebbf
(token是主节点初始化kubeadm init完成时的提示)加入集群
这时再等待一段时间再看节点状态可以看到集群建立成功
kubectl get pods,svc -n kube-system

7、当然你也可以安装kubernetes-dashboard等UI工具去管理集群
下面使用安装cockpit的方式查看kubernetes集群
关于cockpit 的安装可以参考之前的文章CentOS7环境下使用Cockpit创建KVM虚拟机
yum install cockpit
yum install cockpit-docker.x86_64
yum install cockpit-kubernetes.x86_64
systemctl enable cockpit.socket 
systemctl start cockpit.socket

本文分享自微信公众号 - WalkingCloud(WalkingCloud2018)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!