关闭swap分区:
Swapoff –a
Setenforce 0
Kubernetes 部署:
###########################kube源##############################
apt-get update && apt-get install -y apt-transport-https
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 update
#############开始安装(每个都必须安装,不能偷懒,源只会自动用最新的依赖,而不是指定版本的依)
apt-get install kubernetes-cni=0.6.0-00
apt-get install -qy --allow-downgrades kubelet=1.11.3-00 kubectl=1.11.3-00 kubeadm=1.11.3-
安装kubectl
apt-cache madison kubectl #列出kubectl的版本
#结果:kubectl | 1.11.3-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
apt-get install -y kubectl=1.11.3-00 (1.11.3-00)
安装kubelet
apt-cache madison kubelet #列出kubelet的版本
结果:kubelet | 1.11.3-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
apt-get install -y kubelet=1.11.3-00 #安装固定版本 (1.11.3-00)
安装kubeadm(其实会自动安装 kubectl , kubelet)
apt-cache madison kubeadm #列出kubeadm的版本
结果:kubeadm | 1.11.3-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
apt-get install -y kubeadm=1.11.3-00 #安装固定版本
#################################docker-ce 源配置#############################
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
####开始安装
apt-cache madison docker-ce #列表版本
结果:docker-ce | 5:18.06.0~3-0~ubuntu-bionic | http://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages
apt-get install -y docker-ce=5:18.06.0~3-0~ubuntu-bionic #安装固定版本
apt-get install -y docker-ce=18.03.1~ce~3-0~ubuntu
apt-mark hold kubelet kubeadm kubectl #设置套件不自动更新
systemctl enable kubelet && systemctl start kubelet
systemctl enable docker && systemctl start docker
1.关闭swap
vi /etc/fstab 与swapoff -a
2.cgroupf 组同步
编辑docker的josn文件,但是不要破坏json结构,有内容的话就不要{}了:/etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
3.启动docker服务并检查状态:
#重启服务:
systemctl restart docker
#查看容器的cgroup是否是systemd
docker info |grep group
#查看docker镜像目录
docker info |grep Root
#重启docker
systemctl restart docker
#.修改hostname.
Hostnamectl set-hostname master
Hostnamectl set-hostname node1
4、创建k8s配置文件
# vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
#使配置文件生效
#modprobe br_netfilter
# sysctl -p /etc/sysctl.d/k8s.conf
##查看最新的k8s版本:kubeadm config images list
##查看指定版本的依赖:kubeadm config images list --kubernetes-version=v1.11.3
5.完成。
开始初始化主节点:
kubeadm init \
--apiserver-advertise-address=0.0.0.0 \ #这个是apiserver ip 主节点电脑上的所有ip
--image-repository registry.aliyuncs.com/google_containers \ #指定源,不然去国外下载,被墙了 (高版本支持,1.11.3不支持)
--kubernetes-version v1.11.3 #指定版本
--service-cidr=10.1.0.0/16 \ #无类别域间路由,这个ip网段与后面初始化pod网络有关。要在同一个网段,否则无效ip
--node-name master #节点名称
--pod-network-cidr=10.244.0.0/16 \#容器网络,不同的ip段,选择不同类型的网络插件。
calico(192.168.0.0) canal(10.244.0.0/16) cilium(10.217.0.0/16) flannel(10.244.0.0/16)
#整理后:
kubeadm init --apiserver-advertise-address=0.0.0.0 \
--kubernetes-version v1.11.3 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--node-name master
#根据提示操作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#主节点配置网络:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/62e44c867a2846fefb68bd5f178daf4da3095ccb/Documentation/kube-flannel.yml
kubectl get pods --all-namespaces
kubectl logs --namespace=kube-system coredns-78fcdf6894-8wlqk
###主节点初始化完成
#计算节点加入命令(--node-name:可以指定节点名称):
kubeadm join 192.168.0.245:6443 --token x7fh85.cp580kpoz6qqwefs \
--discovery-token-ca-cert-hash sha256:7228d2678a3adb6a3c301a03f0638cd2ce169f43d97e6dc361d7809c2afe7180 \
--node-name node2
删除某节点命令:kubectl drain node1 --delete-local-data --force --ignore-daemonsets,然后执行kubectl delete node node1 和kubeadm reset命令,彻底移除某节点。
#注意:计算节点只需要安装完docker,kubeadm,关掉swap,设置好cgroup之后,就可以加入集群了。无需安装各种包。
使用kubeadm reset命令可以删除kubernetes某一个节点