kubeadm 安装kubetnetes(flannel)

来源:互联网 发布:儿童 编程培训 编辑:程序博客网 时间:2024/04/30 17:09

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

ip hostname 192.168.1.108 master 192.168.1.107 slave 192.168.1.109 slave1

配置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=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgEOFsetenforce 0  -- 暂时关闭selinuxyum install -y docker kubelet kubeadm kubernetes-cnisystemctl enable docker && systemctl start dockersystemctl enable kubelet && systemctl start kubelet
[root@master hosts]# kubeadm versionkubeadm 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-dnsYour 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.confYou 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 nodeas 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             SIZEgcr.io/google_containers/kube-apiserver-amd64            v1.6.6              eaedf2552acd        7 days ago          150.7 MBgcr.io/google_containers/kube-controller-manager-amd64   v1.6.6              a1b8bfeff845        7 days ago          132.9 MBgcr.io/google_containers/kube-scheduler-amd64            v1.6.6              b662c4a72c62        7 days ago          76.75 MBgcr.io/google_containers/etcd-amd64                      3.0.17              243830dae7dd        4 months ago        168.9 MBgcr.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" createdclusterrolebinding "flannel" created[root@master kubernetes]# kubectl apply -f kube-flannel.yaml serviceaccount "flannel" createdconfigmap "kube-flannel-cfg" createddaemonset "kube-flannel-ds" created
[root@master kubernetes]# kubectl get pods -n kube-systemNAME                             READY     STATUS    RESTARTS   AGEetcd-master                      1/1       Running   0          44mkube-apiserver-master            1/1       Running   0          44mkube-controller-manager-master   1/1       Running   0          44mkube-dns-692378583-1h70j         3/3       Running   3          45mkube-flannel-ds-n8jn0            2/2       Running   0          2mkube-proxy-3rk7z                 1/1       Running   0          45mkube-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 nodesNAME      STATUS    AGE       VERSIONmaster    Ready     1h        v1.6.6slave     Ready     5m        v1.6.6slave1    Ready     5m        v1.6.6[root@master kubernetes]# kubectl get pods --all-namespacesNAMESPACE     NAME                             READY     STATUS    RESTARTS   AGEkube-system   etcd-master                      1/1       Running   0          1hkube-system   kube-apiserver-master            1/1       Running   0          1hkube-system   kube-controller-manager-master   1/1       Running   0          1hkube-system   kube-dns-692378583-1h70j         3/3       Running   3          1hkube-system   kube-flannel-ds-43n8m            2/2       Running   0          23skube-system   kube-flannel-ds-btz82            2/2       Running   1          5mkube-system   kube-flannel-ds-n8jn0            2/2       Running   0          28mkube-system   kube-proxy-2gzvq                 1/1       Running   0          5mkube-system   kube-proxy-31lrc                 1/1       Running   0          5mkube-system   kube-proxy-3rk7z                 1/1       Running   0          1hkube-system   kube-scheduler-master            1/1       Running   0          1h
[root@master kubernetes]# docker images REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZEgcr.io/google_containers/kube-proxy-amd64                   v1.6.6              b01133efa4f0        7 days ago          109 MBgcr.io/google_containers/kube-apiserver-amd64               v1.6.6              eaedf2552acd        7 days ago          150.7 MBgcr.io/google_containers/kube-controller-manager-amd64      v1.6.6              a1b8bfeff845        7 days ago          132.9 MBgcr.io/google_containers/kube-scheduler-amd64               v1.6.6              b662c4a72c62        7 days ago          76.75 MB192.168.1.113:5000/google_containers/kube-apiserver-amd64   v1.6.4              4e3810a19a64        5 weeks ago         150.6 MBgcr.io/google_containers/k8s-dns-sidecar-amd64              1.14.2              7c4034e4ffa4        6 weeks ago         44.5 MBgcr.io/google_containers/k8s-dns-kube-dns-amd64             1.14.2              ca8759c215c9        6 weeks ago         52.36 MBgcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64        1.14.2              e5c335701995        6 weeks ago         44.84 MBquay.io/coreos/flannel                                      v0.7.1-amd64        cd4ae0be5e1b        9 weeks ago         77.76 MBgcr.io/google_containers/etcd-amd64                         3.0.17              243830dae7dd        4 months ago        168.9 MBgcr.io/google_containers/pause-amd64                        3.0                 99e59f495ffa        13 months ago       746.9 kB

8.最后部署dashboard

Service 修改为nodePort方式,如下图

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

dashboard
end

原创粉丝点击