搭建流程:
master: 192.168.0.123
master和所有节点共同操作:
1.关闭swap,swapoff -a && 注释fstab
2.关闭selinux&&防火墙
3.
写入转发流量:```
[root@master ~]# cat > /etc/sysctl.d/k8s.conf << EOF
> net.ipv4.ip_forward = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
sysctl --system
```
master:
2.设置yum:
```
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
```
3.安装:
```
yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
systemctl enable kubelet
modprobe br_netfilter
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
```
4.初始化:
```
kubeadm init --apiserver-advertise-address=192.168.0.123 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
#注意master_ip : 192.168.0.123
#--service-cidr=10.1.0.0/16 #生成容器IP段落
#--pod-network-cidr=10.244.0.0/16 #podIP段落
#相互不要冲突
```
#
```
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
6.设置flannel```
vim kube-flannel2.yml
#在kube-flannel2.yml中
sed -i 's/flannel:v0.13.1-rc1/flannel:v0.12.0-amd64/g' kube-flannel2.yml
kubectl apply -f kube-flannel2.yml
7查看状态:
```
kubectl get pod -n kube-system | grep kube-flannel
kubectl get pods -n kube-system
#出现以下类似的为成功:
[root@node1 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-6d56c8448f-6kxm6 1/1 Running 0 117m
coredns-6d56c8448f-w8xcl 1/1 Running 0 117m
etcd-node1 1/1 Running 0 117m
kube-apiserver-node1 1/1 Running 0 117m
kube-controller-manager-node1 1/1 Running 1 91m
kube-flannel-ds-6j6fq 1/1 Running 0 107m
kube-flannel-ds-6wlbh 1/1 Running 0 112m
kube-flannel-ds-vvl2v 1/1 Running 0 108m
kube-proxy-7sc8t 1/1 Running 0 107m
kube-proxy-hcgnh 1/1 Running 0 117m
kube-proxy-t5krr 1/1 Running 0 108m
kube-scheduler-node1 1/1 Running 1 91m
kubernetes-dashboard-64f67f69db-dkr49 1/1 Running 0 77m
```
8修改文件
```
kubectl get cs报错
```
[root@node1 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
controller-manager Unhealthy Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
scheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
etcd-0 Healthy {"health":"true"}
```
修改此时,我们需要修改 /etc/kubernetes/manifests/下面对应的yaml文件
就是这两个
kube-controller-manager.yaml kube-scheduler.yaml 去掉将里面的 --port=0 去掉,
然后
[root@node1 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
```
node:
1设置yum:
```
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
```
2.安装:
```
yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
```
3.加入:
```
kubeadm join 192.168.0.123:6443 --token 4g8yzm.bh8du3qepkri44wn --discovery-token-ca-cert-hash sha256:5eff44fa843f220938fc42493cbb05f188b7ae4632911cebb1f228244df3e687
#按照4.初始化的结果来输入
```
测试
```
#master
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
[root@node1 ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-6799fc88d8-f29dx 1/1 Running 0 86m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 116m
service/nginx NodePort 10.1.24.122 <none> 80:31572/TCP 86m
[root@node1 ~]# curl 10.1.24.122:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
```