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

Kubernetes Running Locally的更多相关文章

  1. 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

    错误提示: psql: could not connect to server: No such file or directory Is the server running locally and ...

  2. 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

    错误提示: psql: could not connect to server: No such file or directory Is the server running locally and ...

  3. 关于Kubernetes(简称K8S)的开启及基本使用,基于Docker Desktop & WSL2

    背景介绍 Kubernetes(简称k8s)已成为目前业界容器编排的事实标准,其搭配Docker可建立非常高效便捷的高可扩展.高可用应用服务架构. Kubernetes的名字来自希腊语,意思是&quo ...

  4. Announcing the public preview of Azure Dev Spaces

    Today, we are excited to announce the public preview of Azure Dev Spaces, a cloud-native development ...

  5. docker官方文档学习-1-Docker for mac安装配置

    https://docs.docker.com/docker-for-mac/ Get started with Docker for Mac 首先像在本博客docker-1-环境安装及例子实践处将环 ...

  6. Distributed Phoenix Chat with PubSub PG2 adapter

    转自:https://www.poeticoding.com/distributed-phoenix-chat-with-pubsub-pg2-adapter/ In this article we’ ...

  7. spark源码分析以及优化

    第一章.spark源码分析之RDD四种依赖关系 一.RDD四种依赖关系 RDD四种依赖关系,分别是 ShuffleDependency.PrunDependency.RangeDependency和O ...

  8. [转]gitlab ci/cd 发布

    转自 https://meigit.readthedocs.io/en/latest/configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_ru ...

  9. 在PC上测试移动端网站和模拟手机浏览器的5大方

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间

    建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间 在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”.那么,什么东西算得上是一个对象呢?对象有属性.有行为.以动物为例,比 ...

  2. 解剖JavaScript中的null和undefined【转】

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...

  3. js调试工具Console命令详解——转

    一.显示信息的命令 <!DOCTYPE html> <html> <head> <title>常用console命令</title> < ...

  4. Memcache+Cookie替代Session解决方案(MVC版)

    阅读目录 开始 通过IHttpModule注册过滤管道方式 通过BaseController 关于滑动过期 两种方式 回到顶部 通过IHttpModule注册过滤管道方式 具体实现如下: 声明一个类C ...

  5. 设计模式7---Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

    class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中.这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码.JVM虚拟机读取字节码文件,取出 ...

  6. HashSet小试牛刀

    HashSet详细介绍 import java.util.HashSet; import java.util.Iterator; public class Main { public static v ...

  7. mvc4开篇之BundleConfig(1)

    新建一个mvc4默认项目,会看到以下目录 打开App_start 里面BundleConfig.cs文件 你会看到这么一段话: 有关 Bundling 的详细信息,请访问 http://go.micr ...

  8. [JQuery]ScrollMe滚动特效插件

    最近考完试,一切顺利,昨晚闲着无聊把最近要用的一个插件翻译了一下:ScrollMe. (╯‵□′)╯︵┻━┻地址请戳: /* ScrollMe -李明夕翻译(╯‵□′)╯︵┻━┻ */ ScrollM ...

  9. httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭

    win10下,C# 用httpWebRequest 执行post请求出现"请求错误,基础连接已经关闭: 连接被意外关闭",经测试设置 //Post请求方式 System.Net.H ...

  10. .Net Core使用OpenXML导出,导入Excel

    导出Excel是程序很常用到的功能,.Net Core可以借助Open-XML-SDK来导出Excel. Open-XML-SDK open-xml-sdk是是微软开源的项目.Open XML SDK ...