使用kubeadm安装Kubernetes集群
搭建k8s-kubeadm安装Kubernetes一、k8s介绍二、环境准备使用vmware开三台centos7虚机问题1:虚拟机不能访问公网?先确保宿主机也就是你的电脑可以访问公网,然后如果虚拟机不能访问公网的话,就添加一个DNSvi /etc/resolv.confnameserver 180.76.76.76 #百度dns服务器#接下来的所有操作在三台机器上都执行1.设置主机名hostnam
一、k8s介绍
二、环境准备
使用vmware开三台centos7虚机,一台作为master节点,两台作为work节点
系统:centos7 就可以
资源需求:2c2g20c
问题1:如何配置虚拟机ip?
1.查看宿主机机器里边关于这个vmware的ip信息 win+r cmd
ipconfig
这里可以看到wmware的ip地址 子网掩码还有网关地址 我们的网关和子网掩码一定要和我们宿主机的一致
也就是说 GATEWAY=192.168.102.2/NETMASK=255.255.255.0
然后我们配置centosip时要注意 将 BOOTPROTO改成静态 ONBOOT设置为yes
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.102.120
NETMASK=255.255.255.0
GATEWAY=192.168.102.2
DEFROUTE=yes
NAME=ens33
UUID=f443e87b-573f-41c7-9012-ce54ad2968b3
DEVICE=ens33
ONBOOT=yes
设置完之后 service network restart
问题2:虚拟机不能访问公网?
先确保宿主机也就是你的电脑可以访问公网,然后如果虚拟机调整为net模式还不能访问公网的话,就添加一个百度服务器的DNS,加完这个等1分钟就可以了
vi /etc/resolv.conf
nameserver 180.76.76.76 #百度dns服务器
#接下来的所有操作在三台机器上都执行
1.设置主机名hostname,管理节点设置为master,其他两个节点设置为node1、node2。
hostnamectl set-hostname master
2.编辑/etc/hosts 可以添加域名解析
#>>xxfile 多行向某个文件中重定向输入 <<EOF 以EOF(end of file)重定向输出
cat <<EOF >>/etc/hosts
192.168.102.110 master
192.168.102.111 node1
192.168.102.112 node2
EOF
3.关闭防火墙、selinux和swap
#关闭防火墙
systemctl stop firewalld
#开机禁用防火墙
systemctl disable firewalld
#关闭linux安全子系统 0(临时关闭) 目的是让容器可以读取主机文件系统
setenforce 0
#关闭SELinux服务 通过修改SELinux的配置文件达到修改的目的
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
#关闭系统交换区 -a:将/etc/fstab文件中所有设置为swap的设备关闭
swapoff -a
#永久禁用,打开/etc/fstab注释掉swap那一行
sed -i 's/.*swap.*/#&/' /etc/fstab
4.配置内核参数,将桥接的IPv4流量传递到iptables的链
#就是会到iptable一层,iptable会进行过滤处理
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.配置国内的一些软件源
配置国内yum源
#安装wget下载命令
yum install -y wget
#repos文件是yum源的配置文件 定义了我们将从哪里下载并安装软件包
#创建/etc/yum.repos.d/bak目录 将/etc/yum.repos.d/*.repo文件转到/etc/yum.repos.d/bak这个目录下
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
#下载centos7yum源并起名为CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
#下载epel-7源并起名为epel.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
#先清除之前所有的yum源缓存然后将我们刚才新加的yum源缓存一份
yum clean all && yum makecache
配置国内Kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
#加一个国内阿里云的
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
配置docker源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
三、软件安装
1.安装docker
#docker服务为容器提供计算资源,所有容器运行必须依赖docker服务
yum install -y docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker –version
2.安装kubeadm、kubelet、kubectl
#Kubelet负责与其他节点集群通信,并进行本节点Pod和容器生命周期的管理
#Kubeadm是Kubernetes的自动化部署工具,降低了部署难度
#Kubectl是Kubernetes集群管理工具
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
四、部署master节点
1.在master节点上进行集群初始化
kubeadm init --kubernetes-version=1.14.2 \
--apiserver-advertise-address=192.168.102.110 \ #这里一定要换成自己master节点的地址
--image-repository registry.aliyuncs.com/google_containers \ #配置阿里云镜像仓库
--service-cidr=10.1.0.0/16 \ #定义POD的网段
--pod-network-cidr=10.244.0.0/16
#上边执行完毕后会返回如下信息 这个保存下来后续会有用
kubeadm join 192.168.102.110:6443 --token kekvgu.nw1n76h84f4camj6 \
--discovery-token-ca-cert-hash sha256:4ee74205227c78ca62f2d641635afa4d50e6634acfaa8291f28582c7e3b0e30e
2.配置kubectl工具
mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
kubectl get nodes
kubectl get cs
3.部署flannel网络
#这块这个raw.githubusercontent.com如果解析不了的话就在dns里加一个 199.232.4.133 raw.githubusercontent.com
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
五、部署node节点
在所有node节点执行第四步第一段返回的内容让所有node节点加入集群
kubeadm join 192.168.102.110:6443 --token kekvgu.nw1n76h84f4camj6 \
--discovery-token-ca-cert-hash sha256:4ee74205227c78ca62f2d641635afa4d50e6634acfaa8291f28582c7e3b0e30e
六、集群状态检测
#查看STATUS内容为Ready时,则说明集群状态正常
1.kubectl get nodes
2.创建Pod以验证集群是否正常
#部署完之后在宿主机上访问下看是否可以访问到ng
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
[root@master lsm]# kubectl get pod,svc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-6799fc88d8-pqg9l 1/1 Running 1 20h 10.244.2.7 node2 <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 22h <none>
service/nginx NodePort 10.1.10.198 <none> 80:30843/TCP 20h app=nginx
可以看到ng部署在node2 192.168.102.111 端口是30843 我们可以访问 http://192.168.102.111:30843/ 看下页面
七、部署Dashboard(在这里我们使用beta版本的Dashboard)
1.创建Dashboard的yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
2.拉取镜像
docker pull kubernetesui/metrics-scraper:v1.0.1
docker pull kubernetesui/dashboard:v2.0.0-beta4
3.修改文件
vi recommended.yaml
nodeport访问方式需要改下就改成下边这样
4.创建应用
kubectl create -f recommended.yaml
5.查看运行状态
kubectl get pods --all-namespaces
6.查看端口
[root@master lsm]# kubectl get svc -n kubernetes-dashboard -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
dashboard-metrics-scraper ClusterIP 10.1.184.39 <none> 8000/TCP 14h k8s-app=dashboard-metrics-scraper
kubernetes-dashboard NodePort 10.1.232.48 <none> 443:31001/TCP 14h k8s-app=kubernetes-dashboard
[root@master lsm]# kubectl get pod -n kubernetes-dashboard -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dashboard-metrics-scraper-7b9b99d599-h5lt9 1/1 Running 1 14h 10.244.1.9 node1 <none> <none>
kubernetes-dashboard-6d4799d74-vv79t 1/1 Running 1 14h 10.244.2.6 node2 <none> <none>
可以看到nodeip是node2 端口是31001 所以访问链接就是 https://192.168.102.112:31001/
7.用chrom进行访问
如果提示私密链接 可以直接键盘敲 thisisunsafe 跳过
选择Token,在master节点查看令牌并粘贴
[root@master lsm]# kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
Name: namespace-controller-token-mz648
Type: kubernetes.io/service-account-token
token: eyJhbGciOiJSUzI1NiIsImtpZCI6Im9Sd3hFT0F4bzFCVWJ1d2h2dldOVVd5WWE3RHRLYTRiTmplLWk3Vkx0X1kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi1tejY0OCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijg5ZWE2MTI4LTczZTAtNDFiNy1hZGJlLTA2NTNmYzhiZWMwZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.OKXGn13S0B9mOmTNylp4heQ3EwpX0iITnXD8KaZe0-4JsD3NAUIW6kPJDirx7nAWHfq9kypNhG16PaXP4fxqfXfUgwijNrqCZ0dynFRt1IltBx0gUBtgR6WvO8zktZo1rREY_WIIedriFgOJMEN4bbVLYS4MqEI_8CVKVSCsAamQGrYMcb2Az70QnBilac4Pb3jcjz8zPba-CZFBI7qG42DcV7eUjJ_pVadI2HUjExqOV6mFiIHPomjICCSsIPVjdbxX1b9AwwCrqDFg5nSU5dyYW4k_mik2pc8i23Amr28seHI6NJj5mSKVa_Z79SQ9UjNxf52OcWw0yIAc3DJaaA
参考
1.k8s官方文档
https://www.kubernetes.org.cn/5462.html
2.dashbord beta版本下载部署教程
https://blog.csdn.net/weixin_48154829/article/details/109182313
更多推荐
所有评论(0)