kubeadm安装kubernetes环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37886429/article/details/88779544

Linux centos7.6服务器环境说明:

三台服务器ip和主机名分别为
192.168.48.130 k8s-master
192.168.48.131 k8s-node1
192.168.48.132 k8s-node2

一、初始化工作

1、关闭seleniux、iptables、firewalld和NetworkManager

systemctl stop NetworkManager
systemctl disable NetworkManager

systemctl stop firewalld
systemctl disable firewalld

sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0

iptables -F

2、配置时间同步

yum -y install chronyd
systemctl start chronyd

3、关闭swap

echo "vm.swappiness = 0">> /etc/sysctl.conf
sysctl -p 
swapoff -a

备注:如果是虚拟机内存不是很充足的时候,可以不用关闭

4、配置hosts解析

cat >> /etc/hosts << END
192.168.48.130 k8s-master
192.168.48.131 k8s-node1
192.168.48.132 k8s-node2
END

5、如果采用ipvs转发,需要加载ipvs模块

#!/bin/sh
ipvs_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for mod in $(ls $ipvs_dir | grep -o "[^.ko]*")
do
  modinfo -F filename $mod &> /dev/null
  if [ $? -eq 0 ];then
    modprobe $mod
  fi
done

二、在master和node上安装docker环境

1、安装docker

#安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

#下载最新的仓库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

#安装docker
yum install docker-ce -y

2、修改docker启动文件
若通过k8s.gcr.io镜像仓库获取kubernetes系统相关镜像,需要在docker启动文件(/usr/lib/systemd/system/docker.service)中配置 Environment 变量,为其定义 HTTPS_PROXY,格式如下

#格式:Environment="HTTPS_PROXY=PROTOCOL://HOST:PORT"
Environment="HTTPS_PROXY=http://www.ik8s.io:10070"
Environment="NO_PROXY=127.0.0.0/8,192.168.0.0/16"    #不用代理的为本机ip

#iptables中FORWARD链是关闭的,需要在dockers启动后开启,需要在启动文件 ExecStart 下添加一行
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT

3、启动docker

systemctl daemon-reload
systemctl start docker

4、查看配置信息是否生效

#出现HTTPS PROXY和NO PROXY字段表示添加配置生效
docker info

#出现  Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) 添加配置生效
iptables -vnL  

4、修改内核参数,将桥接的IPV4流量传递到iptables 的链

sysctl -a | grep bridge

cat >> /etc/sysctl.conf << END
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#net.bridge.bridge-nf-call-arptables = 1
END

sysctl --system

三、安装 kubernetes 集群

1、master和node配置最新yum仓库

cat > /etc/yum.repos.d/kubernetes.repo << END
[kubernetes]
name = kubernetes
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgchek = 1
gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
         https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enable = 1
END

2、在master和node上安装软件

#查看
yum list all | grep "^kube"

#安装软件
yum -y install kubeadm kubelet kubectl

3、在master和node上设置忽略swap启用的状态

#修改kubelet配置文件  /etc/sysconfig/kubelet
KUBERLET_EXTRA_ARGS="--fail-swap-on=false"

4、在master上做初始化操作
4.1 查看默认配置信息

kubeadm config print init-defaults

4.2 pod之间相互通信插件默认网段

flannel:10.244.0.0/16
calico:192.168.0.0/16

备注:这里使用的是flannel网络

4.3 下载镜像

#查看所需的镜像
kubeadm config images list

#这些镜像默认在gcr上,由于网络问题,有时这些镜像可能下载不下来,所以需要提前将这些镜像下载
#docker.io仓库对google的容器做了镜像,可以通过下列命令下拉取相关镜像
docker pull mirrorgooglecontainers/kube-apiserver:v1.13.4
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.4
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.4
docker pull mirrorgooglecontainers/kube-proxy:v1.13.4
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6

#版本信息需要根据实际情况进行相应的修改。通过docker tag命令来修改镜像的标签
docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.4 k8s.gcr.io/kube-proxy:v1.13.4
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.4 k8s.gcr.io/kube-scheduler:v1.13.4
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.4 k8s.gcr.io/kube-apiserver:v1.13.4
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.4 k8s.gcr.io/kube-controller-manager:v1.13.4
docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24  k8s.gcr.io/etcd:3.2.24
docker tag docker.io/mirrorgooglecontainers/pause:3.1  k8s.gcr.io/pause:3.1
docker tag docker.io/coredns/coredns:1.2.6  k8s.gcr.io/coredns:1.2.6

4.4 初始化

#ignore-preflight-errors参数如果是物理机,内存比较大可以不指定此参数
#这个初始化是采用k8s默认的镜像仓库,因此需要先将上面的镜像pull下来
kubeadm init --apiserver-advertise-address="192.168.49.130" \
--kubernetes-version="v1.13.4" \
--pod-network-cidr="10.244.0.0/16" \
--service-cidr="10.1.0.0/16" \
--ignore-preflight-errors=Swap

#采用国内的镜像仓库
kubeadm init --apiserver-advertise-address="192.168.49.130" \
--kubernetes-version="v1.13.4" \
--image-repository="registry.aliyuncs.com/google_containers" \
--pod-network-cidr="10.244.0.0/16" \
--service-cidr="10.1.0.0/16" \
--ignore-preflight-errors=Swap

5、在master上使用kubectl管理以及初始化flannel网络

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

#初始化flannel网络
#git地址:https://github.com/coreos/flannel ,以下命令是在git上找到的
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

6、在node上做初始化配置

#初始化命令
kubeadm join 192.168.49.130:6443 --token lt38jo.07d7hntzhckepslx --discovery-token-ca-cert-hash sha256:318a4284bf1d944de5c86081e6b692e6bdfff5202456c98a6e7cf0c91e0d2b69 --ignore-preflight-errors=Swap

备注:在node做初始化操作时需要用的镜像有pause、kube-proxy、flannel
问题:
在node上做初始化配置有一个报错,内容如下

k8s The HTTP call equal to 'curl -sSL http://localhost:10255/healthz' failed with error

#这个是由于在kubelet的配置文件中没有设置忽略swap,因此需要在 /etc/sysconfig/kubelet 中添加下面内容即可
KUBERLET_EXTRA_ARGS="--fail-swap-on=false"

7、测试

kubectl create deployment nginx --image=nginx:1.14
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
kubectl get pods -n kube-system

四、安装Dashboard

官网地址:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
git地址:https://github.com/kubernetes/dashboard
1、下载 kubernetes-dashboard.yaml 文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml

2、修改 kubernetes-dashboard.yaml 文件并创建

①修改Deployment镜像地址:
将 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 更改为
 registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1

②修改Service:
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort     #主要是添加了类型
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

#创建
kubectl apply -f kubernetes-dashboard.yaml

3、创建SA并绑定默认cluster-admin管理员集群角色

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

4、访问
方式一:使用代理方式

kubectl proxy --address='192.168.49.131' --disable-filter=true
访问:
http://192.168.49.131:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

在这里插入图片描述
在这里插入图片描述

方式二:使用集群node ip方式

https://nodeIp:31313//api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37886429/article/details/88779544