1.環境準備
1.1 節點規劃
序號 | ip | 主機名 | 角色 |
---|---|---|---|
1 | 192.168.0.71 | master.blueicex.com | etcd ansible |
2 | 192.168.0.72 | node1.blueicex.com | work |
3 | 192.168.0.73 | node2.blueicex.com | work |
4 | 192.168.0.77 | resouce.blueicex.com | dns服務器、ntpd服務器 、yum源 、docker registry |
1.2 安裝環境
centos7.4最小安裝
ssh互信
firewalld關閉
selinux disable
ntp時間同步
dns搭建完畢/hosts配置完成
yum源自備
2. 安裝準備
2.1 配置ansible
[root@master ~]# vim /etc/ansible/hosts
[alls]
master.blueicex.com
node1.blueicex.com
node2.blueicex.com
[nodes]
node1.blueicex.com
node2.blueicex.com
[resource]
resource.blueicex.com
2.2 解決由於 iptables 被繞過而導致流量無法正確路由的問題
[root@master ~]# ansible alls -m shell -a "echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.d/k8s.conf"
[root@master ~]# ansible alls -m shell -a "echo net.bridge.bridge-nf-call-iptables = 1 >> /etc/sysctl.d/k8s.conf"
[root@master ~]# ansible alls -m shell -a 'sysctl --system'
2.3 docker 安裝
[root@master ~]# ansible alls -m shell -a 'yum install docker-1.13.1 -y'
2.4 配置docker存儲卷
[root@master ~]# find / -iname container-storage-setup
/usr/bin/container-storage-setup
/usr/share/container-storage-setup
/usr/share/container-storage-setup/container-storage-setup
[root@master ~]# cp /usr/share/container-storage-setup/container-storage-setup /etc/sysconfig/config-docker-storage-setup
[root@master ~]# lsblk | grep sdb
sdb 8:16 0 20G 0 disk
[root@master ~]# vim /etc/sysconfig/config-docker-storage-setup
DEVS=/dev/sdb
VG=dockervg
[root@master ~]# ansible alls -m copy -a 'src=/etc/sysconfig/config-docker-storage-setup dest=/etc/sysconfig/'
2.5 配置docker加速器
[root@resource ~]# vim /mnt/usb/config/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://2savhou3.mirror.aliyuncs.com"],
"insecure-registries":["resource.blueicex.com:5000"]
}
[root@master ~]# ansible alls -m get_url -a "url=http://resource.blueicex.com/config/docker/daemon.json dest=/etc/docker"
2.6 啓動docker
[root@master ~]# ansible alls -m shell -a 'bash docker-storage-setup && systemctl start docker && systemctl enable docker '
[root@master ~]# docker info| grep system
WARNING: You're not using the default seccomp profile
Backing Filesystem: xfs
Cgroup Driver: systemd
3. kubeadm安裝配置集羣
3.1 安裝kubeadm-1.17.0 kubelet-1.17.0 kubectl-1.17.0
[root@master ~]# ansible alls -m shell -a 'yum install kubeadm-1.17.0 kubelet-1.17.0 kubectl-1.17.0 -y'
[root@master ~]# ansible alls -m shell -a 'echo KUBELET_EXTRA_ARGS=--cgroup-driver=systemd > /etc/default/kubelet'
[root@master ~]# ansible alls -m shell -a ' systemctl enable kubelet && systemctl start kubelet '
3.2 初始化集羣
鏡像倉庫準備的鏡像
resource.blueicex.com:5000/google_containers/etcd:3.4.3-0
resource.blueicex.com:5000/google_containers/kube-apiserver:v1.17.0
resource.blueicex.com:5000/google_containers/kube-controller-manager:v1.17.0
resource.blueicex.com:5000/google_containers/kube-proxy:v1.17.0
resource.blueicex.com:5000/google_containers/kube-scheduler:v1.17.0
resource.blueicex.com:5000/coreos/flannel:v0.11.0-amd64
resource.blueicex.com:5000/google_containers/coredns:1.6.5
resource.blueicex.com:5000/google_containers/pause:3.1
[root@master ~]# kubeadm init \
--image-repository resource.blueicex.com:5000/google_containers \
--kubernetes-version v1.17.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=192.168.0.71
.............
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
.............
kubeadm join 192.168.0.71:6443 --token hmktog.g9h8o0j6txhsmjkg \
--discovery-token-ca-cert-hash sha256:9a78ae921c338e1b9473647547018d848ee0e71d40bcadbb3c4e6a3c7c516465
notice:★★★
192.168.0.71:master本機地址
resource.blueicex.com:5000/google_containers:docker倉庫地址
安裝不成功強制reset
[root@master ~]# kubeadm reset -f
刪除節點
kubectl delete node
3.3 配置權限
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
生成環境變量
[root@master ~]# vim /root/.bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf
3.3 node1 node2 節點加入集羣
[root@master ~]# ansible nodes -m shell -a ' kubeadm join 192.168.0.71:6443 --token hmktog.g9h8o0j6txhsmjkg --discovery-token-ca-cert-hash sha256:9a78ae921c338e1b9473647547018d848ee0e71d40bcadbb3c4e6a3c7c516465 '
4. 安裝網絡組建flannel
[root@master ~]# wget http://resource.blueicex.com/config//k8s/k8s-1.17/kube-flannel.yml
[root@master ~]# vim kube-flannel.yml
...........
- name: install-cni
image: resource.blueicex.com:5000/coreos/flannel:v0.11.0-amd64
...........
containers:
- name: kube-flannel
image: resource.blueicex.com:5000/coreos/flannel:v0.11.0-amd64
...........
[root@master ~]# kubectl apply -f kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds-amd64 created
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 61m v1.17.0
node1 Ready <none> 19m v1.17.0
node2 Ready <none> 19m v1.17.0
[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
5. kubectl bash-completion 自動補全
[root@master ~]# kubectl completion -h
...........
Examples:
...........
# Installing bash completion on Linux
## If bash-completion is not installed on Linux, please install the 'bash-completion' package
## via your distribution's package manager.
## Load the kubectl completion code for bash into the current shell
source <(kubectl completion bash)
## Write bash completion code to a file and source if from .bash_profile
kubectl completion bash > ~/.kube/completion.bash.inc
printf "
# Kubectl shell completion
source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
source $HOME/.bash_profile
...........
[root@master ~]# kubectl completion bash > ~/.kube/completion.bash.inc
[root@master ~]# echo source ~/.kube/completion.bash.inc >> /root/.bashrc
————Blueicex 2020/05/31 14:12 [email protected]