Kubernetes1--Kubeadm安装

Kubeadm安装Kubernetes环境总结:

Kubernetes服务架构采用Mater-Slave,不考虑高可用,一般采用一个Master节点和多个Slave节点,这里采用1Master和2Slave节点

首先这里采用Vmware来安装三台Linux操作系统,网络设置为NAT模式

操作系统centos7,内核版本:

Master和Slave均要操作

1.配置好各节点hosts文件

K8smaster    192.168.3.3

K8snode1    192.168.3.4

K8snode2    192.168.3.5

2.关闭系统防火墙

Systemctl  stop    firewalld.service

Systemctl  disable  firewalld.service

3.关闭Selinux

Vim  /etc/selinux/config

SELINUX=disabled

SELinux配置文件/etc/selinux/config控制系统下一次启动过程中载入哪个策略,以及系统运行在哪个模式下。

4.关闭swap

Swapoff  -a

5.配置系统内核参数使流过网桥的流量也进入iptables/netfilter框架中

Vim 在/etc/sysctl.conf中添加以下配置:

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

sysctl –p

重启Linux

6.配置阿里K8S YUM源

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=0

EOF

yum -y install epel-release

EPEL,即Extra Packages for Enterprise Linux的简称,是为企业级Linux提供的一组高质量的额外软件包,包括但不限于Red Hat Enterprise Linux (RHEL), CentOS and Scientific Linux (SL), Oracle Enterprise Linux (OEL),使用docker之前安装EPEL源。
如果安装失败,也可以手动安装:

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

rpm -vih epel-release-7-11.noarch.rpm

安装epel源遇到了很多错,可以看一下后面的解决过程

yum clean all

yum makecache

7.安装kubeadm和相关工具包

不能下载以下软件,可以配置一下阿里源仓库

https://blog.csdn.net/aiming66/article/details/78879996

yum -y install docker kubelet kubeadm kubectl kubernetes-cni

8.启动Docker与kubelet服务

systemctl enable docker && systemctl start docker

systemctl enable kubelet

操作过程注意查看日志  tail -f /var/log/messages

kubelet报错:

添加如下:

KUBELET_EXTRA_ARGS=--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice

9.配置加速镜像

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://99b9e5v9.mirror.aliyuncs.com"]

}

EOF

不同docker版本可能配置信息不同,配置文件 /etc/sysconfig/docker

sudo systemctl daemon-reload

sudo systemctl restart docker

10.下载K8S相关镜像

这里下载相关镜像版本应与kubeadm版本一致,这里采用kubeadm  1.12.0

#!/bin/bash
images=(kube-proxy-amd64:v1.12.0-rc.1 
        kube-scheduler-amd64:v1.12.0-rc.1 
        kube-controller-manager-amd64:v1.12.0-rc.1 
        kube-apiserver-amd64:v1.12.0-rc.1
        etcd-amd64:3.1.12 
        coredns:1.2.2
        pause-amd64:3.1 
        kubernetes-dashboard-amd64:v1.8.3 
        k8s-dns-sidecar-amd64:1.14.8 
        k8s-dns-kube-dns-amd64:1.14.8
        k8s-dns-dnsmasq-nanny-amd64:1.14.8)
for imageName in ${images[@]} ; do
    docker pull keveon/$imageName
done

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

docker tag keveon/kube-proxy-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-proxy:v1.12.0-rc.1
docker rmi keveon/kube-proxy-amd64:v1.12.0-rc.1

docker tag keveon/kube-scheduler-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-scheduler:v1.12.0-rc.1
docker rmi keveon/kube-scheduler-amd64:v1.12.0-rc.1

docker tag keveon/kube-controller-manager-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-controller-manager:v1.12.0-rc.1
docker rmi keveon/kube-controller-manager-amd64:v1.12.0-rc.1

docker tag keveon/kube-apiserver-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-apiserver:v1.12.0-rc.1
docker rmi keveon/kube-apiserver-amd64:v1.12.0-rc.1

docker tag keveon/etcd-amd64:3.1.12 k8s.gcr.io/etcd:3.2.24
docker rmi keveon/etcd-amd64:3.1.12

docker tag keveon/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker rmi keveon/coredns:1.2.2

docker tag keveon/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker rmi keveon/pause-amd64:3.1

下面是1.10版本的下载方式,各镜像变化方式蛮大的。

#!/bin/bash

images=(kube-proxy-amd64:v1.10.0 kube-scheduler-amd64:v1.10.0 kube-controller-manager-amd64:v1.10.0 kube-apiserver-amd64:v1.10.0 etcd-amd64:3.1.12 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube-dns-amd64:1.14.8 k8s-dns-dnsmasq-nanny-amd64:1.14.8)

for imageName in ${images[@]} ; do

    docker pull keveon/$imageName

    docker tag keveon/$imageName k8s.gcr.io/$imageName

    docker rmi keveon/$imageName

done

下载结果如下:

关于images镜像版本,下载地址:

https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=docker.io%2Fkeveon&starCount=0

镜像版本应与docker  kubelet   kubeadm 版本保持一致

所以此处改为下载v1.12.0版本镜像

11.master节点操作如下

初始化安装K8S Master

kubeadm init --kubernetes-version=v1.12.0-rc.1 --pod-network-cidr=10.244.0.0/16

版本要与下载的镜像版本一致,由于kubeadm现在是1.12.0版本,镜像的名字需要修改如下:

镜像仓库位置在:

https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=docker.io%2Fkeveon&starCount=0

这里需要考虑kubeadm的安装版本,可以查看日志tail -f /var/log/messages来查看需要容器版本有哪些,利用docker  tag修改如下:

配置kubectl认证信息

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

master节点安装flannel网络:

12.安装flannel网络

mkdir -p /etc/cni/net.d/

cat <<EOF> /etc/cni/net.d/10-flannel.conf

{
"name": "cbr0",
"type": "flannel",
"delegate": {
"isDefaultGateway": true
}
}

EOF

{
"name":"cbr0"
"type":"flannel"
"delegate":{"isDefaultGateway":true}
}

mkdir /usr/share/oci-umount/oci-umount.d -p

mkdir /run/flannel/

cat <<EOF> /run/flannel/subnet.env

FLANNEL_NETWORK=10.244.0.0/16

FLANNEL_SUBNET=10.244.1.0/24

FLANNEL_MTU=1450

FLANNEL_IPMASQ=true

EOF

确保配置文件配置正确

 /etc/cni/net.d/10-flannel.conf

/run/flannel/subnet.env

查看镜像是否已经下载:

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

13.Node节点:

Node节点镜像准备如下:

执行1-10步骤

配置flannel网络文件:

 /etc/cni/net.d/10-flannel.conf

/run/flannel/subnet.env

准备flannel镜像:

加入master节点

kubeadm join 

其他操作

master重启

kubeadm reset

swapoff –a

kubeadm init --kubernetes-version=v1.12.0-rc.1 --pod-network-cidr=10.244.0.0/16

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

配置/etc/cni/net.d/10-flannel.conf文件

{
  "name": "cbr0",
  "type": "flannel",
  "delegate": {
    "isDefaultGateway": true
  }
}

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

node重启

kubeadm reset

swapoff –a

kubeadm join

kubectl管理:

# 查看节点状态

kubectl get nodes

kubectl describe node k8snode1

# 查看pods状态

kubectl get pods --all-namespaces

# 查看K8S集群状态

kubectl get cs

查看资源:

kubectl get pods

删除某个pod:

kubectl delete pod pod-name

DNS服务搭建

配置好各主机/etc/hosts

验证DNS服务:

kubectl run curl --image=radial/busyboxplus:curl -i --tty

nslookup kubernetes.default

kubectl delete deploy curl

安装epel引发的血案:

安装epel 

yum install epel-release

或者

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

rpm -vih epel-release-7-11.noarch.rpm

其中有两台安装成功,一台安装失败,报错如下:

查了一下,解决办法大致如下,修改epel.repo文件或者配置DNS=8.8.8.8 仍然报错

后来又查了一下,说是更换源:

#中科大镜像源 高质量源

rpm -Uvh  http://mirrors.ustc.edu.cn/centos/7.0.1406/extras/x86_64/Packages/epel-release-7-5.noarch.rpm

#浙大源 

rpm-Uvh http://mirrors.zju.edu.cn/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

#上海交大源

rpm -Uvh  http://ftp.sjtu.edu.cn/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

#还有东北的活雷锋东软的源

http://mirrors.neusoft.edu.cn/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

#sohu镜像源

rpm -Uvh  http://mirrors.sohu.com/fedora-epel/7/x86_64/e/epel-release-7-2.noarch.rpm

清华大学:

https://mirrors.tuna.tsinghua.edu.cn

阿里源:

http://mirrors.aliyun.com

将epel.repo  baseurl更换为上海交大源:

还是报错:

一直显示这个文件import失败,于是我看了一下这个文件:

浏览器是可以访问到的,说明文件源没有问题。服务器访问一下:

发现没有内容输出,换了一台发现有内容输出:

擦,好像是这台服务器的网络配置有问题或者是防火墙有问题可能过滤拦截了。

在另外一台上使用wget下载该配置文件: 可以正常下载

在本台上下载,发现下载文件竟然是登录网关页面的html代码,擦,果然是网络的问题。

Master节点报错如下:

后来发现quay.io/coreos/flannel:v0.9.1-amd64这个镜像没有下载下来

执行这一步:

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

看一下上述文件的内容;

其中要使用镜像quay.io/coreos/flannel:v0.9.1-amd64

下载images镜像脚本以及tag修改如下:

#!/bin/bash
images=(kube-proxy-amd64:v1.12.0-rc.1 
        kube-scheduler-amd64:v1.12.0-rc.1 
        kube-controller-manager-amd64:v1.12.0-rc.1 
        kube-apiserver-amd64:v1.12.0-rc.1
        etcd-amd64:3.1.12 
        coredns:1.2.2
        pause-amd64:3.1 
        kubernetes-dashboard-amd64:v1.8.3 
        k8s-dns-sidecar-amd64:1.14.8 
        k8s-dns-kube-dns-amd64:1.14.8
        k8s-dns-dnsmasq-nanny-amd64:1.14.8)
for imageName in ${images[@]} ; do
    docker pull keveon/$imageName
done

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

docker tag keveon/kube-proxy-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-proxy:v1.12.0-rc.1
docker rmi keveon/kube-proxy-amd64:v1.12.0-rc.1

docker tag keveon/kube-scheduler-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-scheduler:v1.12.0-rc.1
docker rmi keveon/kube-scheduler-amd64:v1.12.0-rc.1

docker tag keveon/kube-controller-manager-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-controller-manager:v1.12.0-rc.1
docker rmi keveon/kube-controller-manager-amd64:v1.12.0-rc.1

docker tag keveon/kube-apiserver-amd64:v1.12.0-rc.1 k8s.gcr.io/kube-apiserver:v1.12.0-rc.1
docker rmi keveon/kube-apiserver-amd64:v1.12.0-rc.1

docker tag keveon/etcd-amd64:3.1.12 k8s.gcr.io/etcd:3.2.24
docker rmi keveon/etcd-amd64:3.1.12

docker tag keveon/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker rmi keveon/coredns:1.2.2

docker tag keveon/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker rmi keveon/pause-amd64:3.1

修改文件内容: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/ --cni-bin-dir=/opt/cni/bin""
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值