查看centos版本:rpm -q centos-release 或 cat /etc/redhat-release
准备机器(3台):cpu>=3:处理器>=1
192.168.159.223(master):192.168.159.224(node1):192.168.159.225(node2)
编写机器名设置:
vi /etc/hosts
输入:
192.168.159.223 master
192.168.159.224 node1
192.168.159.225 node2
保存退出并重启机器——>reboot
关闭防火墙:(所有机器执行)
systemctl stop firewalld && systemctl disabled firewalld
关闭selinux:(所有机器执行)
临时关闭:setenforce 0
永久关闭:
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
保存后退出;通过getenforce查看状态
关闭交换区swap(虚拟内存):
查看:free g或 free
关闭:swapoff -a
永久关闭: sudo sed -i 's/.*swap.*/#&/' /etc/fstab
创建密钥:互相免密访问:
//生成秘钥和私钥
ssh-keygen
执行ssh-copy-id将公钥复制到节点机
//将秘钥和私钥复制到其他节点,这样就可以相互免密登录了
ssh-copy-id root@192.168.159.222
测试访问:
退出:exit
安装同步时钟:
yum install -y ntpdate
ntpdate time windows.com
内核调整,将桥接的ipv4流量传递到iptables的链
配置系统内核参数使流过网桥的流量也进入iptables/netfilter框架中
vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
执行:立即生效:sysctl -p
注:如果上面执行sysctl -p时报错,可以先执行一下modprobe br_netfilter,然后再重新执行sysctl -p
安装kubernetes和docker
先添加kubernetes和docker的yum源
cd /etc/yum.repos.d/
vi kubernetes.repo
----------------------------------------------------------------------------
添加内容如下:
[kubernetes]
name=Kubernetes repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker kubelet kubeadm kubelectl
yum install docker kubelet kubeadm kubectl
启动docker
配置docker国内镜像:
vi /etc/docker/daemon.json
添加内容如下:
{
"registry-mirrors": ["https://dlbpv56y.mirror.aliyuncs.com"],
"registry-mirrors": ["http://04be47cf.m.daocloud.io"],
"insecure-registries": ["192.168.159.223:5000"]
}
执行:systemctl daemon-reload
启动docker:systemctl enable docker && systemctl start docker
查看状态:systemctl status docker
启动kubelet:(注:在没有进行init操作前,kubelet无法正常启动)
systemctl enable kubelet && systemctl start kubelet
查看状态:systemctl status kubelet
启动kubernetes集群:
查看kubelet版本:kubelet --version
kubeadm init \
--apiserver-advertise-address=192.168.159.223 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
kubeadm init --apiserver-advertise-address=192.168.159.223 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
已实践:kubeadm init --apiserver-advertise-address=192.168.159.223 --kubernetes-version=v1.18.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
--image-repository registry.aliyuncs.com/google_containers此处若是失败;可以本地拉取镜像,参考最后的网址
执行完毕;
继续执行(分步执行-主节点):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
添加节点:(子节点执行)
kubeadm join 192.168.159.223:6443 --token 4ejzk4.ko1ooqlywpib29ie --discovery-token-ca-cert-hash sha256:007dbb2637d38a2845cc6b43767342c69161d3544c96e34553045f23736dd58f
查看:kubelet get nodes
Kubelet get pods
安装网络插件:
安装weave网络插件
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
子节点报错:
Unable to update cni config: no networks found in /etc/cni/net.d
vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
添加
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/ --cni-bin-dir=/opt/cni/bin"(不一定有用啊,试过了)
再次进行查看:
kubectl get nodes
kubectl get pods
运行一个应用:
master节点执行:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pods,svc
浏览器访问:ip:PORT(S)
参考:https://blog.csdn.net/hanlaipeng11/article/details/83246822(推荐)
https://blog.csdn.net/allensandy/article/details/101470532
https://www.cnblogs.com/liweiming/articles/12603624.html
https://www.cnblogs.com/kingle-study/p/11686345.html
https://www.cnblogs.com/double-dong/p/11483670.html
差不多就看这几个弄得,希望有所帮助