zoukankan      html  css  js  c++  java
  • Kubernetes Running Locally

    1. Requirements

    1) Linux

    Not running Linux? Consider running Minikube, or on a cloud provider like Google Compute Engine.

    It recommends Ubuntu16.04.

    2) Go

    You need go in your path (see here for supported versions), please make sure it is installed and in your $PATH.

    It recommends Go1.9.2+.

    $ wget https://golang.org/dl/go1.9.2.linux-amd64.tar.gz

    $ tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz

    PS: It's better to set environments by adding the following sections into /etc/profile like this:

    export PATH=$PATH:/usr/local/go/bin   #GoRoot
    export PATH=$PATH:/root/go/bin          #GoPath

    3) Docker

    At least Docker 1.10+. Ensure the Docker daemon is running and can be contacted (try docker ps).

    Some of the Kubernetes components need to run as root, which normally works fine with docker.

    $ apt-get install docker.io

    $ docker env

    4) etcd

    You need an etcd in your path, please make sure it is installed and in your $PATH.

    It recommends etcd3.2.6+.

    $ wget https://github.com/coreos/etcd/releases/download/v3.2.6/etcd-v3.2.6-linux-amd64.tar.gz

    $ tar -C /usr/local -xzf etcd-v3.2.6-linux-amd64.tar.gz

    5) OpenSSL

    You need OpenSSL installed. If you do not have the openssl command available, the script will print an appropriate error.

    $ apt-get install openssl

    6) CFSSL

    The CFSSL binaries (cfssl, cfssljson) must be installed and available on your $PATH.

    The easiest way to get it is something similar to the following:

    $ apt-get  install  build-essential

    $ go get -u github.com/cloudflare/cfssl/cmd/...

    PS: This command will download and build cfssl packages into $GOPATH/bin

    2. Networking

    Kubernetes is using CNI as the networking plugin, like flannel,dhcp,loopback and so forth.

    1) Build CNI

    $ go get github.com/containernetworking/plugins/...

    PS: This command will download and build CNI packages into $GOPATH/bin

    2) Add Conf

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

    $ cat >/etc/cni/net.d/10-mynet.conf <<EOF
    {
            "cniVersion": "0.2.0",
            "name": "mynet",
            "type": "bridge",
            "bridge": "cbr0",
            "isGateway": true,
            "ipMasq": false,
            "ipam": {
                    "type": "host-local",
                    "subnet": "10.1.0.0/24",
                    "routes": [
                            { "dst": "0.0.0.0/0" }
                    ]
            }
    }
    EOF
    $ cat >/etc/cni/net.d/99-loopback.conf <<EOF
    {
            "cniVersion": "0.2.0",
            "type": "loopback"
    }
    EOF

    3. Kubernetes

    1) Download

    $ git clone https://github.com/kubernetes/kubernetes.git

    2) Build

    $ cd kubernetes

    $ make

    3) Set Env

    set environments by adding the following sections into /etc/profile like this:

    export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig 
    export KUBERNETES_PROVIDER=local
    export LOG_LEVEL=5
    export ALLOW_SECURITY_CONTEXT=true
    export ALLOW_PRIVILEGED=true

    4) Run

    $ cd kubernetes

    $ hack/local-up-cluster.sh           # Build and Run

    $ hack/local-up-cluster.sh -O      # Already build and Run

    5) Test

    $ cluster/kubectl.sh get pods
    $ cluster/kubectl.sh run my-nginx --image=nginx --replicas=2 --port=80


    ## begin wait for provision to complete, you can monitor the docker pull by opening a new terminal
    $ docker images
    ## you should see it pulling the nginx image, once the above command returns it
    $ docker ps
    ## you should see your container running!
    exit
    ## end wait

    ## introspect Kubernetes!
    $ cluster/kubectl.sh get pods

     PS: The following docker images will be automatically download.

    They can be shown by command "docker images".

    Actually these containers will be run to provider the Kubernetes DNS Cluster Service.

    gcr.io/google_containers/k8s-dns-sidecar-amd64

    gcr.io/google_containers/k8s-dns-kube-dns-amd64 

    gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64

    gcr.io/google_containers/pause-amd64

    ## create a service for nginx, which serves on port 80
    $ cluster/kubectl.sh expose deployment my-nginx --port=80 --name=my-nginx 

    4. Trouble Shooting

    1) swap

      • Error

      Running with swap on is not supported, please disable swap!

      • Solution

    * Identify configured swap devices and files with cat /proc/swaps.

    * Turn off all swap devices and files with swapoff -a.

    * Remove any matching reference found in /etc/fstab.

    * Optional: Destroy any swap devices or files found in step 1 to prevent their reuse. 

    * Due to your concerns about leaking sensitive information, you may wish to consider performing some sort of secure wipe. 

      2) Improvement

      $ vi s.sh

       ~/go/src/kubernetes/hack/local-up-cluster.sh -O

      $ source s.sh      # simply to run kubernetes server

    $ cp kubernetes/_output/bin/kubelet /usr/local/bin/

    $ kubelet           # simply to replace cluster/kubectl.sh into kubelet

    $ alias k=kubectl

      3) Improvement

    # export SERVICE_ACCOUNT_LOOKUP=false

    # export HOSTNAME_OVERRIDE=SZX1000341409

    # export NET_PLUGIN=kubenet      #just for gce

    # export KUBELET_HOST=0.0.0.0

    $ kubectl exec POD_NAME -it /bin/bash

    $ kubetl get all --all-namespaces=true

    $ kubectl logs

    $ kubectl get node -o yaml

    $ kubectl cluster-info dump

    $ update-rc.d ServiceName remove
  • 相关阅读:
    case1.将文件夹内文件,按文件后缀不同进行分类
    openpyxl/csv--python处理excel表格模块
    pyttsx3--文字转语音库
    网络爬虫遵守规则
    python-requests库
    js 对象遍历出现的异常
    POI解析word文件,并为特定规则的key替换值
    bootstrap-table获得页面加载数据
    Javaweb项目下载文件时设置文件名
    MySQL自定义函数
  • 原文地址:https://www.cnblogs.com/edisonxiang/p/7418959.html
Copyright © 2011-2022 走看看