欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

K8S集群的搭建

程序员文章站 2022-06-12 15:21:26
...

一、K8s简介

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过Kubernetes你可以:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

Kubernetes 特点:

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化, 插件化, 可挂载, 可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

集群架构图:

K8S集群的搭建

二、安装部署

1.关闭防火墙:

    systemctl stop firewalld
    systemctl disable firewalld

2.关闭selinux:

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

3.关闭swap:
swapoff -a
vim /etc/fstab

4.设置主机名:名字可以自己定义

hostname k8s-master

 5.添加主机名与IP对应关系

vim /etc/hosts

在末尾增加如下信心,根据自己的ip和名称修改

10.2.150.20 k8s-master
10.2.150.9 k8s-node1
10.2.150.24 k8s-node2
10.2.150.17 k8s-node3

6.将桥接的IPv4流量传递到iptables的链:

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

sysctl --system

 

7.安装Docker

wget https://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

 

8.增加阿里云YUM源,方便下载镜像

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

 

9.安装kubelet、kubeadm和kubectl

yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0

systemctl enable kubelet.service

 

注意:以上9个步骤是在所有的节点都要执行的。

 

10.在Master节点上执行初始化操作

kubeadm init --apiserver-advertise-address=192.168.109.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

--apiserver-advertise-address改为主节点的ip,其他可以保持不变,主要是一些内存通信网络ip

初始化成功后提示执行如下命令

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

初始化成功后会有一条join命令,先保存,不要执行

kubeadm join 10.2.150.20:6443 --token dd8xlg.xgoj9bpipsc8sgqq \
--discovery-token-ca-cert-hash sha256:5efa9c8ad644aa1af77c72f8a1c1a8b995e2e82e51b0e9728316af8e7bf127dc

如下图所示:

K8S集群的搭建

11.在Master节点上 安装pod网络插件CNI

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

此步骤会去拉取镜像,可能比较慢,也可以手动先拉取好

docker pull quay.io/coreos/flannel:v0.11.0-amd64

如果quay.io无法访问,可以使用别人共享的镜像

docker pull lizhenliang/flannel:v0.11.0-amd64

 

至此master节点安装完成

 

12.在Node节点上执行第10步的join命令,将节点加入集群中

kubeadm join 10.2.150.20:6443 --token dd8xlg.xgoj9bpipsc8sgqq --discovery-token-ca-cert-hash sha256:5efa9c8ad644aa1af77c72f8a1c1a8b995e2e82e51b0e9728316af8e7bf127dc

 

13.加入成功后,在master节点上执行

kubectl get nodes

查看集群节点情况

K8S集群的搭建

三、搭建可视化

1.在Master节点上下载kubernetes-dashboard.yaml

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

下载修改端口配置

K8S集群的搭建

2.手动拉取镜像文件,国内镜像

docker pull lizhenliang/kubernetes-dashboard-amd64:v1.10.1

 

3.执行 

kubectl apply -f kubernetes-dashboard.yaml

 

4.创建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}')

 

5.第四步执行完后生成token,复制token,在访问时输入令牌栏中,即可访问可视化界面

K8S集群的搭建

 

四、搭建分布式TensorFlow集群

K8S集群的搭建

1.在所有的节点上拉取镜像

docker pull tensorflow/tensorflow:1.13.0rc2-py3-jupyter

过程可能比较漫长,失败了重新拉取即可

 

2.TensorFlow集群需要用到NFS系统,网络文件共享系统,所以先安装NFS

3.在NFS节点上安装依赖,

yum -y install nfs-utils rpcbind

 

4.NFS的目录创建和配置

mkdir -p /root/data/nfs

vim /etc/exports

如下图:

K8S集群的搭建

5.启动nfs

systemctl start rpcbind.service
systemctl enable rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl status rpcbind.service
systemctl status nfs.service

 

6.验证nfs是否可用,在另一个节点上安装依赖

yum -y intall nfs-utils
showmount -e 10.2.150.20
mount -t nfs 10.2.150.20:/root/data/nfs /mnt  (挂载至本地/mnt目录)

挂在成功说明nfs已经配好了

 

7.在Master节点上新建编辑tf-ps.yaml

配置好nfs的ip地址和文件路径,镜像

kind: Deployment

metadata:

  name: tensorflow-ps

spec:

  replicas: 1

  template:

    metadata:

      labels:

        name: tensorflow-ps

        role: ps

    spec:

      containers:

      - name: ps

        image: tensorflow/tensorflow:1.13.0rc2-py3-jupyter

        ports:

        - containerPort: 2222

        resources:

          limits:

            cpu: 4

            memory: 2Gi

          requests:

            cpu: 2

            memory: 1Gi

        volumeMounts:

        - mountPath: /datanfs

          readOnly: false

          name: nfs

      volumes:

      - name: nfs

        nfs:

          server: 10.2.150.20

          path: "/root/data/nfs"  

---

apiVersion: v1

kind: Service

metadata:

  name: tensorflow-ps-service

  labels:

    name: tensorflow-ps

    role: service

spec:

  ports:

  - port: 2222

    targetPort: 2222

  selector:

    name: tensorflow-ps

 

8.执行 kubectl create -f tf-ps.yaml服务

 9.创建完成后可以通过 kubectl get pods,查看运行情况

K8S集群的搭建

相关标签: 集群