查看集群状态
# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.0.7 Ready <none> 25s v1.16.0 192.168.0.8 Ready <none> 13s v1.16.0 Node上部署 kube-proxy 组件kube-proxy 运行在所有 node节点上,它监听 apiserver 中 service 和 Endpoint 的变化情况,创建路由规则来进行服务负载均衡,这里只列举了其中一个node 的配置,其他的node配置可以参考这个配置,修改下本机ip地址既可。
创建 kube-proxy 配置文件
vim /data/soft/kubernetes/cfg/kube-proxy KUBE_PROXY_OPTS="--logtostderr=true \ --v=4 \ --hostname-override=192.168.0.7 \ --cluster-cidr=10.0.0.0/24 \ --proxy-mode=ipvs \ --masquerade-all=true \ --kubeconfig=http://www.likecs.com/data/soft/kubernetes/cfg/kube-proxy.kubeconfig"参数详解:
bindAddress: 监听地址(node本机ip); clientConnection.kubeconfig: 连接 apiserver 的 kubeconfig 文件; clusterCIDR: kube-proxy 根据 --cluster-cidr 判断集群内部和外部流量,指定 --cluster-cidr 或 --masquerade-all 选项后 kube-proxy 才会对访问 Service IP 的请求做 SNAT; hostnameOverride: 参数值必须与 kubelet 的值一致,否则 kube-proxy 启动后会找不到该 Node,从而不会创建任何 ipvs 规则; mode: 使用 ipvs 模式;创建kube-proxy systemd unit 文件
vim /usr/lib/systemd/system/kube-proxy.service [Unit] Description=Kubernetes Proxy After=network.tarsget [Service] EnvironmentFile=http://www.likecs.com/data/soft/kubernetes/cfg/kube-proxy ExecStart=http://www.likecs.com/data/soft/kubernetes/bin/kube-proxy $KUBE_PROXY_OPTS Restart=on-failure [Install] WantedBy=multi-user.target将kubelet.config kubelet 文件拷贝到所有 nodes节点
cd /data/soft/kubernetes/cfg/ \cp kube-proxy /data/soft/kubernetes/cfg/ scp -P 12525 -r kube-proxy www@192.168.0.7:/data/soft/kubernetes/cfg/ scp -P 12525 -r kube-proxy www@192.168.0.8:/data/soft/kubernetes/cfg/ scp -P 12525 -r /usr/lib/systemd/system/kube-proxy.service www@192.168.0.7:/usr/lib/systemd/system/kube-proxy.service scp -P 12525 -r /usr/lib/systemd/system/kube-proxy.service www@192.168.0.8:/usr/lib/systemd/system/kube-proxy.service启动服务
systemctl daemon-reload systemctl enable kube-proxy systemctl restart kube-proxy ps -ef|grep kube-proxy root 8719 1 1 12:39 ? 00:00:00 /data/soft/kubernetes/bin/kube-proxy --logtostderr=true --v=4 --hostname-override=192.168.0.8 --cluster-cidr=10.0.0.0/24 --proxy-mode=ipvs --masquerade-all=true --kubeconfig=http://www.likecs.com/data/soft/kubernetes/cfg/kube-prox.kubeconfig其他node节点配置一样,可以使用scp 拷贝过去然后部署。
查看集群状态(master)打node 或者master 节点的标签
kubectl label node 192.168.0.7 node-role.kubernetes.io/node='node' kubectl label node 192.168.0.8 node-role.kubernetes.io/node='node' # kubectl get node,cs NAME STATUS ROLES AGE VERSION node/192.168.0.7 Ready node 114m v1.13.0 node/192.168.0.8 Ready node 93m v1.13.0 NAME STATUS MESSAGE ERROR componentstatus/controller-manager Healthy ok componentstatus/scheduler Healthy ok componentstatus/etcd-0 Healthy {"health":"true"} componentstatus/etcd-1 Healthy {"health":"true"} componentstatus/etcd-2 Healthy {"health":"true"} 运行一个Nginx 测试示例创建一个Nginx Web,测试集群是否正常工作:
# kubectl run nginx --image=nginx --replicas=3 # kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort查看Pod,Service:
# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-64f497f8fd-fjgt2 1/1 Running 3 1d nginx-64f497f8fd-gmstq 1/1 Running 3 1d nginx-64f497f8fd-q6wk9 1/1 Running 3 1d # kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 28d nginx NodePort 10.0.0.175 <none> 88:38696/TCP 28d