kubernetes+docker 手動安裝

環境:
硬件爲ubuntu 16.04,安裝過程藉助ubuntu systemd
2核4g(master)和1核2g(minion)配置.

安裝說明
master :etcd (version 3.1.1)| kube-apiserver(version 1.0.1) |kube-controller |kube-scheduler |flanneld (version 0.6.1) |kubelet|docker(version 1.11.2)
minion:flanneld| kubelet |kube-proxy|docker


下面ip地址配置需要按需修改,本人的所有二進制文件全部放在了/root/kube-bin/ 文件夾下。

0.docker 安裝

apt-get 方式
http://www.atjiang.com/install-docker-on-ubuntu/

二進制安裝方式
https://docs.docker.com/engine/installation/binaries/
下邊爲在啓動完flannel時,重啓docker的命令代碼.這句話指定創建的容器的ip範圍.

nohup docker daemon -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock \
--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} &

1.etcd 安裝[MASTER]

etcd 在本次安裝教程中單節點安裝。默認裝在master節點上。etcd必須先於flannel的安裝,flannel啓動時需要從etcd中查詢可用的ip段!

$ mkdir -p /var/lib/etcd/
$ mkdir -p /opt/etcd/config/
$ cat <<EOF | sudo tee /opt/etcd/config/etcd.conf
    ETCD_DATA_DIR=/var/lib/etcd
    ETCD_NAME=iZwz993neuthobfrr8nsptZ
    ETCD_INITIAL_CLUSTER_STATE=new
    //ETCD_LISTEN_PEER_URLS=http://127.0.0.1:2380
    //ETCD_INITIAL_ADVERTISE_PEER_URLS=http://127.0.0.1:2380
    //ETCD_ADVERTISE_CLIENT_URLS=http://127.0.0.1:2379
    ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    GOMAXPROCS=2
    EOF

etcd配置參數官方說明:https://coreos.com/etcd/docs/latest/op-guide/configuration.html

配置etcd systemd service

$ cat <<EOF | sudo tee /etc/systemd/system/etcd.service
    [Unit]
    Description=Etcd Server
    Documentation=https://github.com/coreos/etcd
    After=network.target
    [Service]
    User=root
    Type=simple
    EnvironmentFile=-/opt/etcd/config/etcd.conf
    ExecStart=/root/kube-bin/basic/etcd
    Restart=on-failure
    RestartSec=10s
    LimitNOFILE=40000
    [Install]
    WantedBy=multi-user.target
    EOF

啓動etcd

$ systemctl daemon-reload
$ systemctl enable etcd
$ systemctl start etcd
//journalctl -xe 或是 systemctl status [service name] 查看安裝情況

將flannel 的ip range存入etcd.

/opt/etcd/bin/etcdctl set /coreos.com/network/config '{"Network":"'${FLANNEL_NET}'", "Backend": {"Type": "vxlan"}}'

2.api-server[MASTER]

$ cat <<EOF | sudo tee /etc/systemd/system/kube-apiserver.service
    [Unit]
    Description=Kubernetes API Server
    Documentation=https://github.com/kubernetes/kubernetes
    After=network.target

    [Service]
    User=root
    ExecStart=/root/kube-bin/kube-apiserver \
    --insecure-bind-address=172.18.222.79 \         //api-server 監聽的interface
    --insecure-port=8080 \                          //api-server 監聽的端口
    --etcd-servers=http://172.18.222.79:2379 \      //etcd client監聽地址
    --logtostderr=true \
    --allow-privileged=false \
    --service-cluster-ip-range=10.254.0.0/16 \
    --service-node-port-range=30000-32767 
    Restart=on-failure
    Type=notify
    LimitNOFILE=65536

    [Install]
    WantedBy=multi-user.target
    EOF

啓動api-server

$ systemctl daemon-reload
$ systemctl enable kube-apiserver
$ systemctl start kube-apiserver
//journalctl -xe 或是 systemctl status [service name] 查看安裝情況

3.k8s kube-controller-manager [MASTER]

cat <<EOF | sudo tee /etc/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes

[Service]
User=root
ExecStart=/root/kube-bin/kube-controller-manager \
--master=172.18.222.79:8080 \              //指定api-server的監聽地址
--logtostderr=true
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

啓動kube-controller-manager

$ systemctl daemon-reload
$ systemctl enable kube-controller-manager
$ systemctl start kube-controller-manager
//journalctl -xe 或是 systemctl status [service name] 查看安裝情況

4.kube-scheduler[MASTER]

cat <<EOF | sudo tee /etc/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes

[Service]
User=root
ExecStart=/root/kube-bin/kube-scheduler \
--logtostderr=true \
--master=172.18.222.79:8080      //指定api-server的監聽地址
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

啓動kube-scheduler

$ systemctl daemon-reload
$ systemctl enable kube-scheduler
$ systemctl start kube-scheduler
//journalctl -xe 或是 systemctl status [service name] 查看安裝情況

4.flannel

cat <<EOF | sudo tee /etc/systemd/system/flanneld.service
[Unit]
Description=Flanneld
Documentation=https://github.com/coreos/flannel
After=network.target
[Service]
User=root
ExecStart=/root/kube-bin/basic/flanneld \
--etcd-endpoints="http://172.18.222.79:2379" \       //etcd client監聽地址
--iface=172.18.222.80  \
--ip-masq
Restart=on-failure
Type=notify
LimitNOFILE=65536
EOF

啓動kube-scheduler

$ systemctl flanneld
$ systemctl enable flanneld
$ systemctl start flanneld
//journalctl -xe 或是 systemctl status [service name] 查看安裝情況

也可以配置完之後一起啓動
配置重新加載和預設啓動
systemctl daemon-reload
systemctl enable kube-proxy
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl enable flanneld
systemctl start kube-proxy
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start flanneld

5.kubelet

cat <<EOF | sudo tee /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet 
[Service]
ExecStart=/root/kube-bin/kubelet \
--bind-address=0.0.0.0 \                    //不能綁定localhost
--api-servers=http://172.18.222.79:8080 \   //指定api-server的監聽地址
--logtostderr=true 
Restart=on-failure
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

以上邊同樣的方式啓動.

6.kube-proxy

cat <<EOF | sudo tee /etc/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Proxy
After=network.target

[Service]
ExecStart=/root/kube-bin/kube-proxy \
--hostname-override=172.18.222.80\
--master=http://172.18.222.79:8080 \
--logtostderr=true
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

以上邊同樣的方式啓動.

7.docker 重啓

import flannel分配的子網ip range

source /run/flannel/subnet.env

重啓docker,設置flannel ip地址段.(重啓之前,先把之前的kill掉!本次安裝docker用的是二進制安裝方式.由於docker api和kubernetes版本選的有兼容問題,docker換了好幾個版本安裝)

nohup docker daemon -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} &

8.docker 私有倉庫的搭建

http://blog.csdn.net/landai2011/article/details/54600809

驗證:

在瀏覽器裏輸入:
http://172.18.222.80:8080/swagger-ui/
這裏寫圖片描述

查看minion節點安裝情況

 curl http://172.18.222.80:8080/api/v1/nodes
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章