天天看點

kubernetes 1.5 叢集安裝kubernetes 1.5叢集安裝

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

繼續閱讀