Kubernetes集群搭建流程 - 极悦
首页 课程 师资 教程 报名

Kubernetes集群搭建流程

  • 2022-05-06 09:55:20
  • 1685次 极悦

前置知识点

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

•kubeadm

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

•二进制包

从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群(这种方法在社区里面叫做hardway,适用于学习)。

这里采用kubeadm搭建集群。

kubeadm工具功能:

•kubeadm init:初始化一个Master节点

•kubeadm join:将工作节点加入集群

•kubeadm upgrade:升级K8s版本

•kubeadm token:管理 kubeadm join 使用的令牌

•kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改

•kubeadm version:打印 kubeadm 版本

•kubeadm alpha:预览可用的新功能

准备环境建议

服务器要求:

•建议最小硬件配置:2核CPU、2G内存、30G硬盘

•服务器最好可以访问外网,会有从网上拉取镜像需求,如果服务器不能上网,需要提前下载对应镜像并导入节点

环境准备(三台主机)

IP:192.168.47.128 主机名:k8s-master 系统:centos 7.6.1810 (Core)
IP:192.168.47.132 主机名:k8s-node1  系统:centos 7.6.1810 (Core)
IP:192.168.47.134 主机名:k8s-node1  系统:centos 7.6.1810 (Core)

三台主机全部关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0

关闭swap

swapoff -a  $ 临时
vi /etc/fstab  $ 永久 把加载swap分区的那行记录注释掉即可(推荐做法)
即注释掉下面这行即可

添加主机名与IP对应关系(三台主机都执行)

cat >> /etc/hosts << EOF
192.168.47.128 k8s-master
192.168.47.132 k8s-node1
192.168.47.134 k8s-node2
EOF

设置 192.168.47.128主机名

# hostnamectl set-hostname  k8s-master

设置 192.168.47.132主机名

# hostnamectl set-hostname  k8s-node1

设置 192.168.47.134主机名

# hostnamectl set-hostname  k8s-node2

将桥接的IPv4流量传递到iptables的链(三台主机都执行):

# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl --system

所有节点安装Docker/kubeadm/kubelet

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

安装docker

$ wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a

添加阿里云YUM软件源

$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubeadm,kubelet,kubectl

$ yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
$ systemctl enable kubelet

初始化Master节点

在192.168.47.128(Master)执行。

$ kubeadm init \
  --apiserver-advertise-address=192.168.47.128 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.15.0 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

使用kubectl工具:

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

将node1,node2加入集群

在192.168.47.132/134(Node)执行。

向集群添加新节点,在master上执行(kubeadm token create --print-join-command生成token)命令:

    kubeadm join 192.168.47.128:6443 --token jt7rdm.q32kdqm1g9ldc3y1     --discovery-token-ca-cert-hash sha256:b612d55a54484a820a00baa8fabc2daf12c8413ac1c1fa01077304c96ecce019

安装Pod网络插件(CNI)

$ kubectl apply -f http://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行(在master上创建的):

$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc

访问地址:http://NodeIP:Port

(kubectl get svc获得端口号)

部署 Dashboard(在master上部署)

$ wget http://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

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

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
$ kubectl apply -f kubernetes-dashboard.yaml

访问地址:http://192.168.47.128:30001

创建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
$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用输出的token登录Dashboard。

获取token的命令:

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

以上就是关于“Kubernetes集群搭建流程”的介绍,大家如果想了解更多相关知识,不妨来关注一下极悦的Java视频教程,里面的课程内容细致全面,通俗易懂,很适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交