Kubernetes练习<1>---k8s的安装部署

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

1、传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

2、新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

3、容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、实验环境部署操作步骤:
1、在真机上面搭建共享yum源,含有docker的安装包
在这里插入图片描述
在这里插入图片描述
2、在server1上配置本地yum源,server2、server3是一样的

[root@server1 ~]# cat /etc/yum.repos.d/docker-ce.repo 
[docker]
name=docker-ce
baseurl=http://172.25.1.250/docker
gpgcheck=0
[root@server1 yum.repos.d]# yum repolist		#查看配置成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、查看各个节点的解析

vim /etc/hosts

4、在server1、server2、server3上面安装docker服务,并且开启

yum install docker-ce -y
[root@server1 yum.repos.d]# systemctl start docker
[root@server1 yum.repos.d]# systemctl enable docker
[root@server1 yum.repos.d]# systemctl status docker

在这里插入图片描述
二、部署一个基本的k8s集群
1、禁用 swap 分区:(三台主机)
注释掉/etc/fstab 文件中的 swap 定义

server124:
[root@server1 yum.repos.d]# swapoff -a
[root@server1 yum.repos.d]# vim /etc/fstab 

在这里插入图片描述
2、下载rpm安装包(三台主机)
下载地址:
https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/primary.xml
https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11fbjEYj

server124

vim /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

yum clean all

setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

在这里插入图片描述
3、修改 sysctl 配置*(三台主机均设置)
对于 RHEL/CentOS 7 系统,可以会由于 iptables 被绕过导致网络请求被错误的路由。所以还需执行如下命令保证 sysctl 配置中 net.bridge.bridge-nf-call-iptables 被设为1。

[root@server1 ~]# vim /etc/sysctl.d/k8s.conf
[root@server1 ~]# cat /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

在这里插入图片描述
在这里插入图片描述

三、Master 节点的安装配置
1、在server1(master节点)上面初始化集群

注意:–pod-network-cidr=10.244.0.0/16 是 k8s 的网络插件所需要用到的配置信息,用来给 node 分配子网段。然后我们这边用到的网络插件是 flannel,就是这么配。

kubeadm init --pod-network-cidr=10.244.0.0/16

初始化的时候 kubeadm 会做一系列的校验,以检测你的服务器是否符合 kubernetes 的安装条件,检测结果分为 [WARNING] 和 [ERROR] 两种。其中 [ERROR] 部分要予以解决。
在这里插入图片描述

错误
[ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.4.3-0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
等等

我们可以通过国内厂商提供的 kubernetes 的镜像服务来下载,比如第一个 k8s.gcr.io/kube-apiserver:v1.14.1 镜像,可以执行如下命令从阿里云下载:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.1

在这里插入图片描述
镜像下载下来以后再通过 docker tag 命令将其改成kudeadm安装时候需要的镜像名称。

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.1 k8s.gcr.io/kube-apiserver:v1.18.1

在这里插入图片描述
其它缺失的镜像也依照上面步骤进行操作

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.1 k8s.gcr.io/kube-controller-manager:v1.18.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.1 k8s.gcr.io/kube-scheduler:v1.18.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.1 k8s.gcr.io/kube-proxy:v1.18.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

在这里插入图片描述
在这里插入图片描述
2、镜像全部下载完毕后,再执行最开始的 init 命令后 kubeadm 就能成功安装了。最后一行,kubeadm 会提示我们,其他节点需要加入集群的话,只需要执行这条命令就行了,同时里面包含了加入集群所需要的 token(这个要记下来)。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.25.1.1:6443 --token 0pojwp.9qc7ohcng7h6c13y \
    --discovery-token-ca-cert-hash sha256:5fa833ee8861cc3ddd7d6d960287a1fa313be78b0a1c4fd71d3e4000bc4504bf 

在这里插入图片描述
在这里插入图片描述

四、配置 kubectl
kubectl 是管理 Kubernetes 集群的命令行工具,前面我们已经在所有的节点安装了 kubectl。Master 初始化安装完后需要做一些配置工作,然后 kubectl 就能使用了

1、具体操作就依照前面 kubeadm init 输出的第一个红框内容。这里推荐使用使用普通用户执行 kubectl(root 会有一些问题),首先我们新建个普通用户wjjk8s.

[root@server1 ~]# useradd wjjk8s
[root@server1 ~]# vim /etc/sudoers
[root@server1 ~]# su - wjjk8s 
[wjjk8s@server1 ~]$ mkdir -p $HOME/.kube
[wjjk8s@server1 ~]$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[wjjk8s@server1 ~]$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

在这里插入图片描述
在这里插入图片描述

2、为了使用更加便捷,启用 kubectl 命令的自动补全功能。

echo "source <(kubectl completion bash)" >> ~/.bashrc

3、安装 Pod 网络
要让 Kubernetes 集群能够工作,必须安装 Pod 网络,否则 Pod 之间无法通信。(即前面 kubeadm init 输出的第二个红框内容)

[wjjk8s@server1 ~]$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4、开放端口(已关闭防火墙)

五、Node 节点的安装配置-将server2加入k8s集群

1,添加节点
(1)在两个 node 节点上分别执行如下命令(即前面 kubeadm init 输出的最后一个红框内容),将其注册到 Cluster 中:

server2:
kubeadm join --token 0pojwp.9qc7ohcng7h6c13y 172.25.1.1:6443 --discovery-token-ca-cert-hash sha256:5fa833ee8861cc3ddd7d6d960287a1fa313be78b0a1c4fd71d3e4000bc4504bf

在这里插入图片描述

kubectl get cs

在这里插入图片描述
2、安装镜像
在每一个 node 节点上我们还需要下载 quay.io/coreos/flannel:v0.11.0-amd64、k8s.gcr.io/pause 和 k8s.gcr.io/kube-proxy 这三个镜像,其中后面两个镜像具体版本可以执行kubeadm config images list 查看一下:

server24:

[root@server2 ~]# docker pull quay.io/coreos/flannel:v0.11.0-amd64

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.1 k8s.gcr.io/kube-proxy:v1.18.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

在这里插入图片描述
在这里插入图片描述
六、查看节点状态
(1)在 master 节点上执行 kubectl get nodes 查看节点状态:

[wjjk8s@server1 ~]$ kubectl get nodes
NAME      STATUS   ROLES    AGE    VERSION
server1   Ready    master   26m    v1.18.1
server2   Ready    <none>   11m    v1.18.1
server4   Ready    <none>   7m4s   v1.18.1

在这里插入图片描述
至此 Kubernetes集群创建成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值