使用kubeadm工具箱创建Kubernetes集群(3)

它在设计上并不为您安装网络解决方案,这意味着您必须使用kubectl apply自行安装第三方符合CNI的网络解决方案
初始化master
[root@aniu-k8s ~]# kubeadm init --kubernetes-version=v1.9.21

要让kubectl为非root用户工作,您可能需要运行以下命令(这也是kubeadm init输出的一部分):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看集群状态
[root@aniu-k8s ~]# kubectl get cs
NAME                STATUS    MESSAGE              ERROR
controller-manager  Healthy  ok                 
scheduler            Healthy  ok                 
etcd-0              Healthy  {"health": "true"}

安装pod network

仅在Master节点执行,网络必须在任何应用程序之前部署。而且,kube-dns是一个内部帮助服务,在安装网络之前不会启动。 kubeadm仅支持基于容器网络接口(CNI)的网络(并且不支持kubenet)
安装Flannel
# 将桥接的IPv4流量传递给iptables的链
sysctl net.bridge.bridge-nf-call-iptables=1
#
[root@aniu-k8s ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
# kubectl apply -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
clusterrole "flannel" created
clusterrolebinding "flannel" created
serviceaccount "flannel" created
configmap "kube-flannel-cfg" created
daemonset "kube-flannel-ds" created

一旦安装了pod网络,就可以通过在kubectl get pods –all-namespaces的输出中检查kube-dns pod是否正在运行来确认它正在工作。 一旦kube-dns吊舱启动并运行,您可以继续加入您的节点
[root@aniu-k8s ~]# kubectl get pods --all-namespaces
NAMESPACE    NAME                              READY    STATUS              RESTARTS  AGE
kube-system  etcd-aniu-k8s                      1/1      Running            0          1h
kube-system  kube-apiserver-aniu-k8s            1/1      Running            0          1h
kube-system  kube-controller-manager-aniu-k8s  1/1      Running            0          1h
kube-system  kube-dns-6f4fd4bdf-2428k          0/3      ContainerCreating  0          1h
kube-system  kube-flannel-ds-2h2c6              0/1      CrashLoopBackOff    3          1m
kube-system  kube-proxy-wt74z                  1/1      Running            0          1h
kube-system  kube-scheduler-aniu-k8s            1/1      Running            0          1h

注意:笔者安装pod network采用flannel有问题,故换成Weave Net
export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Master Isolation

使用kubeadm初始化的集群,出于安全考虑Pod不会被调度到Master Node上,可使用如下命令使Master节点参与工作负载。:
[root@aniu-k8s ~]# kubectl taint nodes --all node-role.kubernetes.io/master-
node "aniu-k8s" untainted

查看节点状态
[root@aniu-k8s ~]# kubectl get pod --all-namespaces -o wide
NAMESPACE    NAME                                    READY    STATUS    RESTARTS  AGE      IP              NODE
kube-system  etcd-aniu-k8s                          1/1      Running  0          49m      192.168.10.10  aniu-k8s
kube-system  kube-apiserver-aniu-k8s                1/1      Running  0          49m      192.168.10.10  aniu-k8s
kube-system  kube-controller-manager-aniu-k8s        1/1      Running  0          49m      192.168.10.10  aniu-k8s
kube-system  kube-dns-6f4fd4bdf-n4ctn                3/3      Running  0          50m      10.32.0.2      aniu-k8s
kube-system  kube-proxy-s5pnl                        1/1      Running  0          47m      192.168.0.209  aniu-saas-4
kube-system  kube-proxy-szs7k                        1/1      Running  0          50m      192.168.10.10  aniu-k8s
kube-system  kube-scheduler-aniu-k8s                1/1      Running  0          49m      192.168.10.10  aniu-k8s
kube-system  weave-net-bkbs2                        2/2      Running  0          49m      192.168.10.10  aniu-k8s
kube-system  weave-net-cwvdk                        2/2      Running  0          47m      192.168.0.209  aniu-saas-4
# 可以看到全部的pod已经全部running

向K8s集群中加入节点

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

转载注明出处:https://www.heiqu.com/04baa94af211f0afbc53451212d4d520.html