一,前提条件,在创建虚拟机时,需要一个至少2核的处理,但不要过多,容易造成死机,在配置集群时,一个是2核,其余是一核,虽然这样但是还会造成windows系统负载过重
二,配置
- 关闭防火墙:
- $ systemctl stop firewalld
- $ systemctl disable firewa
- 关闭 selinux:
- $ sed -i 's/enforcing/disabled/' /etc/selinux/config # 永
- setenforce 0 # 临时
- 关闭 swap:
- swapoff -a # 临时
- sed -ri 's/.*swap.*/#&/' /etc/fstab
- 修改主机名:
- hostnamectl set-hostname
- 在 master 添加 hosts:
- $ cat >> /etc/hosts << EOF 192.168.31.61 k8s-master 192.168.31.62 k8s-node1 192.168.31.63 k8s-node2 EOF
- 将桥接的 IPv4 流量传递到 iptables 的链:
- $ cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables =1 net.bridge.bridge-nf-call-iptables = 1 EOF
- sysctl --system # 生效
- 时间同步:
- yum install ntpdate -y
- ntpdate time.windows.com
- 所有节点安装 Docker/kubeadm/kubele
- yum install -y wget
- wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
- $ yum -y install docker-ce-18.06.1.ce-3.el7
- systemctl enable docker && systemctl start docker
- docker --version
- 添加阿里云 YUM 软件源
- cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF
- 添加 yum 源
- cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
30,安装 kubeadm,kubelet 和 kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
31,systemctl enable kubelet
32,部署 Kubernetes Mas
33,在master执行
kubeadm init --apiserver-advertise-address=192.168.31.61 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
34,在33执行过后会出现
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
将其在master节点执行
35,在33执行后会出现
kubeadm join 192.168.31.61:6443 --token esce21.q6hetwm8si29qxwn --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5
将其在node节点中执行
若不知道是多少:kubeadm token create --print-join-command
36,在master中安装 Pod 网络插件(CNI)
kubectl apply –f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
37,测试在master节点下,在 Kubernetes 集群中创建一个 pod,验证是否正常运行
kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc
访问地址:http://NodeIP:Port
三,常用的命令
- 导出某个镜像的yaml文件:kubectl create deployment web --image=nginx --try-run -o yaml >web.yaml
- 执行yaml文件生成应用:kubectl apply -f web.yaml
- 查看pod的详细内容:kubectl get pod -o wide
- 应用对外生成端口:kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml >web1.yaml
- 查看pod端口号:kubectl get pods,svc
- 升级nginx应用:kubectl set image deployment web nginx=nginx:1.15
- 查看应用升级是否成功:kubectl rollout status deployment web
- 查看应用的历史版本:kubectl rollout history deployment web
- 降级到上一个版本:kubectl rollout undo deployment web
- 降级到以前的版本:kubectl rollout undo deployment web --to-vision:2(默认是0,回滚到上一个版本)
- 创建副本:kubectl scale deployment web --replaces=12
- 创建/删除yaml文件:kubectl create/apply/delete -f create.yaml
- 进入某个容器中:kubectl exc -it mypod bash
- 创建configMap文件:kubectl create configmap myconfigmap --from-file=redis.proprity
- 查看详细信息:kubectl discrible cm myconfigmap
- 查看日志:kubectl logs mypod
- 查看命名空间:kubectl get ns
- 创建命名空间:kubectl create ns roledemo
- 查看某一个pod的信息:kubectl get pods -n ingress-nginx
- 查看服务的信息:kubectl get svc
- 查看 命名空间在那个节点上:kubectl get pods -n ingress-nginx -o wide
- 查看ingress:kubectl get ing



