三、K8S系列教程-部署master以及node加入集群
一、部署master节点
-
master节点初始化
kubeadm init \ --kubernetes-version 1.18.8 \ --apiserver-advertise-address=0.0.0.0 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=10.245.0.0/16 \ --image-repository registry.aliyuncs.com/google_containers
参数说明
--kubernetes-version v1.18.8 指定版本
--apiserver-advertise-address 为通告给其它组件的IP,一般应为master节点的IP地址
--service-cidr 指定service网络,不能和node网络冲突
--pod-network-cidr 指定pod网络,不能和node网络、service网络冲突
--image-repository registry.aliyuncs.com/google_containers 指定镜像源,由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
如果k8s版本比较新,可能阿里云没有对应的镜像,就需要自己从其它地方获取镜像了。
--control-plane-endpoint 标志应该被设置成负载均衡器的地址或 DNS 和端口(可选) -
如果出现下图报错,解决方法:
rm -rf /etc/containerd/config.toml systemctl restart containerd kubeadmin reset
-
配置kubectl,就是执行初始化成功后输出的那三条命令
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
-
查看节点信息
kubectl get nodes
二、安装flannel
-
从官网下载yaml文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
master.local执行yml文件
kubectl apply -f kube-flannel.yml
-
查看flannel部署结果
kubectl -n kube-system get pods -o wide
三、node节点加入集群
-
node01和node02节点输入下面命令加入集群
kubeadm join 192.168.19.132:6443 --token zdgk89.5pku2ut0lmxav4nh \ --discovery-token-ca-cert-hash sha256:c0cb405c424acb72b6ab0c53d4b991e4392b1811956dad1d7b1aba36b26c605d
-
修改集群kube-proxy的模式为iptables
由于 k8s 1.18对内核版本要求比较高,3.10的内核部署1.18.8使用ipvs模式会存在coredns无法解析等问题。股在此采用iptables模式。 如果你服务内核4+起,则采用iptables 和ipvs均可。
kubectl get cm kube-proxy -n kube-system -o yaml | sed 's/mode: ""/mode: "iptables"/' | kubectl apply -f - kubectl -n kube-system rollout restart daemonsets.apps kube-proxy kubectl -n kube-system rollout restart daemonsets.apps kube-flannel-ds
四、部署busybox来测试集群各网络情况
-
vi busybox.yaml
--- apiVersion: apps/v1 kind: Deployment metadata: name: busybox spec: replicas: 2 selector: matchLabels: name: busybox template: metadata: labels: name: busybox spec: containers: - name: busybox image: busybox imagePullPolicy: IfNotPresent args: - /bin/sh - -c - sleep 1; touch /tmp/healthy; sleep 30000 readinessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 1
```
kubectl apply -f busybox.yaml -
查看集群所有pod ip 和service ip
kubectl get pods -A -o wide
-
跨node的pods是否互通
kubectl exec -it busybox-7c84546778-ndrst -- /bin/sh
-
pod 和service 的网络
kubectl get svc -A
共有 0 条评论