k8s集群安装
一、环境初始化
1、修改主机名称、配置域名解析
yum install vim -y #安装vim命令
netstat -rn #查看网关命令
vi /etc/hostname #修改主机名称(永久生效)
配置静态IP
BOOTPROTO=dhcp
BOOTPROTO值改成static,新增以下内容
BOOTPROTO=static
IPADDR=192.168.31.101
NETMASK=255.255.255.0
GATEWAY=192.168.31.1
DNS1=192.168.31.1
#主机名成解析 编辑三台服务器的/etc/hosts文件,添加下面内容
192.168.31.101 k8s-master
192.168.31.102 k8s-node1
192.168.31.103 k8s-node2
#同步时间
systemctl start chronyd
systemctl enable chronyd
#禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭SELINUX
#编辑 /etc/selinux/config 文件,修改SELINUX的值为disable
注意修改完毕之后需要重启linux服务
SELINUX=disabled
变关闭swap
#编辑分区配置文件/etc/fstab,注释掉swap分区一行
注意修改完毕之后需要重启linux服务
vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap
/dev/mapper/centos-swap swap
修改linux的内核参数
修改linux的内核采纳数,添加网桥过滤和地址转发功能
编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p #立即生效命令
modprobe br_netfilter #加载网桥过滤模块
lsmod | grep br_netfilter#查看网桥过滤模块是否加载成功
配置ipvs功能
yum install ipset ipvsadmin -y
cat < /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe – ip_vs
modprobe – ip_vs_rr
modprobe – ip_vs_wrr
modprobe – ip_vs_sh
modprobe – nf_conntrack_ipv4
EOF
chmod +x /etc/sysconfig/modules/ipvs.modules
/bin/bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
安装docker
yum list docker-ce --showduplicates #查看当前镜像源中支持的docker版本
安装特定版本的docker-ce,必须制定–setopt=obsoletes=0,否则yum会自动安装更高版本
yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
systemctl restart docker
systemctl enable docker
安装Kubernetes组件
安装kubeadm、kubelet和kubectl
yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
配置kubelet的cgroup
#编辑/etc/sysconfig/kubelet, 添加下面的配置
KUBELET_CGROUP_ARGS="–cgroup-driver=systemd"
KUBE_PROXY_MODE=“ipvs”
systemctl enable kubelet #开机自启
集群初始化
初始化之前执行这两个命令
images=(
kube-apiserver:v1.17.4
kube-controller-manager:v1.17.4
kube-scheduler:v1.17.4
kube-proxy:v1.17.4
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in
i
m
a
g
e
s
[
@
]
;
d
o
d
o
c
k
e
r
p
u
l
l
r
e
g
i
s
t
r
y
.
c
n
−
h
a
n
g
z
h
o
u
.
a
l
i
y
u
n
c
s
.
c
o
m
/
g
o
o
g
l
e
c
o
n
t
a
i
n
e
r
s
/
{images[@]};do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/
images[@];dodockerpullregistry.cn−hangzhou.aliyuncs.com/googlecontainers/imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/
i
m
a
g
e
N
a
m
e
k
8
s
.
g
c
r
.
i
o
/
imageName k8s.gcr.io/
imageNamek8s.gcr.io/imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
只在master中执行
kubeadm init
–apiserver-advertise-address=192.168.31.101
–image-repository registry.aliyuncs.com/google_containers
–kubernetes-version=v1.17.4
–service-cidr=10.96.0.0/12
–pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown
(
i
d
−
u
)
:
(id -u):
(id−u):(id -g) $HOME/.kube/config
node中执行
kubeadm join 192.168.31.101:6443 --token cfokn6.qzl9cxxay1d4c32y
–discovery-token-ca-cert-hash sha256:e0c20113959131f8688a4d43f7e32db4e2f167673a34f84933f69a18cec15d8c
安装网络插件
都是ready
部署nginx