.net core - 使用kubeadm搭建k8s - k8s(微服务学习) 二
前提准备:OpenEuler系统,VMWare
由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为node节点,名称分别为:k8s-node01及k8s-node02
1 2 | master节点 # hostnamectl set-hostname k8s-master01 |
1 2 | node01节点 # hostnamectl set-hostname k8s-node01 |
1 2 | node02节点 # hostnamectl set-hostname k8s-node02 |
首先VM的网络设置如下:
关于VM的IP设置可以看下面这个文章:
Linux配置网络_没有ifcfg-ens33,只有ifcfg-ens0-CSDN博客
各个节点的配置如下:
配置文件位于
/ect/sysconfig/network-scripts/
我的是ifcfg
vi ifcfg-ens160
master
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ens160 UUID=5d816caa-e2e3-45b8-b497-24341aef4464 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.139.160 PREFIX-24 GATEWAY=192.168.139.2 DNS1=119.29.29.29 |
node1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ens160 UUID=5d816caa-e2e3-45b8-b497-24341aef4464 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.139.161 PREFIX-24 GATEWAY=192.168.139.2 DNS1=119.29.29.29 |
node2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ens160 UUID=5d816caa-e2e3-45b8-b497-24341aef4464 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.139.162 PREFIX-24 GATEWAY=192.168.139.2 DNS1=119.29.29.29 |
关闭swap
1 2 | # 临时关闭swap分区 swapoff -a |
关闭防火墙
1 2 | # 关闭并禁用防火墙 systemctl stop firewalld && systemctl disable firewalld |
ipv4修改
1 2 3 4 | 开启内核路由转发 vi /etc/sysctl.conf<br><br>...... net.ipv4.ip_forward=1 ...... |
安装docker
1 2 3 4 5 6 | # 安装docker dnf install -y docker # 启用docker systemctl enable docker && systemctl start docker # 查看docker版本 docker --version |
安装kubernates
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 安装kubeadmin、kubelet、kubernetes-master dnf install -y kubernetes-kubeadm kubernetes-kubelet kubernetes-master # 安装conntrack组件(k8s依赖组件) dnf install -y conntrack # 配置kubelet开机自启 systemctl enable kubelet.service && systemctl start kubelet.service # 安装Kubernetes,apiserver-advertise-address 请替换成实际环境中的master节点ip地址,本文环境使用192.168.123.208 kubeadm init --apiserver-advertise-address=192.168.139.160 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.2 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16 # 命令选项说明: # --apiserver-advertise-address:apiserver通告给其他组件的IP地址,一般应该为Master节点的用于集群内部通信的IP地址,0.0.0.0表示节点上所有可用地址 # --image-repository:指定要使用的镜像仓库,指定为aliyun镜像加速下载 # --kubernetes-version:Kubernetes程序组件的版本号 # --pod-network-cidr:Pod网络的地址范围,其值为CIDR格式的网络地址 # --service-cidr:Service的网络地址范围,其值为CIDR格式的网络地址 |
最后执行完就可以看到如下所示
如果安装完成后提示
The connection to the server localhost:8080 was refused - did you specify the right host or port?
在所有节点执行
1 2 3 | echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile source ~/.bash_profile |
如果执行
kubectl get nodes 状态为Noready 请执行下载网络插件
calico网络插件
选择calico网络插件版本:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
calico网络插件:
https://docs.tigera.io/v3.9/manifests/tigera-operator.yaml
kubectl apply -f https://docs.projectcalico.org/v3.20/manifests/calico.yaml # 在k8s中安装calico kubectl get pods --all-namespaces -w # 确认一下calico是否安装成功状态是否正常
创建一个nginx的pod验证节点
cat > nginx.yaml << "EOF" --- apiVersion: v1 kind: ReplicationController metadata: name: nginx-web spec: replicas: 2 selector: name: nginx template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx:1.19.6 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service-nodeport spec: ports: - port: 80 targetPort: 80 nodePort: 30001 protocol: TCP type: NodePort selector: name: nginx EOF
1 2 | # 创建nginx容器 kubectl create -f nginx.yaml |
#获取service
kubectl get svc
查看端口访问地址可见pod已经启动