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. 【图解HTTP】第二章 简单的http协议

    简单的HTTP协议 针对HTTP协议结构进行讲解,主要使用HTTP/1.1版本. HTTP协议用于客户端和服务器端之间的通信 通过请求和响应的交换达成通信(从客户端开始建立通信,服务器端在没有接收到请 ...

  2. asp.net WebAPI 问题 iisnode默认不支持PUT和DELETE的解决

    因为iisnode的自动重启服务器方便,一直用的它来作为开发中的node服务器,今天一个delete命令过去,得到一个405(?好像是)错误,让我很郁闷. 用原生的node试一下,是完美支持的,本来打 ...

  3. Java锁---偏向锁、轻量级锁、自旋锁、重量级锁

    之前做过一个测试,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对): 2. AtomicInteger效率最不稳定,不同并发情况下表 ...

  4. IO--磁盘理论

    磁盘从圆心由内向外被分成多个磁道,而每个磁道会被划分成多个连续的扇区 扇区是磁盘寻址的最小单位,而实际上分配空间最小的单位是簇(cluster),因此导致文件大小和实际占用空间大小不一样 磁盘读写数据 ...

  5. JAVA篇之环境安装(Windows)

    一.JAVA 安装两个重要概念 1.JRE::英文Java Development Kit ,记住英文,深入理解就去看相关文章. 2.JDK:英文 Java Runtime Environment,记 ...

  6. MVC dropdownlist 下拉框

    List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem() ...

  7. 《Beginning Java 7》 - 1 - Initializer 初始化器

    Initializer 分两类:class initializer 类初始化器   instance initializer 实例初始化器 1. class initializer,在编译时运行,通过 ...

  8. Codeforces Round #549 (Div. 2)B. Nirvana

    B. Nirvana time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  9. [ActionSprit 3.0] FMS客户端调用服务器端命令或方法

    有时候客户端需要和服务器端进行通信,服务器端会有个main.asc文件(当然,文件名可以自己定义),这个就是服务器端程序,是在服务器上执行的,你可以用trace调试,trace的内容会在管理服务器的页 ...

  10. ArchLinux 下 OpenSSH 高级运用

    00x0.相关介绍 OpenSSH(OpenBSD Secure Shell)使用 SSH 通过计算机网络加密通信的实现. 它是替换由 SSH Communications Security 所提供的 ...