1、环境说明
复制代码
操作系统: Ubuntu 18.04
docker版本: 19.03
k8s版本: 1.18.2
etcd版本: 3.4.3
coredns版本: 1.6.7
flannel版本: v0.13.0
复制代码
2、安装步骤
2.1 设置主机名,配置hosts,关闭swap
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
# cat /etc/hosts
192.168.0.3 k8s-master01
192.168.0.6 k8s-node01
#
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2.2 安装依赖包
# apt 源替换为阿里云的源 参考下面链接:
# https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11fIXBsR
apt-get update -y && apt-get install -y ipvsadm conntrack socat apt-transport-https ca-certificates curl software-properties-common
2.3 设置内核参数
lsmod | grep br_netfilter
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.netfilter.nf_conntrack_max = 2310720
vm.swappiness = 0
vm.overcommit_memory = 1
vm.panic_on_oom = 0
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 1048576
fs.file-max = 52706963
fs.nr_open = 52706963
EOF
sysctl -p /etc/sysctl.d/k8s.conf
2.4 安装 docker,配置docker加速源和一些参数
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get -y update
apt-cache madison docker-ce
apt-get install -y docker-ce=5:19.03.9~3-0~ubuntu-bionic
docker version
mkdir -p /etc/docker/
cat>/etc/docker/daemon.json<<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://fz5yth0r.mirror.aliyuncs.com",
"https://dockerhub.mirrors.nwafu.edu.cn/",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn/",
"https://reg-mirror.qiniu.com",
"http://hub-mirror.c.163.com/",
"https://registry.docker-cn.com"
],
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl restart docker && systemctl enable docker.service
2.5 安装 kubeadm / kubectl / kubelet
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get -y update
apt-cache madison kubeadm
apt-get install -y kubeadm=1.18.2-00 kubelet=1.18.2-00 kubectl=1.18.2-00
systemctl enable kubelet.service
2.6 下载镜像
# cat download_images.sh
#!/bin/bash
aliyun_images=(kube-apiserver-amd64:v1.18.2 kube-controller-manager-amd64:v1.18.2 kube-scheduler-amd64:v1.18.2 kube-proxy-amd64:v1.18.2 pause-amd64:3.2 etcd-amd64:3.4.3-0 coredns:1.6.6)
for image in ${aliyun_images[@]}
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$image
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$image k8s.gcr.io/${image/-amd64/}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$image
done
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
docker pull ninejy/flannel:v0.13.0
docker tag ninejy/flannel:v0.13.0 quay.io/coreos/flannel:v0.13.0
#
bash -x download_images.sh
2.7 初始化主节点
kubeadm config print init-defaults > kubeadm-config.yaml
# 修改并添加一些字段, 最终文件内容如下
###
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.0.3
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8s-master01
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.18.2
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
###
kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
2.8 设置 kubectl 访问 k8s 集群的认证配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.9 加入node节点
1
# 到其他节点上执行步骤 2.7 日志中的 `kubeadm join xxx` 命令即可
2.10 部署网络
# https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
# 下载该文件
kubectl apply -f kube-flannel.yaml
2.11 查看节点和集群状态
kubectl get nodes
kubectl get cs
kubectl cluster-info
kubectl get pod --all-namespaces
至此一个基本的 k8s 环境就算搭建好了