kubernetes 1.5叢集安裝
系統配置:
Linux 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
系統配置
Linux 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
配置系統前操作
系統操作
關閉防火牆
systemctl disable firewalld
systemctl stop firewalld
設定主機名
hostnamectl –static set-hostname centos-master
關閉Selinux
/etc/selinux/config
SELINUX=disabled
如果可以通路到gcr.io,則不需要做這一步
設定hosts檔案,在/etc/hosts檔案中加入下面兩行。
61.91.161.217 gcr.io
61.91.161.217 www.gcr.io
操作步驟
以下在所有的節點安裝
安裝叢集軟體
加入官網源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
如果這個源無法使用,請點選下面連接配接:
http://blog.csdn.net/wenwst/article/details/54582141
yum安裝
yum install -y socat kubelet kubeadm kubectl kubernetes-cni
啟動docker和kubelet
systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet
下載下傳鏡像
如果鏡像下載下傳速度過慢,可以在docker.service中加入–registry-mirror=”http://b438f72b.m.daocloud.io”。内容如下:
vi /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd –registry-mirror=”http://b438f72b.m.daocloud.io”
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
重新開機動docker
systemctl restart docker
systemctl status docker
鏡像下載下傳
這一步雖然很簡單,最好這一步完成了以後,再進行下一步操作。
images=(kube-proxy-amd64:v1. kube-discovery-amd64: kubedns-amd64: kube-scheduler-amd64:v1. kube-controller-manager-amd64:v1. kube-apiserver-amd64:v1. etcd-amd64:.-kubeadm kube-dnsmasq-amd64: exechealthz-amd64: pause-amd64: kubernetes-dashboard-amd64:v1. dnsmasq-metrics-amd64:)
for imageName in ${images[@]} ; do
docker pull jicki/$imageName
docker tag jicki/$imageName gcr.io/google_containers/$imageName
docker rmi jicki/$imageName
done
這兩個是網絡
docker pull weaveworks/weave-kube:.
docker pull weaveworks/weave-npc:.
這兩個是監控
docker pull kubernetes/heapster:canary
docker pull kubernetes/heapster_influxdb:v0
docker pull gcr.io/google_containers/heapster_grafana:v3
注意–
雖然我們在這裡安裝下載下傳了weaveworks/weave-kube:1.8.2 但還是要注意安裝weaveworks的yaml檔案中對應的版本。
特别是在安裝dns時候,kubeadm會自動安裝,是以沒有yaml,那麼使用下面的指令進行檢視:
kubectl –namespace=kube-system edit deployment kube-dns
以上部分最好在每台伺服器上運作
以上在每台伺服器上都要執行
配置叢集
Master主機操作
在master上執行指令kubeadm init –pod-network-cidr 10.245.0.0/16,這個指令用于初始化叢集master。
kubeadm init –pod-network-cidr 10.245.0.0/16
*也可以加上–api-advertise-addresses=192.168.7.206,IP192.168.7.206是master主機的IP位址
輸出内容如下
[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.
[preflight] Running pre-flight checks
[init] Using Kubernetes version: v1
[tokens] Generated token: "60a95a.93c425347a1695ab"
[certificates] Generated Certificate Authority key and certificate.
[certificates] Generated API Server key and certificate
[certificates] Generated Service Account signing keys
[certificates] Created keys and certificates in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node is ready after seconds
[apiclient] Creating a test deployment
[apiclient] Test deployment succeeded
[token-discovery] Created the kube-discovery deployment, waiting for it to become ready
[token-discovery] kube-discovery is ready after seconds
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns
Your Kubernetes master has initialized successfully!
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node:
kubeadm join --token=a95ac425347a1695ab
最後提示的指令用于增加節點,需要儲存下來。
所有節點主機操作
在上一個指令執行中,我們記得需要儲存的最後一個指令kubeadm join –token=60a95a.93c425347a1695ab 192.168.7.206,下面我們在所有的節點主機執行這個指令。運作完後,輸出内容大概如下.。
[[email protected] kubelet]# kubeadm join --token=60a95a.93c425347a1695ab 192.168.7.206
[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.
[preflight] Running pre-flight checks
[tokens] Validating provided token
[discovery] Created cluster info discovery client, requesting info from "http://192.168.7.206:9898/cluster-info/v1/?token-id=60a95a"
[discovery] Cluster info object received, verifying signature using given token
[discovery] Cluster info signature and contents are valid, will use API endpoints [https://:]
[bootstrap] Trying to connect to endpoint https://:
[bootstrap] Detected server version: v1
[bootstrap] Successfully established connection with endpoint "https://192.168.7.206:6443"
[csr] Created API client to obtain unique certificate for this node, generating keys and certificate signing request
[csr] Received signed certificate from the API server:
Issuer: CN=kubernetes | Subject: CN=system:node:centos-minion- | CA: false
Not before: -- :: + UTC Not After: -- :: + UTC
[csr] Generating kubelet configuration
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
Node join complete:
* Certificate signing request sent to master and response
received.
* Kubelet informed of new secure connection details.
Run 'kubectl get nodes' on the master to see this machine join.
檢查
在master上面執行指令
執行指令kubectl get nodes
輸出如下
NAME STATUS AGE
centos-master Ready,master m
centos-minion- Ready m
centos-minion- Ready s
執行指令kubectl –namespace=kube-system get pod
輸出如下
NAME READY STATUS RESTARTS AGE
dummy--zfjl / Running d
etcd-centos-master / Running d
kube-apiserver-centos-master / Running d
kube-controller-manager-centos-master / Running d
kube-discovery--ldk1 / Running d
kube-proxy-q7p / Running d
kube-proxy-hqkkg / Running d
kube-proxy-nbgn3 / Running d
kube-scheduler-centos-master / Running d
weave-net-kkdh9 / Running m
weave-net-mtd83 / Running m
weave-net-q91sr / Running m
網絡安裝
可以直接執行下面的指令安裝
kubectl apply -f https://git.io/weave-kube
也可以把下面的檔案儲存為weave-daemonset.yaml安裝
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: weave-net
namespace: kube-system
spec:
template:
metadata:
labels:
name: weave-net
annotations:
scheduler.alpha.kubernetes.io/tolerations: |
[
{
"key": "dedicated",
"operator": "Equal",
"value": "master",
"effect": "NoSchedule"
}
]
spec:
hostNetwork: true
hostPID: true
containers:
- name: weave
image: weaveworks/weave-kube:
command:
- /home/weave/launch.sh
livenessProbe:
initialDelaySeconds:
httpGet:
host:
path: /status
port:
securityContext:
privileged: true
volumeMounts:
- name: weavedb
mountPath: /weavedb
- name: cni-bin
mountPath: /opt
- name: cni-bin2
mountPath: /host_home
- name: cni-conf
mountPath: /etc
resources:
requests:
cpu: m
- name: weave-npc
image: weaveworks/weave-kube:
resources:
requests:
cpu: m
securityContext:
privileged: true
restartPolicy: Always
volumes:
- name: weavedb
emptyDir: {}
- name: cni-bin
hostPath:
path: /opt
- name: cni-bin2
hostPath:
path: /home
- name: cni-conf
hostPath:
path: /etc
儲存以後,執行指令
kubectl apply -f weave-daemonset.yaml
檢查網絡安裝
執行下面指令
kubectl –namespace=kube-system get pod
獲得如下結果
NAME READY STATUS RESTARTS AGE
dummy-2088944543-xjj21 1/1 Running 0 55m
etcd-centos-master 1/1 Running 0 55m
kube-apiserver-centos-master 1/1 Running 0 55m
kube-controller-manager-centos-master 1/1 Running 0 55m
kube-discovery-1769846148-c45gd 1/1 Running 0 55m
kube-dns-2924299975-96xms 4/4 Running 0 55m
kube-proxy-33lsn 1/1 Running 0 55m
kube-proxy-jnz6q 1/1 Running 0 55m
kube-proxy-vfql2 1/1 Running 0 20m
kube-scheduler-centos-master 1/1 Running 0 55m
weave-net-k5tlz 2/2 Running 0 19m
weave-net-q3n89 2/2 Running 0 19m
weave-net-x57k7 2/2 Running 0 19m
如果我們看到weave-net的所有pod都處于Running狀态,則表明安裝完成。
下一篇寫如何安裝 K8s UI