Linux企业实战之容器(六)——Kubernetes(1)

1 Kubernetes简介

  • 在Docker作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Brog系统运行管理着成千上万的容器应用;
  • kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
  • Kubernetes项目源于Brog,可以说是集结了Brog设计精华,并且吸收了Brog系统中的经验和教训;
  • Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交付给用户;
  • Kubernetes的优点:

    • 隐藏资源管理和错误处理,用户仅需要关注应用的开发;
    • 服务高可用、高可靠;
    • 可将负载运行在由成千上万的机器联合而成的集群中。

2 Kubernetes设计架构

Kubernetes集群包含有代理节点kubele和Master组件(APIs,scheduler,etc),一切都基于分布式的存储系统
Linux企业实战之容器(六)——Kubernetes(1)_第1张图片

3 安装部署Kubernetes

实验环境:

虚拟机 作用
docker01 (192.168.43.100) k8s集群的master节点
docker02 (192.168.43.101) k8s集群的work节点1
docker03 (192.168.43.102) k8s集群的work节点2

步骤一:配置好docker01、docker02、docker03三台虚拟机的yum源,安装并开启docker,编辑好本地解析

(这里我们就以其中的docker01的配置为例)
Linux企业实战之容器(六)——Kubernetes(1)_第2张图片
Linux企业实战之容器(六)——Kubernetes(1)_第3张图片

步骤一:禁用 swap 分区(在三台虚拟机上都做)

swapoff -a
vim /etc/fstab

注释掉下面这一行内容
# /dev/mapper/rhel-swap   swap                    swap    defaults        0 0

Linux企业实战之容器(六)——Kubernetes(1)_第4张图片
步骤二:获取Kubernetes的镜像和相关软件包,编辑好仓库文件(在三台虚拟机上都做)

像之前安装docker一样,这些资源我们可以在阿里云镜像站中去搜索

Linux企业实战之容器(六)——Kubernetes(1)_第5张图片
Linux企业实战之容器(六)——Kubernetes(1)_第6张图片

Linux企业实战之容器(六)——Kubernetes(1)_第7张图片

将编辑好的仓库文件发送给其他两台虚拟机

Linux企业实战之容器(六)——Kubernetes(1)_第8张图片

步骤三:安装kubelet、kubeadm、kubectl 并且开启kubelet(在三台虚拟机上都做)

yum install  kubelet kubeadm kubectl   -y
systemctl start kubelet.service 
systemctl enable kubelet.service 

Linux企业实战之容器(六)——Kubernetes(1)_第9张图片
步骤四:设置火墙规则(在三台虚拟机上都做)

vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl  --system               #查看配置是否被加载

Linux企业实战之容器(六)——Kubernetes(1)_第10张图片
在这里插入图片描述

步骤五:修改Docker cgroup driver为systemd(在三台虚拟机上都做)

docker info

Linux企业实战之容器(六)——Kubernetes(1)_第11张图片

cd /etc/docker
vim daemon.json

 "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts":{
      "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
      "overlay2.override_kernel_check=true"
  ]

systemcl   daemon-reload
systemctl  restart docker

Linux企业实战之容器(六)——Kubernetes(1)_第12张图片

docker info   #查看一下是否修改为systemd

Linux企业实战之容器(六)——Kubernetes(1)_第13张图片

步骤六:拉取安装k8s的相关镜像

kubeadm config print init-defaults    #查看安装k8s的相关信息
kubeadm config images list            #查询一下需要的镜像
kubeadm config images list  --image-repository registry.aliyuncs.com/google containers  #由于无法,所以我们制定仓库为阿里云镜像站,查看一下需要下载的镜像是否阿里云镜像站中都含有

Linux企业实战之容器(六)——Kubernetes(1)_第14张图片

Linux企业实战之容器(六)——Kubernetes(1)_第15张图片

Linux企业实战之容器(六)——Kubernetes(1)_第16张图片

kubeadm config images pull  --image-repository registry.aliyuncs.com/google_containers  #从阿里云镜像站拉取镜像

Linux企业实战之容器(六)——Kubernetes(1)_第17张图片

修改镜像名称,然后将镜像上传到本地仓库(这样方便节点上其他虚拟机拉取镜像)

docker images | grep registry.aliyuncs.com | awk '{print $1":"$2}' | awk -F / '{print $3}'

for i in `docker images | grep registry.aliyuncs.com | awk '{print $1":"$2}' | awk -F / '{print $3}'`;do docker tag registry.aliyuncs.com/google_containers/$i reg.westos.org:5000/$i; done

docker images | grep reg.westos.org
docker images | grep reg.westos.org | awk '{print $1":"$2}'
for i in `docker images | grep reg.westos.org | awk '{print $1":"$2}'`; do docker push $i; done

在这里插入图片描述
Linux企业实战之容器(六)——Kubernetes(1)_第18张图片

Linux企业实战之容器(六)——Kubernetes(1)_第19张图片

步骤七:在docker01(master节点)上面初始化集群

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org:5000

注意:–pod-network-cidr=10.244.0.0/16 是 k8s 的网络插件所需要用到的配置信息,用来给 node 分配子网段。然后我们这边用到的网络插件是 flannel,所以需要这么来配置;后面是镜像仓库,因为我们已经把镜像上传到了本地仓库,所以要指明仓库。

Linux企业实战之容器(六)——Kubernetes(1)_第20张图片

步骤八:让其他节点加入集群之中

Linux企业实战之容器(六)——Kubernetes(1)_第21张图片

kubeadm 提示我们,其他节点需要加入集群的话,只需要执行这条命令就行了,同时里面包含了加入集群所需要的 token

在docker02和docker03上进行如下操作,让它们加入集群


kubeadm join 192.168.43.100:6443 --token c7wzlm.avp1uxbwta7snlc3 \
    --discovery-token-ca-cert-hash sha256:eff17146179dac74f7f03768ace0dcbebb8384358ba6dd5459724901abbe4d60 

Linux企业实战之容器(六)——Kubernetes(1)_第22张图片

Linux企业实战之容器(六)——Kubernetes(1)_第23张图片

步骤九:创建一个普通用户,按照刚刚安装成功的提示,创建目录以及相关文件,查看节点信息

useradd kubeadm
su - kubeadm 
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       #查看节点的信息

Linux企业实战之容器(六)——Kubernetes(1)_第24张图片

步骤十:配置命令补齐功能,安装flannel网络组件

echo "source <(kubectl completion bash)" >> ~/.bashrc
source .bashrc
kubectl get pod -n kube-system 
kubectl get pod -n kube-system  -o wide
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml            #安装flannel网络组件

Linux企业实战之容器(六)——Kubernetes(1)_第25张图片

安装完flannel组件后:

Linux企业实战之容器(六)——Kubernetes(1)_第26张图片

注意:这里所有的Pod的状态必须为Running才算完成配置,否则会在后面创建应用时出现问题。

你可能感兴趣的:(Linux企业实战之容器(六)——Kubernetes(1))