快速部署 k8s 集群

314 阅读1分钟

1. 关闭防火墙(master,slave1,slave2)

systemctl stop firewalld
systemctl disable firewalld

2. 关闭selinux(master,slave1,slave2),下面两条命令都要执行

# 永久
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 临时
setenforce 0

3. 关闭swap (master,slave1,slave2)

swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

4. 根据规划设置主机名(根据自己的命名,去每一台执行自己的命令)

在master 执行

hostnamectl set-hostname master

在salve1执行

hostnamectl set-hostname salve1

在salve2执行

hostnamectl set-hostname salve2

5. 添加hosts(master,slave1,slave2)

cat >> /etc/hosts << EOF
192.168.88.161 master
192.168.88.162 salve1
192.168.88.163 salve2
EOF

6. 将桥接的IPv4流量传递到iptables的链(master,slave1,slave2)

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720         
EOF

sysctl --system

7. 时间与windows同步 (master,slave1,slave2)

yum install ntpdate -y
ntpdate time.windows.com

8. 安装kubeadm、kubelet、kubectl(master,slave1,slave2)

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 
systemctl enable kubelet

9. 部署k8s master (master)

注意:apiserver-advertise-address属性值为master的ip

kubeadm init \
  --apiserver-advertise-address=192.168.88.161 \
  --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

10. 创建指定目录

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

11. 查询节点

kubectl get nodes

12. 在从节点执行如下命令,添加从节点(slave1,slave2)

kubeadm join 192.168.88.161:6443 --token qscyg6.bly3ig2mk3j65raa \
    --discovery-token-ca-cert-hash sha256:9f21169ae93e66b050e4cbd13177dc911bc2e645d943563489e49ab29ab41494
    
# k8s 配置导入环境变量
cat >> /etc/profile <<EOF
export KUBECONFIG=/etc/kubernetes/kubelet.conf 
EOF

source /etc/profile

13. 主节点部署CNI (master)

# 1. 在http://ip.tool.chinaz.com/ 查询 raw.githubusercontent.com 的ip
# 2. 添加 ip 映射信息
cat >> /etc/hosts <<EOF
185.199.111.133 raw.githubusercontent.com
EOF
# 3. 部署CNI 
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

14. 查看pod的状态(master)

全部节点状态为running 则是成功

kubectl get pods -n kube-system

image.png

15. 查询节点状态

全部节点状态为 ready 则是成功

kubectl get nodes

image.png

16. 测试集群

在Kubernetes集群中创建一个nginx pod,验证是否正常运行

#创建pod
kubectl create deployment nginx --image=nginx
#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
#查看pod,service信息
kubectl get pod,svc

image.png

17. 访问 http://192.168.88.161:31563/

出现 nginx 界面,则是成功