声明:本文参照官网进行安装,具体请前往官网查看
1.环境准备

iphostname
192.168.1.108master
192.168.1.107slave
192.168.1.109slave1

配置hosts

vi /etc/hosts

hosts


2.安装docker

yum install docker

3.安装kubectl
相关的bash自动补全,以及配置文件详情参考官网

curl -LO
https://storage.googleapis.com/kubernetes-release/release/$(curl -s
https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

4.安装kubeadm,kubelet,kubernetes-cni等工具(记得关闭防火墙,每个节 点上都要执行)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
setenforce 0  -- 暂时关闭selinux
yum install -y docker kubelet kubeadm kubernetes-cni
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
[root@master hosts]# kubeadm version
kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.6", GitCommit:"7fa1c1756d8bc963f1a389f4a6937dc71f08ada2", GitTreeState:"clean", BuildDate:"2017-06-16T18:21:54Z", GoVersion:"go1.7.6", Compiler:"gc", Platform:"linux/amd64"}

5.执行 kubeadm init 初始化集群master

kubeadm init –apiserver-advertise-address 192.168.1.108 –pod-network-cidr=10.244.0.0/16

[root@master kubernetes]# kubeadm init --apiserver-advertise-address 192.168.1.108 --pod-network-cidr=10.244.0.0/16
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.6
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[preflight] WARNING: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[preflight] WARNING: docker service is not enabled, please run 'systemctl enable docker.service'
[preflight] Starting the kubelet service
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.1.108]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 17.014389 seconds
[apiclient] Waiting for at least one node to register
[apiclient] First node has registered after 3.008786 seconds
[token] Using token: e025a1.74de7b5a01f581dc
[apiconfig] Created RBAC rules
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run (as a regular user):

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

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
as root:

  kubeadm join --token e025a1.74de7b5a01f581dc 192.168.1.108:6443
  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

  [root@master kubernetes]# kubectl get nodes
    NAME      STATUS     AGE       VERSION
    master    NotReady   1m        v1.6.6

用到的镜像

[root@slave hosts]# docker images 
REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE
gcr.io/google_containers/kube-apiserver-amd64            v1.6.6              eaedf2552acd        7 days ago          150.7 MB
gcr.io/google_containers/kube-controller-manager-amd64   v1.6.6              a1b8bfeff845        7 days ago          132.9 MB
gcr.io/google_containers/kube-scheduler-amd64            v1.6.6              b662c4a72c62        7 days ago          76.75 MB
gcr.io/google_containers/etcd-amd64                      3.0.17              243830dae7dd        4 months ago        168.9 MB
gcr.io/google_containers/pause-amd64                     3.0                 99e59f495ffa        13 months ago       746.9 kB
[root@slave hosts]# 

6.安装CNI,我这里选择flannel addons
必须先创建RBAC 否侧会失败
kube-flannel-rbac.yml下载链接
kube-flannel.yml下载链接

[root@master kubernetes]# kubectl create -f rbac.yaml 
clusterrole "flannel" created
clusterrolebinding "flannel" created
[root@master kubernetes]# kubectl apply -f kube-flannel.yaml 
serviceaccount "flannel" created
configmap "kube-flannel-cfg" created
daemonset "kube-flannel-ds" created
[root@master kubernetes]# kubectl get pods -n kube-system
NAME                             READY     STATUS    RESTARTS   AGE
etcd-master                      1/1       Running   0          44m
kube-apiserver-master            1/1       Running   0          44m
kube-controller-manager-master   1/1       Running   0          44m
kube-dns-692378583-1h70j         3/3       Running   3          45m
kube-flannel-ds-n8jn0            2/2       Running   0          2m
kube-proxy-3rk7z                 1/1       Running   0          45m
kube-scheduler-master            1/1       Running   0          44m

7.添加节点

kubeadm join --token e025a1.74de7b5a01f581dc 192.168.1.108:6443
[root@slave ~]# kubeadm join --token e025a1.74de7b5a01f581dc 192.168.1.108:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[preflight] WARNING: docker service is not enabled, please run 'systemctl enable docker.service'
[preflight] Starting the kubelet service
[discovery] Trying to connect to API Server "192.168.1.108:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://192.168.1.108:6443"
[discovery] Cluster info signature and contents are valid, will use API Server "https://192.168.1.108:6443"
[discovery] Successfully established connection with API Server "192.168.1.108:6443"
[bootstrap] Detected server version: v1.6.6
[bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1)
[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, generating KubeConfig...
[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.
[root@slave1 ~]# kubeadm join --token e025a1.74de7b5a01f581dc 192.168.1.108:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[preflight] WARNING: docker service is not enabled, please run 'systemctl enable docker.service'
[preflight] Starting the kubelet service
[discovery] Trying to connect to API Server "192.168.1.108:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://192.168.1.108:6443"
[discovery] Cluster info signature and contents are valid, will use API Server "https://192.168.1.108:6443"
[discovery] Successfully established connection with API Server "192.168.1.108:6443"
[bootstrap] Detected server version: v1.6.6
[bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1)
[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, generating KubeConfig...
[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.
[root@master kubernetes]# kubectl get nodes
NAME      STATUS    AGE       VERSION
master    Ready     1h        v1.6.6
slave     Ready     5m        v1.6.6
slave1    Ready     5m        v1.6.6
[root@master kubernetes]# kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY     STATUS    RESTARTS   AGE
kube-system   etcd-master                      1/1       Running   0          1h
kube-system   kube-apiserver-master            1/1       Running   0          1h
kube-system   kube-controller-manager-master   1/1       Running   0          1h
kube-system   kube-dns-692378583-1h70j         3/3       Running   3          1h
kube-system   kube-flannel-ds-43n8m            2/2       Running   0          23s
kube-system   kube-flannel-ds-btz82            2/2       Running   1          5m
kube-system   kube-flannel-ds-n8jn0            2/2       Running   0          28m
kube-system   kube-proxy-2gzvq                 1/1       Running   0          5m
kube-system   kube-proxy-31lrc                 1/1       Running   0          5m
kube-system   kube-proxy-3rk7z                 1/1       Running   0          1h
kube-system   kube-scheduler-master            1/1       Running   0          1h
[root@master kubernetes]# docker images 
REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZE
gcr.io/google_containers/kube-proxy-amd64                   v1.6.6              b01133efa4f0        7 days ago          109 MB
gcr.io/google_containers/kube-apiserver-amd64               v1.6.6              eaedf2552acd        7 days ago          150.7 MB
gcr.io/google_containers/kube-controller-manager-amd64      v1.6.6              a1b8bfeff845        7 days ago          132.9 MB
gcr.io/google_containers/kube-scheduler-amd64               v1.6.6              b662c4a72c62        7 days ago          76.75 MB
192.168.1.113:5000/google_containers/kube-apiserver-amd64   v1.6.4              4e3810a19a64        5 weeks ago         150.6 MB
gcr.io/google_containers/k8s-dns-sidecar-amd64              1.14.2              7c4034e4ffa4        6 weeks ago         44.5 MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64             1.14.2              ca8759c215c9        6 weeks ago         52.36 MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64        1.14.2              e5c335701995        6 weeks ago         44.84 MB
quay.io/coreos/flannel                                      v0.7.1-amd64        cd4ae0be5e1b        9 weeks ago         77.76 MB
gcr.io/google_containers/etcd-amd64                         3.0.17              243830dae7dd        4 months ago        168.9 MB
gcr.io/google_containers/pause-amd64                        3.0                 99e59f495ffa        13 months ago       746.9 kB

8.最后部署dashboard

Service 修改为nodePort方式,如下图


---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 9090
    nodePort: 31001
  selector:
    k8s-app: kubernetes-dashboard
[root@master kubernetes]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   etcd-master                             1/1       Running   0          1h
kube-system   kube-apiserver-master                   1/1       Running   0          1h
kube-system   kube-controller-manager-master          1/1       Running   0          1h
kube-system   kube-dns-692378583-1h70j                3/3       Running   3          1h
kube-system   kube-flannel-ds-43n8m                   2/2       Running   0          18m
kube-system   kube-flannel-ds-btz82                   2/2       Running   1          23m
kube-system   kube-flannel-ds-n8jn0                   2/2       Running   0          46m
kube-system   kube-proxy-2gzvq                        1/1       Running   0          23m
kube-system   kube-proxy-31lrc                        1/1       Running   0          23m
kube-system   kube-proxy-3rk7z                        1/1       Running   0          1h
kube-system   kube-scheduler-master                   1/1       Running   0          1h
kube-system   kubernetes-dashboard-2039414953-sxhdl   1/1       Running   0          6m
[root@master kubernetes]# docker images 
REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZE
gcr.io/google_containers/kube-proxy-amd64                   v1.6.6              b01133efa4f0        7 days ago          109 MB
gcr.io/google_containers/kube-controller-manager-amd64      v1.6.6              a1b8bfeff845        7 days ago          132.9 MB
gcr.io/google_containers/kube-apiserver-amd64               v1.6.6              eaedf2552acd        7 days ago          150.7 MB
gcr.io/google_containers/kube-scheduler-amd64               v1.6.6              b662c4a72c62        7 days ago          76.75 MB
192.168.1.113:5000/google_containers/kube-apiserver-amd64   v1.6.4              4e3810a19a64        5 weeks ago         150.6 MB
gcr.io/google_containers/kubernetes-dashboard-amd64         v1.6.1              71dfe833ce74        5 weeks ago         134.4 MB
gcr.io/google_containers/k8s-dns-sidecar-amd64              1.14.2              7c4034e4ffa4        6 weeks ago         44.5 MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64             1.14.2              ca8759c215c9        6 weeks ago         52.36 MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64        1.14.2              e5c335701995        6 weeks ago         44.84 MB
quay.io/coreos/flannel                                      v0.7.1-amd64        cd4ae0be5e1b        9 weeks ago         77.76 MB
gcr.io/google_containers/etcd-amd64                         3.0.17              243830dae7dd        4 months ago        168.9 MB
gcr.io/google_containers/pause-amd64                        3.0                 99e59f495ffa        13 months ago       746.9 kB

dashboard
end

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐