[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.200.201 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.18.1 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
选项说明:
--apiserver-advertise-address:主节点的 IP 地址
--image-repository:选择用于拉取镜像的镜像仓库,这里配置为阿里云的镜像仓库
--kubernetes-version:安装的k8s版本
--service-cidr:为服务的VIP指定使用的IP地址范围(默认为“10.96.0.0/12”)
--pod-network-cidr:指定Pod网络的IP地址范围。如果设置,则将自动为每个节点分配CIDR。
注:
因为后面要部署 flannel,参照flannel文档,我们要指定Pod网络的IP地址范围为10.244.0.0/16
下面是部分输出内容,可以看到初始化成功的信息和一些提示。
........................................................[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane has initialized successfully!#表明Kubernetes控制平面已成功初始化!
To start using your cluster, you need to run the following as a regular user: #要开始使用集群,要在master节点先运行这三句命令mkdir -p $HOME/.kube
sudocp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudochown$(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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join192.168.200.201:6443 --token 7fzqs6.qpnqzss6kpuis00b \
--discovery-token-ca-cert-hash sha256:a2233758942ce550d48421bc943b8e3b5e7f504f8c0419a47e22c83040c70721
#想要把那个节点加入K8s集群,就在那个节点上运行这句命令
创建必要文件
mkdir -p $HOME/.kube
sudocp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudochown$(id -u):$(id -g)$HOME/.kube/config
把node01 和 node02 加入K8s集群后的状态是这样的:
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 2m53s v1.18.1
node01 NotReady <none> 9s v1.18.1
node02 NotReady <none> 4s v1.18.1
此时的状态并没有集群成功,需要安装第三方网络插件
六、安装网络插件(master节点操作)
K8s支持多种网络插件,比如flannel、calico、canal等等,任选一种即可,本次选择flannel
# 安装网络插件[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 查看flannel状态(可能要等个30秒,flannel状态才能运行)[root@master ~]# kubectl get pods -A | grep flannel
kube-system kube-flannel-ds-lxvdp 1/1 Running 0 5h49m
kube-system kube-flannel-ds-p2jfl 1/1 Running 0 5h49m
kube-system kube-flannel-ds-snb5n 1/1 Running 0 5h49m
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 5m31s v1.18.1
node01 Ready <none> 2m47s v1.18.1
node02 Ready <none> 2m42s v1.18.1
集群成功!!!
七、测试kubernetes 集群(master节点操作)
[root@master ~]# kubectl create deployment nginx --image=nginx 部署nginx服务集群
deployment.apps/nginx created
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort 开放80端口
service/nginx exposed
[root@master ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-f89759699-2rb8x 0/1 ContainerCreating 0 17s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none>443/TCP 6m36s
service/nginx NodePort 10.98.48.54 <none>80:32341/TCP 8s
[root@master ~]# curl localhost:32341 本地访问<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>
html { color-scheme: light dark;}
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>
kubernetes 集群 可用!!!!