k8s摸索之kubeadm快速部署
一、虚拟机配置
1、在WMware里装上3台虚拟机,CentOS7最小化系统,配置好独立IP,截图如下:
2、修改虚拟机网卡配置,然后启动网卡,再查看ip已经固定
#vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static ONBOOT=yes NM_CONTROLLED=yes IPADDR=192.168.126.100 NETMASK=255.255.255.0 GATEWAY=192.168.126.2 DNS1=114.114.114.119 DNS2=114.114.115.119 #启动网卡 ifup ens33 #关闭网卡 ifdown ens33
二、集群部署
以下均需在所以节点上配置
1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0
3、关闭swap
swapoff -a # 临时关闭 sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
4、修改主机名字和配置hosts
#修改主机名字 hostnamectl set-hostname 名字 #vi /etc/hosts 192.168.126.100 k8s-master 192.168.126.101 k8s-node1 192.168.126.102 k8s-node2
5、将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
6、安装docker,https://docs.docker.com/engine/install/centos/
7、安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet #设置开机自启
8、部署master,在master上操作,首先查看kubeadm初始化需要的镜像版本,由于访问不了谷歌的镜像需要改会国内的
# 查看镜像版本
kubeadm config images list
方法1:此时可以一个一个下载需要的镜像,再用docker tag命令改成对应的名称,或者用下面shell脚本:
#!/bin/bash set -e KUBE_VERSION=v1.18.6 KUBE_PAUSE_VERSION=3.2 ETCD_VERSION=3.4.3-0 CORE_DNS_VERSION=1.6.7 GCR_URL=k8s.gcr.io ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers images=(kube-proxy:${KUBE_VERSION} kube-scheduler:${KUBE_VERSION} kube-controller-manager:${KUBE_VERSION} kube-apiserver:${KUBE_VERSION} pause:${KUBE_PAUSE_VERSION} etcd:${ETCD_VERSION} coredns:${CORE_DNS_VERSION}) for imageName in ${images[@]} ; do docker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName docker rmi $ALIYUN_URL/$imageName done
然后发现阿里云镜像没有那么高版本镜像,干脆把kubelet、kubectl、kubeadm降低版本
yum remove kubelet kubeadm kubectl yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
再从8开始
方法2:初始化的时候改镜像源
9、初始化
kubeadm init \ --apiserver-advertise-address=192.168.126.100 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.15.0 \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
10、配置kubectl,直接按照第一个框内的内容来,为了使用便捷,启用 kubectl 命令的自动补全功能
echo "source <(kubectl completion bash)" >> ~/.bashrc
11、安装pod网络插件,可按中文文档来
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
12、查看节点状态
kubectl get nodes #查看所有节点 kubectl get pod --all-namespaces #查看所有命名空间的pod kubectl describe pod [pod名称] --namespace=kube-system #查看pod没准备好的原因
12、加入node就按第二个红框的内容,注意安装pod网络
13、查看pod和服务,只看到集群服务在跑
kubectl get pod,svc #svc是service的缩写
14、创建一个nginx pod容器并对外暴露端口,再查看pod和服务
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort
等到nginx准备好了访问三个node节点的ip:30567就发现都可以访问nginx服务了