此文介绍如何初始化kubernetes。

事前说明

本文介绍的是一台虚拟机同时作为Master和Node。
虚拟机软件是oracle virtualbox,操作系统是centos 7.5,kubernetes版本是1.11.2。
事前安装了docker-ce,kubeadm,kubectl,kubelet。并做了一些初始化处理。
网络配置了NAT和Host-Only两种。其中Host-Only的网卡为enp0s8,这个会在kubeadm init命令中用的。
其他信息如下:

  • 本机的普通用户名:think
  • hostname:k8s
  • ip:192.168.56.111
     

如果没有可以安装kubernetes的网络环境,可以下载稍第一版本的kubernetes1.10.1版本的虚拟机作为学习使用。
(下载地址:https://blog.csdn.net/engchina/article/details/80087344)

初始化

如果以前启动过kubernetes,需要reset,使用root用户执行以下命令。

kubeadm reset

使用root用户初始化kubenetes。(网卡enp0s8和版本stable-1.11(如果使用的是本文中提到的kubernetes1.10.1版本虚拟机,请改为stable-1.10)请根据各自环境修改。)

IP_ADDR=$(ip addr show enp0s8 | grep -Po 'inet \K[\d.]+')
echo $IP_ADDR
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=${IP_ADDR} --kubernetes-version stable-1.11

如果正常安装,最后能看到如下日志信息。(这个信息情保存起来,特别是kubeadm join命令,有其他Node加入时会使用到。)

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

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/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 192.168.56.111:6443 --token a7snof.m8dkitymup0nsa4p --discovery-token-ca-cert-hash sha256:4dd26df04378c50f688bfcc1abef29174b68cd4af0b689d65a062ddb3aa2385f

使用普通用户执行以下命令,此例中为think用户。

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

发布pod network。此例中使用canal。

kubectl apply -f \
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl apply -f \
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/canal.yaml

使这台虚拟机同时作为Node,执行以下命令。

kubectl taint node k8s node-role.kubernetes.io/master-

如果只是作为Master使用,执行以下命令恢复。

kubectl taint node k8s node-role.kubernetes.io/master=””:NoSchedule

执行以下命令确认。
确认节点信息。

kubectl get nodes

笔者的日志显示是

NAME      STATUS    ROLES     AGE       VERSION
k8s       Ready     master    33m       v1.11.2

确认所有信息,包括pod,service等。

kubectl get all --all-namespaces

笔者的日志显示是

NAMESPACE     NAME                              READY     STATUS    RESTARTS   AGE
kube-system   pod/canal-rqrb4                   3/3       Running   0          27m
kube-system   pod/coredns-78fcdf6894-l4msq      1/1       Running   0          30m
kube-system   pod/coredns-78fcdf6894-q45ft      1/1       Running   0          30m
kube-system   pod/etcd-k8s                      1/1       Running   0          29m
kube-system   pod/kube-apiserver-k8s            1/1       Running   0          29m
kube-system   pod/kube-controller-manager-k8s   1/1       Running   0          29m
kube-system   pod/kube-proxy-dmjbs              1/1       Running   0          30m
kube-system   pod/kube-scheduler-k8s            1/1       Running   0          29m

NAMESPACE     NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
default       service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP         30m
kube-system   service/kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP   30m

NAMESPACE     NAME                        DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR                   AGE
kube-system   daemonset.apps/canal        1         1         1         1            1           <none>                          27m
kube-system   daemonset.apps/kube-proxy   1         1         1         1            1           beta.kubernetes.io/arch=amd64   30m

NAMESPACE     NAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns   2         2         2            2           30m

NAMESPACE     NAME                                 DESIRED   CURRENT   READY     AGE
kube-system   replicaset.apps/coredns-78fcdf6894   2         2         2         30m

确认STATUS为“Running”,AVAILABLE还有READY的数和DESIRED的数相等,说明正常初始化了。

完结!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐