• Kubernetes单机安装部署


    系统环境:

    Ubuntu 16.04.2 LTS

    软件环境:

    Docker 1.12.6

    Go 1.8.3

    Etcd 3.1.8

    Flannel 0.7.1

    Kubernetes master 1.7.0-alpha

     安装步骤:

    1 安装Docker

    1) apt-get update

    2) apt-get upgrade

    3) apt-get install docker.io

    4) service docker restart

    5) docker run hello-world

    6) docker run -it ubuntu bash

     

    2 安装Go
    1) 下载Go语言压缩包
    2) 解压压缩包
    tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
    3) 添加下列环境变量到/etc/profile(for a system-wide installation) or $HOME/.profile
    export PATH=$PATH:/usr/local/go/bin
    4) 编写hello.Go文件,填写下列内容,放到$HOME/go/src/hello文件夹中
    package main
    import "fmt"
    func main() {
        fmt.Printf("hello, world
    ")
    }
    5) 测试Go语言环境,$HOME/go/默认为/root/go/
    go run ~/go/src/hello/hello.go
     
    3 安装Etcd
    1) 下载Etcd压缩包

    2) 解压Etcd压缩包

    tar -xzf etcd-v3.1.8-linux-amd64.tar.gz

    3) 拷贝Etcd可执行程序

    cd etcd-v3.1.8-linux-amd64

    cp etcd etcdctl /usr/bin

     

    4 安装Flannel
    1) 下载Flannel压缩包

    2) 解压Flannel压缩包

    tar -xzf flannel-v0.7.1-linux-amd64.tar.gz

    3) 拷贝Flannel可执行程序

    cd flannel-v0.7.1-linux-amd64

    cp flannelid mk-docker-opts.sh /usr/bin

     

    5 安装K8S
    1) 获取K8S Master版本(1.7.0-alpha)

    2) 编译K8S

    cd kubernetes

    make quick-release

    编译完成后:

    K8S Server文件:~/go/src/kubernetes/_output/release-stage/server/linux-amd64/kubernetes/server/bin

    K8S Client文件: ~/go/src/kubernetes/_output/release-stage/client/linux-amd64/kubernetes/client/bin

    3) 拷贝K8S Server和Client可执行文件

    cd ~/go/src/kubernetes/_output/release-stage/server/linux-amd64/kubernetes/server/bin

    cp * /usr/bin

    cd ~/go/src/kubernetes/_output/release-stage/client/linux-amd64/kubernetes/client/bin

    cp * /usr/bin

    注: 下述操作中的10.229.43.237请替换为你安装K8S的主机的IP地址 

    6 启动和测试Etcd
    K8S使用Etcd保存Master和Node节点的信息,所以启动K8S之前需要先启动Etcd
    1) 启动Etcd
    etcd -initial-advertise-peer-urls http://10.229.43.237:2380 -listen-peer-urls http://10.229.43.237:2380 -listen-client-urls http://10.229.43.237:2379,http://127.0.0.1:2379 -advertise-client-urls http://10.229.43.237:2379 
    2) 读写Etcd Key和Value
    etcdctl set foo bar

    etcdctl get foo

     

    7 启动Flannel并关联Docker
    1) 启动Flannel
    flanneld
     
    2) 设置Etcd配置Flannel
    etcdctl set /coreos.com/network/config '{"Network":"172.17.0.0/16"}'
    etcdctl set /coreos.com/network/subnets/172.17.10.0-24 '{"PublicIP":"10.229.43.237"}'
     
    3) 设置Flannel关联Docker

    mk-docker-opts.sh -i
    source /run/flannel/subnet.env
    rm /var/run/docker.pid
    ifconfig docker0 ${FLANNEL_SUBNET}
    service docker restart

      
    8 启动K8S
    1) 启动kube-apiserver
    kube-apiserver --address=0.0.0.0  --insecure-port=8080 --service-cluster-ip-range='10.10.10.1/24' --log_dir=/usr/local/kubernete_test/logs/kube --kubelet_port=10250 --v=0 --logtostderr=false --etcd_servers=http://10.229.43.237:2379 --allow_privileged=false 
     
    2) 启动kube-controller-manager
    kube-controller-manager  --v=0 --logtostderr=false --log_dir=/usr/local/kubernete_test/logs/kube --master=10.229.43.237:8080
     
    3) 启动kube-scheduler 
    kube-scheduler  --master='10.229.43.237:8080' --v=0  --log_dir=/usr/local/kubernete_test/logs/kube
     
    4) 测试master节点是否正常启动
    kubectl get componentstatuses
     
    5) 启动kube-proxy 
    kube-proxy  --logtostderr=false --v=0 --master=http://10.229.43.237:8080
     
    6) 启动kubelet  
    kubelet  --logtostderr=false --v=0 --allow-privileged=false  --log_dir=/usr/local/kubernete_test/logs/kube  --address=0.0.0.0  --port=10250  --hostname_override=10.229.43.237  --api_servers=http://10.229.43.237:8080
     
    7) 在Node上设置集群Context
    kubectl config set-cluster test-cluster --server=http://10.229.43.237:8080
    kubectl config set-context test-cluster --cluster=test-cluster
    kubectl config use-context test-cluster 
     
    8) 准备kubernetes/pause镜像
    由于K8S Pod需要Pause镜像来启动Pause容器,所以需要准备kubernetes/pause镜像
    docker pull docker.io/kubernetes/pause
    docker tag f9d5de079539 gcr.io/google_containers/pause:2.0
     
    这里相当于是把docker.io重命名为gcr.io,f9d5de079539为拉下来的镜像ID(docker images)
     
    9) 确认K8S是否启动成功
    kubectl get nodes
      
    9 部署Nginx集群
    1) 创建Nginx Pods
    kubectl run nginx --image=nginx --port=80  --replicas=5
    kubectl get pods
     
    2) 创建nginx-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        targetPort: 9090
      selector:
        name: nginx 
    3) 根据Pods创建Service
    kubectl create -f nginx-service.yaml
    kubectl get services
     
    到此K8S集群部署完成。
  • 相关阅读:
    JavaScript高级程序设计学习笔记--变量、作用域和内存问题
    JavaScript高级程序设计学习笔记--基本概念
    Silverlight 动画性能
    Silverlight动画之 Animation Easing
    Silverlight 动画详解
    WCF重写ServiceHost,实现独立配置文件
    WP8 双击返回键退出
    Asp.Net之自定义表达式构造器(ExpressionBuilder)
    通过configSource提高web.config配置灵活性
    C# 操作IIS方法集合
  • 原文地址:https://www.cnblogs.com/edisonxiang/p/6911994.html
Copyright © 2020-2023  润新知