kubeadm部署kubernetes集群(2)

(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.yml

6、将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-token

7、验证集群状态(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-namespaces

Pending、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.1

8、创建pod验证集群可用性

a. 创建nginx pod容器

$ kubectl run nginx-deployment --image=nginx:1.16.0 --port=80 --replicas=3

b. 查看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 99s

c.暴露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 9s

d. 访问验证

$ curl -I :30939

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/073196ff219e80eb31503daae910649d.html