k8s学习(一) 虚拟机centos7 使用kubeadm安装k8s:1.15.0(多节点)
程序员文章站
2022-03-07 11:09:12
...
1.虚拟机配置
角色 | 文字中简称 | 基本配置 | ip | 安装的组件 | 备注 |
---|---|---|---|---|---|
k8s-master | 主节点 | 2核,2G | 192.168.0.108 | docker, <kubeadm,kubectl, kubelet> | ip使用的是静态设置的ip |
k8s-node1 | 子节点 | 2核,2G | 192.168.0.109 | docker, <kubeadm,kubectl, kubelet> | ip使用的是静态设置的ip |
2.节点环境准备:(所有节点都要操作)
1.配置hosts文件
cat >> /etc/hosts<<EOF
192.168.0.108 k8s-master
192.168.0.109 k8s-node1
EOF
2.关闭防火墙
sudo systemctl stop firewalld #临时关闭
sudo systemctl disable firewalld #然后reboot 永久关闭
sudo systemctl status firewalld #查看防火墙状态
3.禁用swap内存交换
第一步 关闭swap分区:
swapoff -a
第二步修改配置文件 - /etc/fstab
#删除swap相关行
/mnt/swap swap swap defaults 0 0 #这一行或者注释掉这一行
第三步确认swap已经关闭
free -m
若swap行都显示 0 则表示关闭成功
第四步调整 swappiness 参数
echo 0 > /proc/sys/vm/swappiness # 临时生效
vi /etc/sysctl.conf # 永久生效
#修改 vm.swappiness 的修改为 0
vm.swappiness=0
sysctl -p # 使配置生效
4.配置iptable管理ipv4/6请求
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
5.安装docke-rce-18.06
#如果未按照wget命令
yum install wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker #启动并设置开机启动
docker --version #查看是否安装成功
6.配置docker启动参数
#如果未按照wget命令
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://yywkvob3.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重启docker
systemctl daemon-reload
systemctl restart docker
7.安装kubeadm套件
#如果未按照wget命令
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet
3.集群配置:(主节点操作)
1.设置集群主节点配置
kubeadm init \
--apiserver-advertise-address=192.168.0.108 \
--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
#192.168.0.108 替换为主节点ip
注意事项:生成的token需要保留下来,用于子节点添加的凭证
例如:kubeadm join 192.168.0.108:6443 --token 5pwx77.ahs98fxdfpdwpjf1 \
--discovery-token-ca-cert-hash sha256:d81f347530ad3e1b03cfdf53666a20b62ab09f1ce3d3ccf2a437ee33805f5183
#配置环境变量
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.部署flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
#如果连接不了,可网上下载一个kube-flannel.yml文件
kubectl get nodes #查看节点信息
注意事项:flannel没下载完成前,主节点会显示是NoReady状态,请耐心等待一会,切勿关机
kubectl get pods -n kube-system #查看目前pod
kubectl get pods,svc -n kube-system
4.子节点加入集群:(子节点操作)
1.将主节点获取到的token信息,在子节点中执行
kubeadm join 192.168.0.108:6443 --token 5pwx77.ahs98fxdfpdwpjf1 \
--discovery-token-ca-cert-hash sha256:d81f347530ad3e1b03cfdf53666a20b62ab09f1ce3d3ccf2a437ee33805f5183
注意事项:在执行这个语句后,主节点会有一个加载资源的过程,这个时候使用命令查看
kubectl get nodes #查看节点信息、
子节点可能是NoReady状态,请耐心等待一会,切勿关机
4.测试集群是否正常:(主节点操作)
查看所有节点是否是Ready状态
kubectl get nodes #查看节点信息
部署一个nginx 应用
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
在浏览器中访问:节点ip:service暴露的端口,来验证