使用kubeadm安装Kubernetes集群

一、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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值