• Centos 7 部署Kubernetes(K8S)集群


    资源链接:https://pan.baidu.com/s/1-PT_QQAf7cTu_znX-S-r9Q 密码:33sr

    转发:http://blog.51cto.com/lizhenliang/1983392

    环境规划

     

    操作系统:CentOS7.3_x64

    kubernetes安装目录:/opt/kubernetes

    版本说明:

    Kubernetes:v1.9

    Docker:18.06.0-ce

    Etcd3.2

    角色

    IP

    组件

    master

    192.168.1.195

    etcd

    kube-apiserver

    kube-controller-manager

    kube-scheduler

    node01

    192.168.1.196

    kube-proxy

    kubelet

    docker

    flannel

    node02

    192.168.1.197

    kube-proxy

    kubelet

    docker

    flannel

    安装Docker

    所有节点执行:

     

    setenforce 0

    iptables -F

    iptables -t nat -F

    iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT  

    iptables -I INPUT -s 192.168.0.0/24 -j ACCEPT

    开启路由转发

    echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
    echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

     

    Node上安装Docker

    # 安装依赖包

    yum install -y yum-utils device-mapper-persistent-data lvm2

    添加Docker软件包源

    yum-config-manager

        --add-repo

        https://download.docker.com/linux/centos/docker-ce.repo

    # 更新yum包索引

    yum makecache fast

    # 安装Docker CE

    yum install docker-ce

    设置默认从中国镜像仓库中拉取:

    # vi /etc/docker/daemon.json

    {

      "registry-mirrors": [ "https://registry.docker-cn.com"]

    }

    # systemctl start docker

    # systemctl enable docker

    测试:

    # docker info

    、安装Etcd

    2.1 下载二进制包

    #yum install etcd –y

    # vi /etc/etcd/etcd.conf

    # systemctl start etcd

    # systemctl enable etcd

    四、部署Flannel网络

    1)写入分配的子网段etcd,供flanneld使用

    # etcdctl -endpoint="http://192.168.1.195:2379" set /coreos.com/network/config  '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'

    2)下载二进制包

    # wget https://github.com/coreos/flannel/releases/download/v0.9.1/flannel-v0.9.1-linux-amd64.tar.gz

    # tar zxvf flannel-v0.9.1-linux-amd64.tar.gz

    # mv flanneld mk-docker-opts.sh /usr/bin

    3)配置Flannel

    vi /etc/sysconfig/flanneld

    FLANNEL_OPTIONS="--etcd-endpoints=http://192.168.1.195:2379  --ip-masq=true"

    4)systemd管理Flannel

    # vi /usr/lib/systemd/system/flanneld.service

    [Unit]

    Description=Flanneld overlay address etcd agent

    After=network.target

    After=network-online.target

    Wants=network-online.target

    Before=docker.service

     

    [Service]

    Type=notify

    EnvironmentFile=/etc/sysconfig/flanneld

    ExecStart=/usr/bin/flanneld  $FLANNEL_OPTIONS

    ExecStartPost=/usr/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env

    Restart=on-failure

     

    [Install]

    WantedBy=multi-user.target

    RequiredBy=docker.service

    5)配置Docker启动指定子网段 (区别)

    修改成如图:

     

    6)启动

    # systemctl daemon-reload

    # systemctl start flanneld

    # systemctl enable flanneld

    # systemctl restart docker

    五、获取Kubernetes二进制包

    https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md

    这个二进制包里面包含了masternode的组件。

    六、运行Master组件

    解压准备好的包unzip master.zip

    # mkdir -p /opt/kubernetes/{bin,cfg}

    # mv kube-apiserver kube-controller-manager kube-scheduler kubectl /opt/kubernetes/bin

    # chmod +x /opt/kubernetes/bin/* && chmod +x *.sh

    # ./apiserver.sh 192.168.1.195 http://127.0.0.1:2379

    # ./scheduler.sh 127.0.0.1   

    # ./controller-manager.sh 127.0.0.1

    # echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile

    # source /etc/profile

    安装完之后验证一下

    七、运行Node组件

    解压准备好的包:unzip node.zip

    # mkdir -p /opt/kubernetes/{bin,cfg}

    # mv kubelet kube-proxy /opt/kubernetes/bin

    # chmod +x /opt/kubernetes/bin/* && chmod +x *.sh

    # mv *.kubeconfig /opt/kubernetes/cfg/

    # ./kubelet.sh 192.168.1.196 10.10.10.2

    # ./proxy.sh 192.168.1.196

    本节点IP是本机eth0网卡IP地址。

    八、查询集群状态

    Master执行查看集群节点:

    # kubectl get node

    查看组件状态:

    # kubectl get cs

    九、启动一个测试示例

    启动一个Nginx副本示例:

    # kubectl run nginx --image=nginx --replicas=3

    pod正常运行后,创建Service:

    # kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort

    # kubectl get svc nginx

    Node节点访问:

    curl <CLUSTER-IP>:PORT

     

    十、部署Web UI

    上传yaml文件

    [root@master ~]# kubectl create -f kubernetes-dashboard.yaml

  • 相关阅读:
    alpha版、beta版、rc版的意思
    回车符(CR)与换行符(LF), ' '和' '的区别
    html 图像映射(一个图像多个连接)
    前端工程师需要明白的「像素」
    通过设置Ionic-Cli代理解决ionic serve跨域调试问题
    Bootstrap Table使用方法详解
    写给移动开发者的 React Native 指南
    Mac中搭建 iOS 的 React Native 环境
    Windows版本搭建安装React Native环境配置及相关问题
    javascript获取wx.config内部字段解决微信分享
  • 原文地址:https://www.cnblogs.com/zoulixiang/p/9504324.html
Copyright © 2020-2023  润新知