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\n")
}
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集群部署完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM