1.博主 三台centos7 (这三台虚拟机都 已经安装好了 docker)
注: 机器名称:IP
k8s-master:192.168.50.160
k8s-node1:192.168.50.161
k8s-node2:192.168.50.162
以下命令 三台主机都要执行一边。
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭se1inux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
关闭swap:
vi /etc/fstab #永久 在 /dev/mapper/centos-swap 前面添加一个 #号 注释掉就OK了
设置主机名 (注意这个名称 自己去切换哈,不要傻乎乎的 每台主机都写成 k8s-node1)
hostnamectl set-hostname k8s-node1
在 master添加 hosts
cat >> /etc/hosts << EOF
192.168.50.160 k8s-master
192.168.50.161 k8s-node1
192.168.50.162 k8s-node2
EOF
将桥接的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
时间同步:
yum install ntpdate -y
ntpdate time.windows.com
安装 kubeadm、kubelet、kubectl:
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=1
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 clean all
yum makecache
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet
------------------------------------------------------------------ 到此为止 结束,下面的命令 就要自己在 在分别的主机上执行
master节点上安装 : (注:只需要在 k8s-master:192.168.50.160 这台执行)
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.16
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.16
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.16
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.16
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.16 k8s.gcr.io/kube-apiserver:v1.19.16
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.16 k8s.gcr.io/kube-controller-manager:v1.19.16
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.16 k8s.gcr.io/kube-scheduler:v1.19.16
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.16 k8s.gcr.io/kube-proxy:v1.19.16
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1 k8s.gcr.io/etcd:3.4.9-1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.16
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.16
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.16
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.16
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0
kubeadm init \
--apiserver-advertise-address=192.168.50.160 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
注意:一定要主要看这个命令 执行的结果 因为下面都需要用到
或者执行一次
#加载环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source .bash_profile
#安装pod网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubeadm token list
#生成新的令牌
kubeadm token create
#生成新的加密串
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'
根据 info日志信息 执行命令 例如
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
自己再次执行一边。
现在可以看效果了:
kubectl get node
这里只能看到一台节点,因为 node节点的主机 还没有加入 到 master上 ,现在开始加入
node 接口加入 master 上 (注:只需要在 k8s-node1:192.168.50.161、k8s-node2:192.168.50.162 这俩台执行)
根据 master节点 info日志信息 执行命令 例如:
kubeadm join 192.168.50.160:6443 --token vmlcpy.gbt6kknrv1oljtiu \
--discovery-token-ca-cert-hash sha256:23a106c2977824d1a965fcf52cf36648959f9fab70b80009d7c65b5649aaa19e
上面的执行完了 在到 master节点上的主机执行
kubectl get node
就能看到 三台节点了, 到了这一步 恭喜你 已经,建立的一个集群了。
查看 master kube 状态日志:
journalctl -u kubelet
journalctl -u kubelet > A #把日志写入到 A文件下,这样方便查看
但是 集群还没有运行起来,现在需要 解决 网络的问题,接下来在master节点上运行 (注:只需要在 k8s-master:192.168.50.160 这台执行)
wget http://docs.projectcalico.org/v3.8/manifests/calico.yaml
修改内容:vi calico.yaml # 记得一定要修改 内容
# - name: CALICO_IPV4POOL_CIDR
# value: "192.168.0.0/16"
修改为
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16" # 这里一定要写 kubectl init 里面 添加的网关 基于上面写的 这里改成 10.244.0.0/16
wq
kubectl apply -f calico.yaml #安装
kubectl get pods -n kube-system #查看
安装 UI (注:只需要在 k8s-master:192.168.50.160 这台执行)
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
vi recommended.yaml
修改Service部分
-----------------------------------------------
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 31000
selector:
k8s-app: kubernetes-dashboard
type: NodePort
----------------------------------------------
kubectl apply -f recommended.yaml
创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
获取token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
访问即可:https://192.168.50.160:31000/ (注意:因为证书的缘故:只能在 火狐浏览器,或者360 的浏览器访问,谷歌浏览器其他的浏览器暂时访问不了,解决完证书的问题就OK了!)
到此位置,基本部署已经结束了。 接下来一起学把。