# kubeadm config images list I0517 00:03:01.427109 4857 version.go:96] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) I0517 00:03:01.427382 4857 version.go:97] falling back to the local client version: v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.3.10 k8s.gcr.io/coredns:1.3.1
也可以直接指定版本:
1
kubeadm config images list --kubernetes-version=v1.14.1
下载镜像
在 Master 和 Node 节点均执行
创建一个名为 kubeadm_pull.sh 脚本文件:
1 2 3 4 5 6 7 8
# kubeadm_pull.sh
for i in `kubeadm config images list`; do imageName=${i#k8s.gcr.io/} docker pull gcr.azk8s.cn/google_containers/$imageName docker tag gcr.azk8s.cn/google_containers/$imageName k8s.gcr.io/$imageName docker rmi gcr.azk8s.cn/google_containers/$imageName done;
You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/
要将其他Node节点加入到当前Master节点的集群中,需要执行如下命令:
1 2 3 4
Then you can join any number of worker nodes by running the following on each as root:
➜ ~ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.extensions/kube-flannel-ds-amd64 created daemonset.extensions/kube-flannel-ds-arm64 created daemonset.extensions/kube-flannel-ds-arm created daemonset.extensions/kube-flannel-ds-ppc64le created daemonset.extensions/kube-flannel-ds-s390x created
之后,再次查看节点状态:
1 2 3
➜ ~ kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 35m v1.14.1
现在是 Ready 状态了。
如果是用root权限操作,由于上面没有为root账户授权,会报如下错误:
1 2
unable to recognize "https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused unable to recognize "https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused
检查 Flannel 的pod状态:
1 2 3
➜ ~ kubectl get pods -n kube-system -l app=flannel NAME READY STATUS RESTARTS AGE kube-flannel-ds-amd64-2rzqc 1/1 Running 0 6m51s
验证Master节点上相关Pod是否正常
通过命令 kubectl get pods --all-namespaces 验证master节点上kubernetes集群的相关Pod是否都正常创建并运行:
[root@node1 ~]# kubeadm join 192.168.5.28:6443 --token runell.pdp1y28g1dsayy1o \ > --discovery-token-ca-cert-hash sha256:349ee7b8a8f8a255065ebdbd1de2a98127f45fd190716af6a7a780e025f8cdfd [preflight] Running pre-flight checks [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.14" ConfigMap in the kube-system namespace [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Activating the kubelet service [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
查看集群节点状态
回到主节点master上,查看集群节点状态:
1 2 3 4
➜ ~ kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 65m v1.14.1 node1 Ready <none> 77s v1.14.1
至此,node1 节点顺利添加到了集群中。
kube-proxy开启ipvs
注意:在 Master 节点下操作
通过命令 ipvsadm -L -n 查看当前ipvs状态:
1 2 3 4
➜ ~ sudo ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn