Kubeadm安装Kubernetes1.11

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32642039/article/details/82352014

一、环境介绍

host ip
master1 10.0.0.5
master2 10.0.0.2
master3 10.0.0.17
node1 10.0.0.4
node2 10.0.0.9
slb负载均衡 10.0.0.16

注意:
1.最好选择172网段作为物理机网段
2.(我这里是为了了解原理,在云上自己搭建才使用slb。本地建议keepalived,阿里云建议容器云服务)

前提
1.基于主机名通信:/etc/hosts或者DNS
2.时间同步
3.关闭firewalld和iptables.service

docker version kubernetes version
17.03.2 1.11

可以在这里选择kubernetes的版本
https://github.com/kubernetes/kubernetes/releases

二、原理介绍

1.组件组成

service master1 master2 master3 node1 node2
etcd
API Server
Scheduler
Controller-Manager
kube-proxy
docker
kubelet
flannel

三、kubernetes安装

1.基础配置

在集群所有节点配置时间同步

echo '* * * * * ntpdate ntp.aliyun.com' >> /var/spool/cron/root

关闭防火墙和selinux

# systemctl stop firewalld && systemctl disable firewalld
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled

禁用swap

swapoff -a && sysctl -w vm.swappiness=0
sed '/swap/d' -i /etc/fstab

2.安装kubelet

(1)安装docker
a.Ansible-playbook一键安装docker
b.允许docker开机启动

[root@master1 ansible_playbooks]# systemctl enable docker.service

c.docker会需要到镜像仓库下载文件,由于墙的原因会导致无法下载。需要做如下配置,在kubernetes启动成功后就可以去除:

[root@master1 ~]# vim /usr/lib/systemd/system/docker.service
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"   #在访问https服务时,通过此代理访问
Environment="NO_PROXY=127.0.0.0/8,10.0.0.0/24"  #指定这些网段不走代理
[root@master1 ansible_playbooks]# systemctl daemon-reload 
[root@master1 ansible_playbooks]# systemctl restart docker
[root@master1 ansible_playbooks]# docker info  #确认出现以下信息
Https Proxy: http://www.ik8s.io:10080
No Proxy: 127.0.0.0/8,10.0.0.0/24

(2)安装kubernetes

[root@master1 ~]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enable=1

#推送文件到所有节点
[root@master1 ~]ansible kubernetes -m synchronize -a "src=/etc/yum.repos.d/kubernetes.repo dest=/etc/yum.repos.d/"

#
[[root@master1 ~]# yum repolist

#在所有节点安装kubelet kubeadm kubectl
[root@master1 ~]# ansible kubernetes -m shell -a "yum install -y kubelet kubeadm kubectl"

(3)开启配置

扫描二维码关注公众号,回复: 3804490 查看本文章
  • 打开iptables桥接
[root@master1 ansible_playbooks]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables 
1
[root@master1 ansible_playbooks]# cat /proc/sys/net/bridge/bridge-nf-call-iptables 
1
  • 设置kubelet开机自启
    [root@master1 ansible_playbooks]# systemctl enable kubelet.service

  • 修改配置

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"  #增加此行
  • 节点初始化
[root@master1 ansible_playbooks]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=10.0.0.16

--apiserver-advertise-address     #apiserver将广告其正在监听的IP地址,默认0.0.0.0,即本机所有kube地址 
--apiserver-bind-port    #apiserver监听的端口,默认6443。
--ignore-preflight-errors    #在预检查的时候可以忽略指定错误
--kubernetes-version   #指定kubernetes版本
--pod-network-cidr    #pod所使用的网络
--service-cidr   #serivice所使用的网络

注意:如果启动过程中报错开启了swap空间,可以选择以下两种方案
a.关闭系统swap
b.如果无法关闭swap,那么设置忽略swap

[root@master1 ~]# vim /etc/sysconfig/kubelet #这两个参数一定要同时存在或者同时不存在
KUBELET_EXTRA_ARGS="--fail-swap-on=flsae"
在启动参数后加上 --ignore-preflight-errors=Swap

四、高可用配置

1.云服务商的负载均衡,基于阿里云的SLB或者腾讯云的LB

高可用部署依赖于阿里云SLB为kubernetes apiserver提供负载均衡能力,因此您需要先手动创建一个阿里云SLB,类型为intranet,监听端口6443,后端端口也是6443,后端server backend为您的3个master节点。
这里我使用腾讯云,LB的地址为10.0.0.16

2.自建keepalived
(1)在3台master节点安装安装keepalived

ansible master -m shell -a "yum install -y keepalived"

在3台master修改配置文件

[root@master1 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 520   #<--如果同一個網段有其他的keepalived 不能跟他同一個id
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.19     #<-----VIP  IP
    }
}

virtual_server 10.0.0.254 80 {
    delay_loop 6
    lb_algo loadbalance
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP

    real_server 10.0.0.5 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }   
    real_server 10.0.0.2 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }     
    }
    real_server 10.0.0.17 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }     
    }

 }


[root@master1 ~]# systemctl start keepalived
[root@master1 ~]# systemctl enable keepalived

五、服务测试

安装配置步骤:
1.etcd cluster 仅master节点
2.flanner,集群所有节点
3.配置k8s的master:
kubernetes-master
启动的服务:
kube-apiserver,kube-scheduler,lube-controller-manager
4.配置k8s的各Node节点
kubernetes-node

先设定docker服务
启动的k8s服务kube-proxy kubelet

kubeadm

  • master,node:安装kubelet,kubeadm,docker
  • msaster:kubeadm init
  • nodes:kubeadm join

猜你喜欢

转载自blog.csdn.net/qq_32642039/article/details/82352014