(4) 安装Master组件,会从Google的 Registry下载组件的 Docker镜像。这一步可能会花一些时间,主要取决于网络质量(本文中提前下载好了镜像,所以此步骤很快)。
(5) 安装附加组件kube-proxy和kube-dns。
(6) Kubernetes Master初始化成功。
(7) 提示如何配置kubectl。
(8) 提示如何安装Pod 网络。
(9) 提示如何注册其他节点到Cluster。
4、配置kubectl(master节点执行)
这里创建一个k8s的普通用户来执行kubectl命令(root会有一些问题)
$ useradd k8s $ passwd k8s $ mkdir -p /home/k8s/.kube $ cp -i /etc/kubernetes/admin.conf /home/k8s/.kube/config $ chown k8s:k8s /home/k8s/.kube/config添加命令行提示
$ yum -y install bash-completion $ echo "source < (kubectl completion bash)" >> ~/.bashrc现在可以使用tab键快速补全命令
5、安装pod网络(master节点执行)
支持kubernetes cluster 之间pod网络通信,kubernetes支持多种网络,本文使用flannel网络。
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml6、将node节点添加到kubernetes集群(node节点执行)
$ kubeadm join --token 172awr.uqxymof1vveznmtr 192.168.1.21:6443如果出现以下错误,说明需要进行ca校验可以使用--discovery-token-unsafe-skip-ca-verification参数忽略校验
discovery.bootstrapToken: Invalid value: "": using token-based discovery without caCertHashes can be unsafe. Set unsafeSkipCAVerification to continue这里指定的--token来自前面kubeadm init执行后输出的信息。如果没有记录可以通过kubeadm token list进行查看。最后一个参数是指定master节点的ip和k8s api(https)端口
$ kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS 172awr.uqxymof1vveznmtr 8h 2019-05-07T18:22:38+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token7、验证集群状态(master节点执行)
查看各个节点的状态
$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 15h v1.14.1 k8s-node01 NotReady <none> 22m v1.14.1 k8s-node02 NotReady <none> 22m v1.14.1如果发现节点状态为NotReady,这是因为每个节点都需要启动若干个组件,这些组件都是在Pod中运行,需要首先从google下载镜像。可以通过以下命令查看Pod状态
$ kubectl get pod --all-namespacesPending、Container Creating、Image Pullbackoff 都表明 Pod 没有就绪,Runningオ是就绪状态。我们可以通过 kubectl describe pod <Pod Name>查看 Pod 的具体情况
$ kubectl describe pod kube-flannel-ds-amd64-7kjsk --namespace=kube-system等待一段时间,Image 成功下载后,所有 Pod 都会处于 Running 状态。如果镜像下载失败,我们需要手动的去docker pull镜像(参考本节第二部分)。
再通过kubectl get nodes命令查看节点状态,所有节点均处于Ready状态表示kubernetes cluster集群创建成功。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 15h v1.14.1 k8s-node01 Ready <none> 33m v1.14.1 k8s-node02 Ready <none> 33m v1.14.18、创建pod验证集群可用性
a. 创建nginx pod容器
$ kubectl run nginx-deployment --image=nginx:1.16.0 --port=80 --replicas=3b. 查看pod状态
$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-6dcd798fd8-77s9l 1/1 Running 0 99s nginx-deployment-6dcd798fd8-g5v2c 1/1 Running 0 99s nginx-deployment-6dcd798fd8-qc64z 1/1 Running 0 99sc.暴露nginx外部访问端口
$ kubectl expose deployment/nginx-deployment --type="NodePort" --port 80 $ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-deployment NodePort 10.105.86.75 <none> 80:30939/TCP 9sd. 访问验证
$ curl -I :30939Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx