k8s安装
1、查看系统信息:lsb_release -a2、系统和软件配置文件更新:yum -y updateyum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp3、安装docker:3.1、安装必要的依赖:sudo yum install -y yum-utils \device-mapper-persiste
1、查看系统信息:lsb_release -a
2、系统和软件配置文件更新:yum -y update
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
3、安装docker:
3.1、安装必要的依赖:sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
3.2、设置docker仓库:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.3、设置要设置一下阿里云镜像加速器:
阿里云镜像仓库控制台地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://n4njvk8h.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
3.4、安装docker: yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
3.5、启动docker:sudo systemctl start docker && sudo systemctl enable docker
4、设置hostname,并且修改hosts文件
4.1、设置master的hostname,并且修改hosts文件
sudo hostnamectl set-hostname master
vi /etc/hosts
121.41.112.165 master
121.4.87.165 salve1
110.42.182.63 salve2
4.2、设置worker01/02的hostname,并且修改hosts文件
sudo hostnamectl set-hostname salve1
sudo hostnamectl set-hostname salve2
vi /etc/hosts
121.41.112.165 master
121.4.87.165 salve1
110.42.182.63 salve2
5、系统基础前提配置
5.1:关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
5.2:关闭selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
5.3:关闭swap
swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
5.5:配置iptables的ACCEPT规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
5.6:设置系统参数:
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
更新配置:sysctl --system
6、配置yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
7、安装kubeadm&kubelet&kubectl
yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0
如果一次性安装失败,可以分步骤安装:
yum install -y kubelet-1.14.0-0
yum install -y kubectl-1.14.0-0
yum install -y kubeadm-1.14.0-0(放最后执行,否则可能导致kubectl有多个版本,最终各种问题出现)
7.1、docker和k8s设置同一个cgroup
vi /etc/docker/daemon.json
"exec-opts": ["native.cgroupdriver=systemd"],
7.2、重启docker
systemctl restart docker
7.3、kubelet,这边如果发现输出directory not exist,也说明是没问题的,大家继续往下进行即可
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
8、查看kubeadm使用的镜像,可以发现这里都是国外的镜像
kubeadm config images list
8.1、解决国外镜像不能访问的问题,创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像
```shell
#!/bin/bash
set -e
KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
8.2:将这些镜像推送到自己的阿里云仓库【可选,根据自己实际的情况】
docker login --username=1320335 registry.cn-beijing.aliyuncs.com
运行脚本 sh ./kubeadm-push-aliyun.sh
set -e
KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-beijing.aliyuncs.com/qimupiao-test
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName
docker push $ALIYUN_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
9:kube init初始化master
9.1:kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=121.41.112.165 --v=6 --ignore-preflight-errors=all
apiserver-advertise-address是计算的外网ip,不过用阿里云或者腾讯云安装可能会出现初始化超时,node "master" not found错误,可以参照解决阿里云ECS下kubeadm部署k8s无法指定公网IP(作废) - LifeOfCoding - 博客园这篇博客解决。
--v参数设置为6可以显示更详细的日志
ignore-preflight-errors可以屏蔽掉k8s对服务器配置的限制
9.2:查看kubelet状态:systemctl status kubelet
若要重新初始化集群状态:kubeadm reset
主节点初始化成功后,注意查看并保存日志信息
查看pod启动情况:kubectl get pods -n kube-system,等待最后五项全部启动成功
健康检查:curl -k https://localhost:6443/healthz
此时因为网络插件未安装,master的状态为NotReady,不用担心,
在master节点安装安装网络插件calico:kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
# 确认一下calico是否安装成功
kubectl get pods --all-namespaces -w
9.3:确认一下calico是否安装成功:kubectl get pods --all-namespaces -w
10:根据主节点安装成功的日志信息,将salve1、salve2加入集群
10.1:根据日志提示将master节点的 /etc/kubernetes/admin.conf文件复制
mkdir -p $HOME/.kube
sudo cp -i admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
10.2在从节点执行,kubeadm join 121.41.112.165:6443 --token 9yea0i.t4cqzz8w2blpq1nm --discovery-token-ca-cert-hash sha256:10b69d6b1d4ff6891b84bcdd902b4251be524a14db7ac22321e7c0268e204ed9
可能会出现的报错1: /proc/sys/net/ipv4/ip_forward contents are not set to 1
执行echo 1 > /proc/sys/net/ipv4/ip_forward
10.2在master节点上检查集群信息,kubectl get nodes
集群安装成功
更多推荐
所有评论(0)