centos7+ install kubernetes

1、修改/etc/hosts

分别更改Hostname为 master、node1、node2
vim /etc/hostname

master
node1
node2

将下面的添加到每个服务器中
vim /etc/hosts

193.xxx.xx.167 master
 
193.xxx.xx.58 node1
 
193.xxx.xx.59 node2

roboot重启机器生效

2.关闭CentOS7自带的防火墙服务

关闭所有防火墙!!

# 临时关闭
service firewalld stop
# 设为开机,不启动
systemctl disable firewalld
# 查看防火墙的状态 
systemctl status firewalld 
# 查看iptables状态 要关闭
systemctl status  iptables

3.关闭seLinux

修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可生效
临时关闭selinux:

setenforce 0

查看SELinux状态:

getenforce

在这里插入图片描述

4.禁用交换分区(临时)

查看交换分区状态,如果swap数值全部为0,则表示已经禁用。

# free -h

在这里插入图片描述

# swapoff -a

5.设置代理(临时)

当你的服务器连不了外界的网时,才需要设置。不然不需要!

# export http_proxy=http://xx.xxx.129.21:8080
 
# export https_proxy=http://xx.xxx.129.21:8080

6.更新yum

系统初始化安装(所有主机)-选择【最小化安装】,然后yum update,升级到最新版本

# yum -y install epel-release

# yum update

7.安装docker

每台服务器都需要装!!!

卸载旧版本(如果安装过旧版本的话)

# yum remove docker  docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

# sudo yum install -y yum-utils device-mapper-persistent-data lvm2

7.1.添加yum源

# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

注:docker的官方镜像由于在国外有些rpm下载不了,所以用阿里的镜像。
另外,安装之前执行yum clean all命令,以防缓存中版本冲突。

7.2.可以查看所有仓库中所有docker版本,并选择特定版本安装

# yum list docker-ce --showduplicates | sort -r

7.3.安装docker

# sudo yum install docker-ce docker-ce-cli containerd.io  #默认安装最新版

或者要选择安装某个版本:

# sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

7.4.启动并加入开机启动

# sudo systemctl start docker
 
# sudo systemctl enable docker

7.5.验证安装是否成功

docker version

在这里插入图片描述
表明安装成功!

由于默认镜像仓库在国外下载很慢,经常会断

通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

#sudo mkdir -p /etc/docker
#sudo tee /etc/docker/daemon.json <<-'EOF'
 
{
  "registry-mirrors": ["https://qqnn8qm9.mirror.aliyuncs.com"]
}
 
EOF

重启docker使其生效

#sudo systemctl daemon-reload
 
#sudo systemctl restart docker

7.6.设置上网代理

如果服务器需要代理才能联网,docker也要配置相应的代理。没有的话,请忽略

# mkdir -p /etc/systemd/system/docker.service.d
#vim /etc/systemd/system/docker.service.d/http-proxy.conf
 
写入以下内容:
 
[Service]
 
Environment="HTTP_PROXY=http://xxx.xxx.129.xx:8080" "NO_PROXY=localhost,127.0.0.1"
 
$ vim /etc/systemd/system/docker.service.d/https-proxy.conf
 
写入以下内容:
 
[Service]
 
Environment="HTTPS_PROXY=http://xx.xxx.xxx.xx:8080" "NO_PROXY=localhost,127.0.0.1"

重启使生效:

# systemctl daemon-reload
 
# systemctl restart docker
 
# systemctl show --property=Environment docker

7.7.测试docker是否能够正常使用

docker run hello-world

在这里插入图片描述
表明成功

8.时间校对(三台机器都做时间校对)

每台依次执行下列所有命令

yum install ntp
 
systemctl start ntpd
 
systemctl enable ntpd
 
ntpdate ntp1.aliyun.com
 
hwclock -w

9.安装k8s组件

每台服务器都需要进行以下操作!

9.1.配置国内的repo源:

#cat >> /etc/yum.repos.d/kubernetes.repo <<EOF 
 
[kubernetes]
 
name=Kubernetes
 
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

9.2.修改网络配置:

修改内核两个参数(这两个是参数是防止应用部署在centos系统情况下由于iptables被绕过而导致的路由错误)
简单的说就是使流过网桥的流量也进入iptables/netfilter框架中:

# cat <<EOF >  /etc/sysctl.d/k8s.conf
 
net.bridge.bridge-nf-call-ip6tables = 1
 
net.bridge.bridge-nf-call-iptables = 1
 
EOF

修改完成后执行sysctl --system使其生效。
sysctl --system

确认并保证输出的都是1

# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables

1

# cat /proc/sys/net/bridge/bridge-nf-call-iptables

1

9.3.安装k8s包:

# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

9.4.完成后启动kubelet服务:

# systemctl enable kubelet.service
# systemctl start kubelet.service
 
查看状态
# systemctl status kubelet.service

K8s未初始化,kubelet是启动不起来

10. 初始化master节点

10.1.查看kubectl的版本信息:

$ kubectl version

在这里插入图片描述

10.2.初始化集群:

对master服务器进行操作:
法1:

kubeadm init --kubernetes-version=1.19.2 --apiserver-advertise-address=192.168.118.128 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

1.19.2是你kubectl的版本
修改对应kubectl版本和本机IP地址
-image-repository 指定镜像仓库地址,默认的仓库在国外,可能导致镜像下载出问题

上述命令初始化master后,会打印出下列token
记录好这段,以后会经常用到: 用来在node节点服务器执行(执行成功后即可加入集群,再master节点可查看)

kubeadm join 192.168.118.128:6443 --token 0ho5p9.o97ocfp4oy3yboos \
    --discovery-token-ca-cert-hash sha256:9b513f2871c90031380c13aeff6b6dd92a3ec84e467a63322e947405cb440c4f 

法2:
如果网络ok,使用法1的方法安装不会存在问题。但是国内可能一些镜像无法下载,可以使用阿里云的docker hub镜像进行安装。
首先输出kubeadm默认配置:

#kubeadm config print init-defaults > kubeadm-init.yaml

将其中:
这一步我试了一半,应该能行,但是下图中的registry.cnhangzhou.aliyuncs.com/google_containers不可用,我将cnhangzhou删除就可以pull了,还是镜像容器的问题,我只做到了这里

mageRepository修改成 registry.cnhangzhou.aliyuncs.com/google_containers

 

serviceSubnet部分设置成10.244.0.0/16,也就是--pod-network-cidr=10.244.0.0/16参数。

 

advertiseAddress: 1.2.3.4

改成193.xxx.xx.167(及本机地址)

然后先进行镜像下载:

#kubeadm config images pull --config kubeadm-init.yaml

最后再使用修改后的配置进行初始化:

#kubeadm init --config kubeadm-init.yaml

即可
下面是一些常用的命令:
重新初始化 # kubeadm reset
检测组件运行是否正常 # kubectl get cs

查看所有节点(集群状态检测)
(注:在master节点上进行如下操作):

[hall@master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

master NotReady master 41m v1.13.0

复制代码这里master的状态为NotReady是因为还没有进行pod network安装。下面接着讲。

10.3.初始化成功后打印,按提示操作:

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

11.安装 flannel网络

下载yml文件:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

11.1.然后创建flannel:

我当时是执行的这步

kubectl apply -f  kube-flannel.yml

没有执行创建这步

# kubectl create -f kube-flannel.yml

完成后可以检查:

# kubectl get nodes

在这里插入图片描述
这个时候应该还么有node节点,类似上图
在这里插入图片描述

NAME STATUS ROLES AGE VERSION

master Ready master 102d v1.13.0

这时候节点的状态应该是Ready。说明master节点状态正常。

同时也可以查看flannel的pod:

$ kubectl get pods -n kube-system | grep flannel

在这里插入图片描述


或者还可以这样获取更详细pod的运行情况:

#kubectl get pod -o wide -n kube-system

在这里插入图片描述

12.添加工作节点

确保1-9步骤全部完成。
由于之前服务器node1已经配置过代理,需要将master节点的代理取消

#export no_proxy=“localhost,127.0.0.1,localaddress,.localdomain.com ,193.xxx.xx.167”

如果没有配代理,请忽略上面

然后执行master节点kubeadm init完成后得到的join命令:
kubeadm join 192.168.118.128:6443 --token 0ho5p9.o97ocfp4oy3yboos
–discovery-token-ca-cert-hash sha256:9b513f2871c90031380c13aeff6b6dd92a3ec84e467a63322e947405cb440c4f

去master节点执行kubectl get nodes:
在这里插入图片描述

发现已经该节点已经注册上来了,时间比较长大概需要10分钟左右,其status才变成Ready

参考地址:
https://blog.csdn.net/qq_41603102/article/details/91490623
第二条着重参考,比较重要!!
http://www.51niux.com/?id=252

在这里插入图片描述

在这里插入图片描述

kubernetes部署dashboard可视化插件

https://blog.csdn.net/networken/article/details/85607593

kubectl get secret -n kube-system|grep admin

其中 dashboard-admin-token-ltxlw根据上述查询后更改
kubectl describe secret dashboard-admin-token-ltxlw -n kube-system
在这里插入图片描述
k8s全部关机断电后如何启动

所有节点执行:
启动:
systemctl start kubelet.service
systemctl restart kubelet.service
systemctl status kubelet.service

发现没用。于是关闭交换空间

swapoff -a

原因:集群断电重启后自动打开了交换空间,而kubernetes需要关闭交换空间 swapoff -a

kubelet --version
在这里插入图片描述
kubectl version
在这里插入图片描述
kubectl get nodes
在这里插入图片描述
kubectl get pods -n kube-system | grep flannel
在这里插入图片描述
kubectl get pod -o wide -n kube-system
在这里插入图片描述
kubectl get ns
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值